승인 요청에 대한 OpenID Connect 요청 맵핑

OAuth 및 Open ID Connect 권한 부여 플로우는 권한을 요청하는 승인 프롬프트를 사용자에게 제공할 수 있습니다.

권한 부여 플로우는 다음 조치를 수행하기 위해 권한을 요청할 수 있습니다.
  • 사용자 프로파일 (예: 이메일 주소) 에서 데이터를 공유합니다. 이 요청에는 데이터가 공유되는 용도를 표시하는 정보가 선택적으로 보충될 수 있습니다.
  • 사용자를 대신하여 조치를 수행하십시오(예: 추운 날에 사용자의 차량 및 열을 시작하거나 지불을 시작하는 경우).
일반적으로 애플리케이션은 매개변수 scope 형태로 해당 작업을 요청합니다. 하지만 경우에 따라 요청 내용을 수정해야 할 수도 있습니다. 예를 들면 다음과 같습니다.
  • 사용자 라이선스 계약에 대한 사용자 권한 상태를 항상 확인하십시오.
  • 사용자의 인증 세션을 기반으로 특정 scope 값을 필터링하십시오.
  • 데이터가 요청되는 이유를 표시하는 컨텍스트를 더 추가하십시오. 데이터가 scope 내에 인코딩되었는지(예: email_for_billing) 또는 다른 요청 매개변수(예: authorization_details)의 일부로 사용 가능한지 여부를 나타냅니다.

이 유형의 수정은 승인 요청 매개변수의 사용자 정의 규칙을 사용하여 달성할 수 있습니다. r_attr_functions.html 을 참조하십시오. 이 규칙은 단순한 단일 행 표현식 언어를 사용하거나 고급 다중 행 YAML 기반 문서로 작성할 수 있습니다. 다중 행 규칙 실행 프로그램을 참조하십시오.

사용 가능한 입력 오브젝트

이 사용자 정의 규칙은 인증 후에 실행되지만 권한 부여 이전에 사용 가능한 정보는 가능한 모든 도메인 오브젝트를 포함하지 않습니다. 이는 다음 유형으로 제한됩니다.

HTTP 요청 컨텍스트
사용자가 Verify에 로그인하면 요청 맵핑 규칙에서 수신 HTTP 요청 컨텍스트에 액세스할 수 있습니다. 모든 OAuth 요청 매개변수(예: claimsscope)는 이 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 도메인 오브젝트는 문자열 키 및 문자열 배열 값이 있는 맵으로 사용 가능합니다. 예를 들면 다음과 같습니다.
{
  "realmName": ["cloudIdentityRealm"],
  "displayName": ["Jessica J. Hill"],
  "phone": ["+12324321234"]
}
자세한 내용은 r_attr_functions.html 을 참조하십시오.
기타 함수 및 연산자

맵핑 규칙에서 표준 연산자 및 함수를 사용할 수 있습니다. 또한 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.