
![[8.5.5.4 이상]](../ng_v8554.gif)
OpenID Connect를 위한 권한 부여 엔드포인트 호출
OpenID Connect에서 권한 부여 엔드포인트는 사용자의 인증 및 권한 부여를 처리합니다.
시작하기 전에
이 태스크 정보
권한 부여 엔드포인트는 OAuth 2.0 및 OpenID Connect 1.0 스펙 둘 다에 의해 정의된 매개변수를 포함하는 인증 요청을 승인합니다.
권한 부여 코드 플로우에서 권한 부여 엔드포인트는 인증 및 권한 부여에 사용되며 클라이언트에게 권한 부여를 리턴합니다. 이 권한 부여는 그런 다음 ID 토큰, 액세스 토큰 및 새로 고치기 토큰을 교환할 때 클라이언트의 요청 내에서 토큰 엔드포인트로 전달될 수 있습니다. 암시 플로우에서, 권한 부여 엔드포인트는 여전히 인증 및 권한 부여를 수행하지만 또한 응답에서 ID 토큰 및 액세스 토큰을 클라이언트에 직접 리턴합니다. 토큰 엔드포인트에서는 상호작용이 전혀 수행되지 않습니다.
OpenID Connect가 사용되는 Liberty 프로파일에는 다음 URL에 있는 OpenID Connect 권한 부여 엔드포인트에 대한 액세스 권한이 있습니다.
https://server.example.com:443/oidc/endpoint/<provider_name>/authorize
프로시저
결과
OpenID Connect Provider는 클라이언트로부터 요청을 수신하면 사용자를 인증하고 권한 부여하려고 시도합니다.
권한 부여 코드 플로우에서, 인증 및 권한 부여가 성공하면 OpenID Connect Provider는 권한 부여 코드를 발행하여 클라이언트에게 보내는 OAuth 2.0 권한 부여 응답에 매개변수로 포함시킵니다. 초기 요청에 state가 포함된 경우, 권한 부여 응답에는 초기 요청에 포함된 정확한 state 값도 포함됩니다. application/x-www-form-urlencoded 형식을 사용하여 code 및 state 매개변수가 권한 부여 요청에서 지정된 redirect_uri 값에 조회 매개변수로 추가됩니다.
암시 플로우에서 인증 및 권한 부여가 성공하면 권한 부여 엔드포인트에서 다음 매개변수가 리턴됩니다.
- access_token: 액세스 토큰. 초기 요청의 [response_type] 값이 [id_token]이 아닌 경우 리턴됩니다.
- token_type: OAuth 2.0 토큰 유형. OpenID Connect의 경우 이 값은 Bearer입니다.
- id_token: ID 토큰.
- state: 권한 부여 요청에 포함된 경우 필수입니다.
- expires_in: (선택사항) 응답이 생성된 후 액세스 토큰의 만기 시간(초)입니다.
이러한 매개변수는 권한 부여 코드 플로우에서처럼 조회 매개변수로 추가되는 것이 아니라 권한 부여 요청에서 지정된 redirect_uri 값의 단편 컴포넌트에 추가됩니다.
예
권한 부여 코드 플로우에 대한 예제 요청은 다음과 같습니다.
GET /authorize?
response_type=code
&scope=openid profile email
&client_id=client01
&state=af0ifjsldkj
&redirect_uri=https://server.example.com:443/oidcclient/redirect/client01 HTTP/1.1
암시 플로우에 대한 예제 요청은 다음과 같습니다.
GET /authorize?
response_type=id_token token
&scope=openid profile
&client_id=client01
&state=af0ifjsldkj
&redirect_uri=https://server.example.com:443/oidcclient/redirect/client01
&nonce=n-0S6_WzA2Mj HTTP/1.1
권한 부여 코드 플로우에서 권한 부여 엔드포인트로부터의 예제 응답은 다음과 같습니다.
HTTP/1.1 302 Found
Location: https://server.example.com:443/oidcclient/redirect/client01
code=SplxlOBeZQQYbYS6WxSbIA
&state=af0ifjsldkj
암시 플로우에서 권한 부여 엔드포인트로부터의 예제 응답은 다음과 같습니다.
HTTP/1.1 302 Found
Location: https://server.example.com:443/oidcclient/redirect/client01
access_token=SlAV32hkKG
&token_type=Bearer
&id_token=eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso
&expires_in=3600
&state=af0ifjsldkj