새로운 ‘ OpenID Connect’ 제공자를 통한 동적 클라이언트 등록
동적 클라이언트 등록을 통해 OIDC(OpenID Connect) 신뢰 당사자(RP)는 OpenID Connect 제공자(OP)에 자체적으로 등록할 수 있습니다.
시작하기 전에
이는 OpenID 의 ‘Connect Dynamic Client Registration’ 1.0 사양을 기반으로 합니다.
테넌트 관리자 또는 테넌트에 대한 관리 액세스 권한이 있는 사용자가 새 OIDC 애플리케이션을 작성합니다. 이제 OIDC 애플리케이션도 동적 클라이언트 등록을 통해 동적으로 생성할 수 있습니다.
동적 클라이언트 등록 엔드포인트는 https://{{tenant}}/oauth2/register에 있습니다.
이 태스크에 대한 정보
동적 클라이언트 등록 설정을 구성한 다음, 등록 API를 사용하여 새로운 OIDC 애플리케이션을 동적으로 등록하십시오. 이 애플리케이션은 ' "OpenID Connect' 또는 ' "OpenID Connect for Open Banking' 애플리케이션 중 하나입니다.
동적 클라이언트 등록 설정
동적 클라이언트 등록 설정을 구성하여 동적 클라이언트 등록의 기본값을 설정할 수 있습니다. “OIDC 동적 클라이언트 등록 설정 구성”을 참조하십시오.
관련 설정은 다음 표에 설명되어 있습니다.
| 필드 | 설명 |
|---|---|
| 권한 부여 유형 | 동적 클라이언트 등록 페이로드에 명시되지 않은 경우 사용할 보조금 유형. 지원되는 인증 방식은 '인증 코드', '암시적 인증', '비밀번호', '갱신 토큰' 및 '클라이언트 자격 증명'입니다. 오픈 뱅킹 레시피가 'None'이 아닌 경우, 'Password' 권한 유형은 허용되지 않습니다. |
| ID 토큰 청구 | 동적 클라이언트 등록 페이로드에 명시되지 않은 경우, ID 토큰 및 사용자 정보에 대한 기본 값이 사용됩니다. |
| 토큰 청구 | 동적 클라이언트 등록 페이로드에 명시되지 않은 경우, 인트로스펙션 및 JWT 액세스 토큰에 대한 기본 클레임입니다. |
| 액세스 토큰 유형 | 생성할 액세스 토큰의 유형. 유효한 값은 'Default'와 'JWT'입니다. |
| ID 토큰 서명 알고리즘 | 동적 클라이언트 등록 페이로드에 명시되지 않은 경우 ID 토큰에 서명하는 데 사용되는 알고리즘. |
| 사용자 승인 | 동적 클라이언트 등록 페이로드에 명시되지 않은 경우 사용자의 동의를 요청할지 여부를 선택합니다. |
| 액세스 토큰 수명 | 액세스 토큰의 유효 기간(초). 최대값은 2147483647, 최소값은 1입니다. |
| 새로 고치기 토큰 수명 | 리프레시 토큰의 유효 기간(초). 최대값은 2147483647, 최소값은 1입니다. |
| PKCE 검증 적용 | 동적 클라이언트 등록 페이로드에 명시되지 않은 경우 PKCE를 적용할지 여부를 선택합니다. |
| 모든 사용자에게 권한 부여 | 동적 클라이언트 등록 페이로드에 명시되지 않은 경우, 모든 사용자가 이 클라이언트를 사용할 권한이 있는지 확인하십시오. |
| 요청 객체의 유효 기간 | 요청 객체의 유효 기간(초 단위). 최대값은 2147483647, 최소값은 1입니다. |
| 요청 오브젝트에 대해 "exp" 필요 | 요청 객체에서 ‘exp’ 속성이 필수인지 여부를 결정합니다. |
| 사용자 정의 클라이언트 신임 정보 허용 | 사용자 지정 클라이언트 자격 증명의 사용을 허용할지 여부를 결정합니다. 'false'로 설정된 경우, 동적 클라이언트 등록 페이로드에서 클라이언트 ID와 시크릿을 지정할 수 없습니다. |
| 허용된 요청 오브젝트 서명 알고리즘 | 서명된 요청 JWT에 허용되는 서명 알고리즘 목록. 설정하지 않으면 지원되는 모든 알고리즘이 허용됩니다. |
| 요청 변환 규칙 | 동적 클라이언트 등록 요청을 수정할 규칙을 입력하십시오. 이 옵션이 설정되지 않은 경우, 동적 클라이언트 등록 요청에는 아무런 변경도 가해지지 않습니다. |
| 오픈 뱅킹 레시피 | 모든 동적 고객 등록에 적용할 오픈 뱅킹 레시피. 이 필드를 '없음'으로 설정하면 ' ''OpenID Connect' 애플리케이션이 생성됩니다. 다른 값으로 설정된 경우, ‘ 'OpenID Connect for Open Banking’ 애플리케이션이 생성됩니다. |
설정의 '소프트웨어 진술', '인증 요청' 및 '등록 액세스 토큰' 섹션에 대해서는 OIDC 동적 클라이언트 등록 설정 구성을 참조하십시오.
동적 클라이언트 등록에 대한 베어러 토큰 인증 필요
동적 클라이언트 등록 시 베어러 토큰 인증을 요구하도록 요청 인증이 구성된 경우, 초기 액세스 토큰이 필요합니다.
Manage OIDC client registration dynamically 인타이틀먼트를 사용하여 API 클라이언트를 작성하십시오. API 클라이언트를 생성하려면 ‘애플리케이션 API 액세스 관리’를 참조하십시오.
API 클라이언트가 작성된 후 액세스 토큰을 가져오려면 client_credentials 플로우를 사용하십시오. 다음 코드는 예제입니다.
curl -ki -v https://{{tenant}}/v1.0/endpoint/default/token -d "grant_type=client_credentials&client_id=<clientId>&client_secret=<clientSecret>"
동적 클라이언트 등록 요청의 경우, 인증 헤더에 베어러 토큰을 포함해야 합니다.
동적 클라이언트 등록에 MTLS 필요
요청 인증이 상호 인증( TLS )을 필요로하도록 구성된 경우, 클라이언트는 해당 요청에 대해 유효한 인증서를 제시해야 합니다.
등록 API를 사용하여 새 애플리케이션을 등록합니다
다음 표는 현재 지원되는 클라이언트 메타데이터 목록을 표시합니다.
| 메타데이터 이름 | 메타데이터 설명 | 선택사항 | 유효값 |
|---|---|---|---|
| client_name | 애플리케이션 이름 | True | 문자열 |
| client_id | 클라이언트 ID가 제공되지 않으면 클라이언트 ID가 자동으로 생성됩니다. | True | 문자열 |
| client_secret | 클라이언트 시크릿은 제공되지 않은 경우 자동으로 생성됩니다. | True | 문자열 |
| redirect_uris | 경로 재지정 URI의 목록. | false | 문자열 URI의 목록 |
| grant_types | 애플리케이션이 사용할 수 있는 권한 부여 유형의 배열. | True | ‘authorization_code’, ‘implicit’, ‘password’, ‘refresh_token’ 및 ‘client_credentials’ |
| id_token_signed_response_alg | 토큰 서명 알고리즘. | True | 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512' |
| all_users_entitled | 모든 사용자가 이 애플리케이션을 사용할 수 있는 권한이 있으면 true로 설정하십시오. | True | true 또는 false |
| jwks_uri | 클라이언트의 JWKS(JSON Web Key Set) 문서의 URL. | True | URL |
| consent_action | 사용자 동의 요청. | True | ‘never_prompt’ 또는 ‘always_prompt’ |
| enforce_pkce | PKCE의 사용을 적용합니다. | True | true 또는 false |
| 범위 | 허용되는 범위 목록을 공백으로 구분한 문자열. | True | 문자열 |
| id_token_claims | id_token 및 사용자 정보에 대한 청구 목록. | True | 문자열 목록 |
| token_claims | 자체 검사 및 JWT 액세스 토큰에 대한 청구 목록. | True | 문자열 목록 |
| initiate_login_uri | 로그인을 시작하는 URL. | True | URL |
| 응답 유형 | 이 클라이언트가 사용하는 응답 유형. | True | 문자열 목록 |
| token_endpoint_auth_method | 토큰 엔드포인트에 대한 클라이언트 인증 메소드입니다. | True | 'default', 'client_secret_basic', 'client_secret_post', 'private_key_jwt', 'tls_client_auth' |
| tls_client_auth_subject_dn | 클라이언트가 상호 TLS 인증에 사용하는 인증서의 예상되는 주체 고유 이름입니다. | True | 문자열 |
| tls_client_auth_san_dns | 클라이언트가 상호 TLS 인증에 사용하는 인증서 내의 예상 DNS 이름 SAN 항목. | True | 문자열 |
| tls_client_auth_san_uri | 클라이언트가 상호 TLS 인증에 사용하는 인증서 내의 예상 URI SAN 항목. | True | 문자열 |
| tls_client_auth_san_ip | 클라이언트가 상호 TLS 인증에 사용하는 인증서 내의 예상 IP 주소 SAN 항목. | True | 문자열 |
| tls_client_auth_san_email | 클라이언트가 상호 TLS 인증에 사용하는 인증서 내의 예상 이메일 주소 SAN 항목. | True | 문자열 |
| tls_client_certificate_bound_access_tokens | 액세스 토큰에 대한 인증 바인딩이 필요한지 여부를 표시합니다. | True | true 또는 false |
| userinfo_signed_response_alg | 사용자 정보 응답 JWT 서명 알고리즘. | True | 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512' |
| userinfo_encrypted_response_alg | 사용자 정보 응답 JWT 암호화 알고리즘. | True | 'RSA-OAEP', ' RSA-OAEP-256 ' |
| userinfo_encrypted_response_enc | 사용자 정보 응답 JWT 암호화 콘텐츠 알고리즘. | True | 'A128GCM', 'A192GCM', 'A256GCM' |
새 애플리케이션을 등록하는 예제
다음 코드는 동적 클라이언트 등록이 베어러 토큰 인증을 요구하도록 구성된 경우의 요청 예시입니다.
curl -ki -H "Authorization: bearer <access-token>" -H "Content-Type:application/json" -X POST https://{{tenant}}/oauth2/register --data-binary '{"redirect_uris":["https://www.redirect.com"],"client_name":"MyApplication"}'
응답
{
"grant_types": [
"authorization_code"
],
"client_secret_expires_at": "0",
"registration_client_uri": "https://{{tenant}}/oauth2/register/<clientId>",
"client_secret": "<client_secret>",
"redirect_uris": [
"https://www.redirect.com"
],
"client_id_issued_at": "1586933118",
"client_name": "MyApplication",
"registration_access_token": "<access_token>",
"client_id": "<clientId>",
"id_token_signed_response_alg": "RS256"
}
애플리케이션의 추가 구성
애플리케이션이 생성된 후에는 속성 매핑, 액세스 정책, ID 소스, 권한이 부여된 사용자 등 애플리케이션에 대한 추가 옵션을 구성할 수 있습니다. 이 옵션을 구성하려면 ‘ OpenID Connect 애플리케이션에서 싱글 사인온 구성’ 또는 ‘ OpenID Connect for Open Banking 애플리케이션에서 싱글 사인온 구성’을 참조하십시오.
등록 API를 사용하여 OIDC 애플리케이션을 업데이트합니다
다음 코드는 이전 단계에서 생성한 토큰을 registration_access_token 인증 베어러 토큰으로 사용하여 클라이언트를 수정하기 위해 PUT 요청을 보내는 예시입니다. OIDC 애플리케이션 구성에 적용된 변경 사항은 덮어쓰게 되므로 유의하시기 바랍니다.
curl -ki -H "Authorization: bearer <registration_access_token>" -H "Content-Type:application/json" -X PUT https://{{tenant}}/oauth2/register/<client-id> --data-binary '{"redirect_uris":["https://www.redirect.com/callback"],"client_name":"MyApplication2"}'
등록 API를 사용하여 OIDC 애플리케이션 읽기
등록 API는 다시 OIDC 애플리케이션을 읽는 방법도 제공합니다.
curl -ki -H "Authorization: bearer <registration-access-token>" https://{{tenant}}/oauth2/register/<clientId>
등록 API를 사용하여 OIDC 애플리케이션 삭제하기
등록 API는 OIDC 애플리케이션을 삭제하는 방법도 제공합니다.
curl -ki -H "Authorization: bearer <registration-access-token>" -X DELETE https://{{tenant}}/oauth2/register/<clientId>
등록 액세스 토큰이 만기됨
등록된 액세스 토큰의 유효 기간이 만료되면, 등록된 클라이언트의 클라이언트 ID와 시크릿을 사용하여 새로운 액세스 토큰을 획득하십시오. “초기 액세스 토큰 획득”을 참조하십시오.