Azure ADB2C에서 장치 코드 스트림 구현 샘플 소개

개시하다


2019년 8월 공개된 RFC 8628(OAuth 2.0 Device Authorization Grant), 이른바'Device Flow'(Device Flow)에 대해 설명한다.

장치 코드 흐름은


웹 브라우저가 설치되어 있지 않거나 문자를 입력하기 어려운 장치가 API 클라이언트인 경우
사용자의 승인을 바탕으로 방문 영패를 발행하는 승인 절차입니다.
예컨대 스마트폰에서 NETFTLIX 등에 로그인하려고 할 때, 아이디와 비밀번호 로그인을 요청받을 때는 스마트폰 등 다른 단말기로 대신 로그인할 수 있다.
그림으로 표시하면 다음과 같은 형식이다.

실제로 실시를 해봤어요.


다음은 Azure ADB2C를 연결하여 설치할 수 있는 github의 샘플 소스입니다.
https://github.com/ltwlf/azure-ad-b2c-device-flow
서열도 여기 있습니다.

다음은 장치 클라이언트가 권한 수여 서버에 대한 요청과 응답에 대한 총결산이다.

장치 라이센스 요청

POST /device_authorization
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

client_id=1406020730&scope=example_scope

장치 승인 응답



응답 예
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"device_code": "4e3ac03a-ad18-4f10-973a-535e473245c2", 
"user_code": "487019",
"verification_uri": "http://localhost:7071/api/user_code_get", 
"expires_in": 300
}

토큰 요청



요청 예
POST /token
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

client_id=140612899&grant_type=urn:ietf:params:oauth:grant-type:device_code&device_code=993124a9-e905-43b1-b21e-0845a25228a5

토큰 응답



응답 성공 예

{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IkFVQTV5Uy...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "eyJraWQiOiJiU0NITG1NZGNjMW5fdnlaRXhacjkyakNTTzI3YkdTaX...",
"scope": null
}

응답 authhorizationpending 예
HTTP/1.1 400 Bad Request
Content-Length: 33
Content-Type: application/json; charset=utf-8
Set-Cookie: ARRAffinity=dd716a6def04e48f4e433f7740cecb7f8a4f1c77d318c5480b769fc5157ad936;Path=/;HttpOnly;Domain=service-device-auth-flow.azurewebsites.net
Date: Wed, 30 Sep 2020 12:37:11 GMT

authorization_pending
응답token 예
HTTP/1.1 400 Bad Request
Content-Length: 13
Content-Type: text/plain; charset=utf-8
Set-Cookie: ARRAffinity=dd716a6def04e48f4e433f7740cecb7f8a4f1c77d318c5480b769fc5157ad936;Path=/;HttpOnly;Domain=service-device-auth-flow.azurewebsites.net
Date: Wed, 30 Sep 2020 12:44:33 GMT

expired_token
샘플 원본에 영패를 요청할 때authorizationpending 및 expiredToken 중 하나를 예상 오류 코드로 되돌려줍니다.
authorization_영패 노드는 사용자의 권한 수여/부인 처리가 완료될 때까지expired-로 이 오류를 계속 되돌려줍니다.이름과 같이 Token은 기한이 지났을 때 되돌아오는 오류입니다.
따라서 성공적인 응답이나 authorization을 받아들인다pending 이외의 오류 코드를 받았을 때 클라이언트가 적용한 영패 요청이 종료됩니다.

좋은 웹페이지 즐겨찾기