BARON-SSO 로그인 스테이징>실서버 교체 클라이언트ID 변경에 따른 수정
This commit is contained in:
@@ -38,7 +38,8 @@ Headless 환경에서 사용자의 정보 제공 동의 화면 없이, RP 서버
|
||||
1. `devfront`에 접속하여 **연동 앱 > 연동 앱 추가**를 클릭합니다.
|
||||
2. **Name**: `asset-management-system` (또는 자산관리 시스템의 이름을 입력)
|
||||
3. **Redirect URIs**: 자산관리 시스템의 콜백 경로를 입력합니다.
|
||||
- 예: `http://[자산관리_시스템_IP_또는_도메인]:[포트]/callback`
|
||||
- 운영 예시: `https://[자산관리_시스템_도메인]/callback`
|
||||
- 내부망 테스트 예시: `http://[자산관리_시스템_IP_또는_도메인]:[포트]/callback`
|
||||
- **주의**: 실제 자산관리 시스템에서 요청하는 Redirect URI와 여기서 등록한 값이 **완전히 일치**해야 인증 거부 에러가 발생하지 않습니다.
|
||||
4. **Scopes**: `openid`, `profile`, `email`을 선택합니다.
|
||||
5. **Type**: 반드시 `pkce`를 선택합니다.
|
||||
@@ -47,8 +48,10 @@ Headless 환경에서 사용자의 정보 제공 동의 화면 없이, RP 서버
|
||||
|
||||
1. `pkce` 하단의 **"Headless Login (자체 로그인 UI 사용)"** 토글을 활성화합니다.
|
||||
2. **JWKS URI**: **Baron SSO 서버에서 접근 가능한** 자산관리 시스템의 공개키 주소를 입력합니다.
|
||||
- 예: `http://[자산관리_시스템_IP_또는_도메인]:[포트]/.well-known/jwks.json`
|
||||
- **주의**: Baron SSO 서버에서 자산관리 시스템의 포트로 네트워크가 열려있어야 합니다.
|
||||
- 운영 예시: `https://[자산관리_시스템_도메인]/.well-known/jwks.json`
|
||||
- 내부망 테스트 예시: `http://[자산관리_시스템_IP_또는_도메인]:[포트]/.well-known/jwks.json`
|
||||
- **주의**: Baron SSO 서버에서 자산관리 시스템의 포트 또는 HTTPS 도메인으로 네트워크가 열려있어야 합니다.
|
||||
- **주의**: `JWKS URI`는 로그인 페이지나 사내 인증 게이트로 리다이렉트되면 안 됩니다. Baron SSO가 호출했을 때 이 경로는 반드시 `200 OK`와 `application/json`을 직접 반환해야 합니다.
|
||||
|
||||
### 3.3. Step 3: 저장 및 확인 (JWKS 캐시 검증)
|
||||
|
||||
@@ -99,13 +102,13 @@ PORT=3000 # 예시
|
||||
|
||||
# OIDC IdP 설정 (Baron SSO 서버 주소)
|
||||
CLIENT_ID=... # devfront에서 발급받은 클라이언트 ID
|
||||
ISSUER=http://[BARON_SSO_IP_또는_도메인]/oidc
|
||||
ISSUER=https://[BARON_SSO_IP_또는_도메인]/oidc
|
||||
|
||||
# 리다이렉트 및 보안 설정
|
||||
# REDIRECT_URI는 DevFront에 등록한 Redirect URIs 중 하나와 정확히 일치해야 합니다.
|
||||
REDIRECT_URI=http://[자산관리_시스템_IP_또는_도메인]:[포트]/callback
|
||||
REDIRECT_URI=https://[자산관리_시스템_도메인]/callback
|
||||
# JWKS_URI는 Baron SSO 서버가 자산관리 시스템으로 접속할 때 사용하는 주소와 일치해야 합니다.
|
||||
JWKS_URI=http://[자산관리_시스템_IP_또는_도메인]:[포트]/.well-known/jwks.json
|
||||
JWKS_URI=https://[자산관리_시스템_도메인]/.well-known/jwks.json
|
||||
|
||||
# tenant 제한 시 이동시킬 userfront 에러 경로
|
||||
ERROR_LOCALE_PATH=/ko/error
|
||||
@@ -115,8 +118,10 @@ ERROR_LOCALE_PATH=/ko/error
|
||||
|
||||
## 6. 주의 사항 (네트워크 구성)
|
||||
|
||||
- **서버 간 통신 (Server-to-Server)**: Headless 로그인은 Baron SSO 서버가 직접 자산관리 시스템의 `JWKS_URI`에 접속하여 서명을 검증합니다. 따라서 IdP 서버에서 자산관리 시스템의 포트로의 인바운드 통신이 허용되어야 합니다. 방화벽 및 네트워크 설정을 확인하십시오.
|
||||
- **Redirect URI 일치**: 브라우저를 통해 접속할 주소가 IP라면, Redirect URI와 JWKS URI 모두 IP 기반 주소로 통일하는 것이 문제 발생 소지를 줄이는 가장 좋은 방법입니다. 도메인을 사용한다면 일관되게 도메인으로 설정해야 합니다.
|
||||
- **서버 간 통신 (Server-to-Server)**: Headless 로그인은 Baron SSO 서버가 직접 자산관리 시스템의 `JWKS_URI`에 접속하여 서명을 검증합니다. 따라서 IdP 서버에서 자산관리 시스템의 포트 또는 HTTPS 도메인으로의 인바운드 통신이 허용되어야 합니다. 방화벽 및 네트워크 설정을 확인하십시오.
|
||||
- **운영 환경 HTTPS 권장**: 스테이징이나 내부망 테스트에서는 IP:포트 기반 HTTP가 통할 수 있지만, 운영에서는 Baron SSO가 접근 가능한 HTTPS 도메인을 사용하는 것이 안전합니다.
|
||||
- **JWKS 직접 응답 필수**: `/.well-known/jwks.json`은 사내 인증 포털이나 다른 로그인 페이지로 `302` 리다이렉트되면 안 됩니다. `curl -I https://[도메인]/.well-known/jwks.json` 결과가 `200`이어야 하며, Baron SSO가 읽을 수 있는 JWKS JSON 문서를 직접 반환해야 합니다.
|
||||
- **Redirect URI 일치**: 브라우저를 통해 접속할 주소가 IP라면, Redirect URI와 JWKS URI 모두 IP 기반 주소로 통일하는 것이 문제 발생 소지를 줄이는 가장 좋은 방법입니다. 도메인을 사용한다면 Redirect URI와 JWKS URI를 모두 같은 HTTPS 도메인 기준으로 일관되게 설정해야 합니다.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ Headless RP는 일반 OIDC 클라이언트와 설정 방식이 다릅니다. 특
|
||||
1. `devfront` 접속 후 **연동 앱 > 연동 앱 추가**를 클릭합니다.
|
||||
2. **Name**: `headless-login` (또는 자유롭게 입력)
|
||||
3. **Redirect URIs**: 데모 앱에 접속할 주소의 콜백 경로를 입력합니다.
|
||||
- **운영/공개 환경**: `https://[앱_도메인]/callback`
|
||||
- **통합 환경 (IdP와 RP가 같은 서버일 때)**: `http://localhost:3000/callback`
|
||||
- **분리 환경 (IdP는 원격 서버, RP는 내 PC일 때)**: `http://[내_PC_IP]:3000/callback`
|
||||
- _주의: 실제 앱에서 요청하는 Redirect URI와 여기서 등록한 값이 **완전히 일치**해야 인증 거부 에러가 발생하지 않습니다._
|
||||
@@ -25,9 +26,11 @@ Headless RP는 일반 OIDC 클라이언트와 설정 방식이 다릅니다. 특
|
||||
|
||||
1. `pkce` 하단의 **"Headless Login (자체 로그인 UI 사용)"** 토글을 활성화합니다.
|
||||
2. **JWKS URI**: **Baron SSO 서버에서 접근 가능한** 데모 앱의 공개키 주소를 입력합니다.
|
||||
- **운영/공개 환경**: `https://[앱_도메인]/.well-known/jwks.json`
|
||||
- **통합 환경 (IdP와 RP가 같은 서버일 때)**: `http://localhost:3000/.well-known/jwks.json`
|
||||
- **분리 환경 (IdP는 원격 서버, RP는 내 PC일 때)**: `http://[내_PC_IP]:3000/.well-known/jwks.json`
|
||||
- _주의: Baron SSO 서버(`172.16.10.175`)에서 사용자님의 로컬 PC 포트로 네트워크가 열려있어야 합니다._
|
||||
- _주의: Baron SSO 서버에서 사용자님의 로컬 PC 포트 또는 운영 HTTPS 도메인으로 네트워크가 열려있어야 합니다._
|
||||
- _주의: `/.well-known/jwks.json`은 로그인 페이지나 사내 인증 포털로 리다이렉트되면 안 되며, 반드시 `200 OK`로 JWKS JSON을 직접 반환해야 합니다._
|
||||
|
||||

|
||||
|
||||
@@ -50,13 +53,13 @@ PORT=3000
|
||||
|
||||
# OIDC IdP 설정 (원격 서버 주소 입력)
|
||||
CLIENT_ID=a9b64539-7242-4aa5-ad3d-13c7f1ef00f2
|
||||
ISSUER=http://172.16.10.175/oidc
|
||||
ISSUER=https://sso.hmac.kr/oidc
|
||||
|
||||
# 리다이렉트 및 보안 설정
|
||||
# REDIRECT_URI는 DevFront에 등록한 Redirect URIs 중 하나와 정확히 일치해야 합니다.
|
||||
REDIRECT_URI=http://[내_PC_IP]:3000/callback
|
||||
REDIRECT_URI=https://[앱_도메인]/callback
|
||||
# JWKS_URI는 Baron SSO 서버가 내 PC로 접속할 때 사용하는 주소와 일치해야 합니다.
|
||||
JWKS_URI=http://[내_PC_IP]:3000/.well-known/jwks.json
|
||||
JWKS_URI=https://[앱_도메인]/.well-known/jwks.json
|
||||
|
||||
# tenant 제한 시 이동시킬 userfront 에러 경로
|
||||
ERROR_LOCALE_PATH=/ko/error
|
||||
@@ -66,8 +69,10 @@ ERROR_LOCALE_PATH=/ko/error
|
||||
|
||||
## 3. 주의 사항 (네트워크 구성)
|
||||
|
||||
- **서버 간 통신 (Server-to-Server)**: Headless 로그인은 Baron SSO 서버가 직접 데모 앱의 `JWKS_URI`에 접속하여 서명을 검증합니다. 따라서 IdP 서버에서 내 로컬 PC의 포트(`3000`)로의 인바운드 통신이 허용되어야 합니다.
|
||||
- **Redirect URI 일치**: 브라우저를 통해 접속할 주소가 IP라면, Redirect URI와 JWKS URI 모두 IP 기반 주소로 통일하는 것이 문제 발생 소지를 줄이는 가장 좋은 방법입니다.
|
||||
- **서버 간 통신 (Server-to-Server)**: Headless 로그인은 Baron SSO 서버가 직접 데모 앱의 `JWKS_URI`에 접속하여 서명을 검증합니다. 따라서 IdP 서버에서 로컬 PC의 포트 또는 운영 HTTPS 도메인으로의 인바운드 통신이 허용되어야 합니다.
|
||||
- **운영 환경 HTTPS 권장**: 운영 Baron 앱은 내부망 HTTP보다 Baron SSO가 접근 가능한 HTTPS 도메인을 사용하는 편이 안정적입니다.
|
||||
- **JWKS 직접 응답 필수**: `https://[앱_도메인]/.well-known/jwks.json`은 `302` 없이 `200 application/json`으로 직접 응답해야 합니다.
|
||||
- **Redirect URI 일치**: 브라우저를 통해 접속할 주소가 IP라면, Redirect URI와 JWKS URI 모두 IP 기반 주소로 통일하는 것이 문제 발생 소지를 줄이는 가장 좋은 방법입니다. 도메인을 쓴다면 둘 다 같은 HTTPS 도메인으로 맞추십시오.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -257,6 +257,11 @@ const beginAuthorizationFlow = async () => {
|
||||
const authRedirectUrl = new URL(location, authUrl.toString());
|
||||
const loginChallenge = authRedirectUrl.searchParams.get('login_challenge');
|
||||
if (!loginChallenge) {
|
||||
const authError = authRedirectUrl.searchParams.get('error');
|
||||
const authErrorDescription = authRedirectUrl.searchParams.get('error_description');
|
||||
if (authError || authErrorDescription) {
|
||||
throw new Error(authErrorDescription || authError || 'Authorization redirect did not provide login_challenge');
|
||||
}
|
||||
throw new Error('login_challenge not found');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user