범위
IETF RFC 6749에 따라 범위 매개변수 값은 공백으로 구분되고 대소문자를 구분하는 문자열의 목록으로 표시됩니다.
- OAuth 제공자는 최소한 하나의 적용 범위를 가져야 합니다.
- 프로바이더에 기본 범위가 구성되지 않았거나, 권한 부여 요청에 하나 이상의 사전 정의된 범위가 포함되지 않은 경우, OAuth 토큰은 부여되지 않습니다.
- 기본 범위가 정의되어 있지 않고 요청에 범위가 포함되어 있지 않으면 요청에 대해 올바르지 않은 범위 오류가 리턴됩니다.
OAuth 제공자
OAuth 의 범위 처리를 보다 정교하게 지원하기 위해, ‘Authentication’ URL 사용자 레지스트리 확장 기능이 범위 값을 수정할 수 있도록 허용합니다.
OAuth 제공자를 정의할 때, ‘고급 범위 확인’ 확장 기능을 통해 허용된 범위를 확인하고 재정의할 수 있는 유연성을 제공합니다. 선택적 확장은 애플리케이션 범위 확인 및 소유자 범위 확인입니다.
애플리케이션이 수신하는 범위는 다음 세 단락에서 설명하는 상호작용으로 판별됩니다. 범위 값을 대체하기 위한 세 번의 기회가 제공되며 범위 처리는 다음 목록에서 항목 1, 2, 3의 시퀀스를 따릅니다. 그림 1은 프로세스의 개요를 제공합니다.
- 애플리케이션 인증이 성공적으로 완료된 후, 구성되어 있는 경우, 추가 검증을 수행하기 API Connect 위해 호출을 수행하고, 해당 호출의 결과를 사용하여
x-selected-scope애플리케이션이 처음 요청한 범위 값을 재정의합니다. 애플리케이션 범위 확인이 사용으로 설정되면 HTTP 응답 헤더x-selected-scope가 있어야 하며 그렇지 않으면 호출이 실패합니다. - 인증 URL 사용하여 애플리케이션 사용자를 인증하도록 구성된 경우, API Connect 인증 URL 사용자 레지스트리 에 문서화된 대로 호출을 수행합니다. 응답 코드가 다음과 같은 경우HTTP
200응답 헤더
x-selected-scope가 있으면x-selected-scope에 구성된 값이 새 범위 값으로 사용되어, 애플리케이션이 이미 요청한 내용과 1항에 설명된 애플리케이션 범위 검사에서 제공된 내용을 모두 대체합니다. 응답 헤더에서x-selected-scope는 선택적 요소입니다. - 사용자가 인증에 성공하고, 활성화되어 있고 유효한 URL 로 구성된 경우, API Connect 콘텐츠를 허용하도록 호출합니다.
x-selected-scope범위 값을 구체화하기 위해. 소유자 범위 확인이 사용으로 설정되면 HTTP 응답 헤더x-selected-scope가 있어야 하며 그렇지 않으면 호출이 실패합니다.그림 1. OAuth 고급 범위 개요 
액세스 토큰에 의해 부여되는 최종 범위 권한은 항목 1, 2및 3에 설명된 플로우의 결과입니다. 그림 2 는 x-selected-scope 가 새 범위 값을 제공할 때 표시되는 예제와 함께 트랜잭션 플로우의 자세한 보기를 보여줍니다.

이용자 API 적용
GET 요청을 전송해야 합니다. 요청에 범위가 포함되지 않은 경우 사용할 기본 범위를 지정해야 합니다. 기본 범위가 정의되어 있지 않고 요청에 범위가 포함되어 있지 않으면 요청에 대해 올바르지 않은 범위 오류가 리턴됩니다.GET /getaccount
HTTP/1.1
Host: server.example.com
X-IBM-Client-Id: 8888-8888-8888
Authorization: Bearer AAEkNjVkOWIyYjgtOWY5ZS00YWQwLWIyYzktZsecure-banking.yaml
securityDefinitions:
scope-only:
type: oauth2
description: ''
flow: implicit
authorizationUrl: ''
scopes:
checking: 'Checking Account'
saving: 'Saving Account'
mutual: 'Mutual Fund Account'
security:
- scope-only:
- checking
- scope-only:
- saving
- mutual
AAEkNjVkOWIyYjgtOWY5ZS00YWQwLWIyYzktZ 는 다음과 같이 secure-banking.yaml 에 정의된 scope-only 의 조합 또는 하나를 포함하므로 API에 액세스할 수 있습니다.checkingsaving mutualchecking saving mutual
관리자는 다음 예시와 같이 소비자 API 속성 고급 범위 확인 URL 을 x-scopeValidate 으로 구성하여 추가 범위 확인을 사용하도록 설정할 수 있습니다 OpenAPI 파일 예시.
securityDefinitions:
advanced-scope-only:
type: oauth2
description: ''
flow: implicit
authorizationUrl: ''
scopes:
checking: 'Checking Account'
saving: 'Saving Account'
mutual: 'Mutual Fund Account'
x-scopeValidate:
url: 'https://advanced-scope-check.bk.com/validate-scope'
tls-profile: 'ssl-client'
가 범위 요구사항에 대해
액세스 토큰을 확인하면, 는
x-scopeValidate 엔드포인트에 대한 HTTP POST 요청을 다음 예제와 유사하게
작성합니다. 응답 코드HTTP 200엔드포인트에서 성공을 표시합니다. 기타 응답 코드 또는 연결 오류는
토큰에 대해 권한 오류로 처리됩니다.
POST /validate-scope?app-name=..&appid=..&org=..&orgid=..&catalog=..&catalogid=..&transid=..
HTTP/1.1
Host: advanced-scope-check.bk.com
Content-Type: application/json
{"context-root" : checking,
"resource" : accountinfo,
"method" : GET,
"api-scope-required" : [jointaccount],
"access_token" : {"client_id" : "2cd71759-1003-4a1e-becb-0474d73455f3",
"not_after" : 174364070,
"not_after_text" : "2017-07-11T02:27:50Z",
"not_before" : 174360470,
"not_before_text" : "2017-07-11T01:27:50Z",
"grant_type" : "code",
"consented_on" : 1499736470,
"consented_on_text" : "2059-07-11T01:27:50Z",
"resource_owner" : "cn=spoon,email=spoon@poon.com",
"scope" : "jointaccount mutual",
"miscinfo" : "[r:gateway]"
}
}
HTTP/1.1 200 OK
Cache-Control: no-store
Pragma: no-cache
X-Custom-For-Assemble-Process: audit"x-"로 시작하는 HTTP 응답 헤더는 컨텍스트 변수
oauth.advanced-consent로 유지됩니다. 예제 성공 응답을 기반으로 X-Custom-For-Assemble-Process: audit 는 다음과 같습니다.oauth.advanced-consent.x-custom-for-assemble-process, 어셈블 단계에서 액세스할 수 있습니다.
유효성 검증을 위해 선택적으로 추가 필드를 사용할 수 있습니다.
- 요청 헤더
- 정규식을 정의하여 요청 헤더에 일치시키십시오. 일치하는 헤더는 고급 범위 유효성 검증 엔드포인트에 대한 요청에 포함됩니다.
- 응답 컨텍스트 변수
정규식을 정의하여 응답 헤더에 일치시키십시오. 일치하는 헤더는
oauth.advanced-consent.*형식으로 컨텍스트 변수로 저장됩니다.