승인 요청에 대한 OpenID Connect 요청 맵핑
OAuth 및 Open ID Connect 권한 부여 플로우는 권한을 요청하는 승인 프롬프트를 사용자에게 제공할 수 있습니다.
- 사용자 프로파일 (예: 이메일 주소) 에서 데이터를 공유합니다. 이 요청에는 데이터가 공유되는 용도를 표시하는 정보가 선택적으로 보충될 수 있습니다.
- 사용자를 대신하여 조치를 수행하십시오(예: 추운 날에 사용자의 차량 및 열을 시작하거나 지불을 시작하는 경우).
scope 형태로 해당 작업을 요청합니다. 하지만 경우에 따라 요청 내용을 수정해야 할 수도 있습니다. 예를 들면 다음과 같습니다.- 사용자 라이선스 계약에 대한 사용자 권한 상태를 항상 확인하십시오.
- 사용자의 인증 세션을 기반으로 특정
scope값을 필터링하십시오. - 데이터가 요청되는 이유를 표시하는 컨텍스트를 더 추가하십시오. 데이터가
scope내에 인코딩되었는지(예:email_for_billing) 또는 다른 요청 매개변수(예:authorization_details)의 일부로 사용 가능한지 여부를 나타냅니다.
이 유형의 수정은 승인 요청 매개변수의 사용자 정의 규칙을 사용하여 달성할 수 있습니다. r_attr_functions.html 을 참조하십시오. 이 규칙은 단순한 단일 행 표현식 언어를 사용하거나 고급 다중 행 YAML 기반 문서로 작성할 수 있습니다. 다중 행 규칙 실행 프로그램을 참조하십시오.
사용 가능한 입력 오브젝트
이 사용자 정의 규칙은 인증 후에 실행되지만 권한 부여 이전에 사용 가능한 정보는 가능한 모든 도메인 오브젝트를 포함하지 않습니다. 이는 다음 유형으로 제한됩니다.
- HTTP 요청 컨텍스트
- 사용자가 Verify에 로그인하면 요청 맵핑 규칙에서 수신 HTTP 요청 컨텍스트에 액세스할 수 있습니다. 모든 OAuth 요청 매개변수(예:
claims및scope)는 이requestContext에서 사용 가능합니다. 의requestContext일반적인 구조와 사용법은 r_attr_functions.html 의 “ HTTP 요청 컨텍스트” 섹션에 설명되어 있습니다.액세스를 단순화하기 위해 특정 값은requestContext에서 미리 계산됩니다. 요청 매개변수는claims다음 예시와 같이 JSON 형식으로 표현됩니다.{ "id_token": { "claim_name": { "essential": false, "value": "some_value" } }, "userinfo": { "claim_name": { "essential": false, "value": "some_value" } } }이 JSON은 액세스하기가 번거로울 수 있으므로
requestContext에서 사용되는 키의 형식은claims_claimType_claimName입니다.claimType은(는)userinfo또는idtoken입니다. 누락된 밑줄을 참고하십시오. 따라서 이전 예를 사용하여claim_name값은requestContext.getValue('claims_idtoken_claim_name')값을 사용하여 얻을 수 있습니다.마찬가지로,
scope이(가) 계산되고 공백으로 분할되어 문자열 배열을 빌드합니다. - ID 소스 인증 정보
사용자가 Verify에 로그인하면 ID 소스 신임 정보 속성이 로그인 세션에 추가되고 요청 맵핑 규칙에서 액세스할 수 있습니다.
idsuser도메인 오브젝트는 문자열 키 및 문자열 배열 값이 있는 맵으로 사용 가능합니다. 예를 들면 다음과 같습니다.
자세한 내용은 r_attr_functions.html 을 참조하십시오.{ "realmName": ["cloudIdentityRealm"], "displayName": ["Jessica J. Hill"], "phone": ["+12324321234"] }- 기타 함수 및 연산자
맵핑 규칙에서 표준 연산자 및 함수를 사용할 수 있습니다. 또한 HTTP 클라이언트를 사용하여 아웃바운드 요청을 할 수 있습니다. 지원되는 기타 기능에는 해싱 및 시간소인이 포함됩니다. 『 r_attr_functions.html 』의 관련 부분을 참조하십시오.
리턴 오브젝트
사용자 정의 규칙은 문자열 또는 오브젝트를 포함하는 배열을 리턴할 것으로 예상됩니다. 문자열은 범위이며, 오브젝트는 추가 정보를 사용하여 범위를 개인용으로 연관시키는 범위입니다. 자, /tasks/t_manage_purposes.html 을 확인해 보세요.
marketing사용자가 첫 번째 요청 객체에 동의하면, 의 email 속성에 대한 동의가 생성됩니다. 또한 personal:email 범위가 부여되고 personal_email_allowed 청구가 ID 토큰에 추가됩니다.
[
{
"purpose": "marketing",
"attribute": "email",
"accessType": "read",
"value": "jhill@ibm.com",
"custom": {
"type": "personal"
},
"claims": {
"personal_email_allowed": true
},
"scope": "personal:email"
},
{
"purpose": "defaultEULA"
},
"profile",
"email"
] + requestContext.scope여기에 있는 목록은 요청된 범위를 완전히 바꾸고 동의 페이지를 빌드하는 데 사용됩니다. ‘ OpenID ’ 페이지에 대한 싱글 사인온(SSO) 설정 변경’을 참조하세요. 사용자에게 더 많은 동의를 요청하려는 경우 범위 예제 추가 및 제거에 표시된 대로 requestScope.scope을(를) 추가해야 합니다.
예제에서 배열은 두 가지 유형의 OAuth 범위를 문자열로 사용할 수 있으며 오브젝트는 더 많은 컨텍스트를 가지고 있으며 더 정교한 승인 권한 부여 레코드를 얻을 수 있습니다. 이러한 특성은 오브젝트에서 허용되는 특성입니다.
| 특성 | 유형 | 필수인지 여부 | 설명 |
|---|---|---|---|
purpose |
문자열 | 예 | ../tasks/t_manage_purposes.html |
attribute |
문자열 | 목적에 따라 다릅니다. | 속성 관리 |
accessType |
문자열 | 목적에 따라 다릅니다. | 액세스 유형은 데이터 개인정보 보호 용도로 구성됩니다. 제공되지 않는 경우 기본값은 default 입니다. |
value |
문자열 | 아니오 | 보다 구체적인 동의 요청을 표시합니다. 예를 들어, 특정 이메일에 대한 동의를 얻을 수 있습니다. |
custom |
JSON 오브젝트. JSON 특성 값 유형은 문자열입니다. | 아니오 | 동의에 추가할 추가 컨텍스트 정보입니다. 이 속성은 템플릿 매크로 형태로 동의 페이지에 표시될 수 있습니다. |
claim |
JSON 오브젝트. JSON 특성 값 유형은 문자열입니다. | 아니오 | 요청에 권한이 부여된 경우, 발행된 ID 토큰에 해당되는 청구가 추가됩니다. |
scope |
문자열 | 아니오 | 요청이 승인되면 이 값이 권한 부여된 범위에 추가됩니다. |
required |
부울 | 아니오 | 이 값이 true로 설정된 경우 required , 사용자는 동의해야 합니다. 개인정보 처리방침에 동의가 절대 허용되지 않는다는 내용이 명시된 경우에는 이러한 동의가 필요하지 않습니다. |
autoGrant |
부울 | 아니오 | 이 autoGrant 값이 true로 설정되면 사용자에게 동의 요청이 표시되지 않으며, 해당 동의 항목은 자동으로 승인됩니다. |
global |
부울 | 아니오 | 이 global 값이 true로 설정되면, 기록된 동의는 모든 애플리케이션에 걸쳐 적용됩니다. 이 속성은 사용자가 한 번만 수락하는 이용 약관 문서와 같은 동의 항목에 적용됩니다. |
audience |
문자열 | 아니오 | 요청이 승인되면, 이 값은 애플리케이션에 구성된 대상 목록 및 기본 클라이언트 ID와 함께 승인된 대상에 추가됩니다. |
- 범위 추가 및 제거 예제
- 이 예제에서는 새 승인 요청 오브젝트가 추가되고 범위가 제거됩니다.
[ { "purpose": "defaultEula", "scope": "eula:default" } ] + requestContext.scope.filter(x, x != "badscope")
이 규칙은 권한에 대한 eula:default 범위를 부여하고 이를 EULA 동의와 연관시킵니다. 또한 요청된 범위에서 badscope 을(를) 필터링합니다.
이 맵핑 규칙을 통해 추가된 동의 요청의 세부사항을 표시하도록 승인 페이지를 사용자 정의할 수 있습니다. 예시는 OpenID 에서 확인할 수 있습니다. Connect 요청 매핑 Open Banking 인텐트 ID.