이 페이지는 Django-OAuth-Toolkit에서 사용되는 Grant Type 에 따른 토큰 발급 방법에 대해 서술하고 있습니다.
Implicit Grant
Implicit Grant라고 하며, Javascript 등을 이용해 클라이언트 브라우저등에서만 모든 처리가 이루어지는 요청에 활용할 수 있습니다.
애플리케이션 등록
- client_type: public
- grant_type: implicit
리다이렉트
등록된 애플리케이션 정보를 이용하여 리다이렉트 시킨다.
요청변수 |
값 |
설명 |
client_id |
string(필수) |
애플리케이션 등록시 발급한 client ID |
redirect_uri |
string(필수) |
등록한 redirect_uri |
response_type |
string(필수): "token" 이라고 입력 |
Implicit Grant 인증을 위함 |
3. 예제 URI
redirect_uri로 AccessToken을 발급 받음
Authorization Code Grant
애플리케이션 등록
- client_type: confidential
- grant_type: Authorization code
리다이렉트
등록된 애플리케이션 정보를 이용하여 리다이렉트 시킨다.
요청변수 | 값 | 설명 |
client_id | string(필수) | 애플리케이션 등록시 발급한 client ID |
redirect_uri | string(필수) | 등록한 redirect_uri |
response_type | string(필수): "code" 이라고 입력 | Authorization code 인증을 위함 |
3. 예제 URI
https://test.com/o/authorize/?client_id=LXRbsg0rqX4IxknssK5DBzKkvaMyGXQbmG1QRcOl&redirect_uri=https://test.com&response_type=code
redirect_uri로 AccessToken을 발급 받음
예
https://test.com/?code=U8zC1rxqaZ0wWg8YWAA9Io6hVJThI9#/
인증 허가 및 Access Token 발급 요청
content-type이 application/x-www-form-urlencoded인 HTTP POST 요청을 합니다.
1. URI: {servie_uri}/o/token/
2. Parameters
요청변수 | 값 | 설명 |
client_id | string(필수) | 애플리케이션 등록시 발급한 client ID |
client_secret | string(필수) | 등록시 발급한 client secret |
redirect_uri | string(필수) | 등록한 redirect_uri |
code | string(필수) | 1번 단계에서 발급 받은 authorization code |
grant_type | string(필수) | "authorization_code" 입력 |
3. Access Token 발급
{
"token_type": "Bearer",
"expires_in": 259200,
"access_token": "Up1KNM0DzKehqTnAeunTa2Ps5lD627",
"refresh_token": "MVm1aFbwfe6XmnDA4gu8So9uNhz3eU",
"scope": "groups read write"
}
* 주의사항
: 1단계에서 발급 받은 code가 만료 됐을 경우 Access Token을 발급받을 때 "invalid_grant" error가 발생할 수 있습니다.
Resource owner password credentials
web과 native device 애플리케이션 에서 모두 신뢰할 수 있는 1st client일 경우에 사용된다.
애플리케이션 등록
- client_type: confidential
- grant_type: Resource owner password-based
Access Token 발급 요청
content-type이 application/x-www-form-urlencoded인 HTTP POST 요청을 합니다.
1. URI: {servie_uri}/o/token/
2. Parameters
요청변수 | 값 | 설명 |
client_id | string(필수) | 애플리케이션 등록시 발급한 client ID |
client_secret | string(필수) | 등록시 발급한 client secret |
grant_type | string(필수) | "password" 입력 |
username | string(필수) | 애플리케이션 소유 계정 username |
password | string(필수) | 애플리케이션 소유 계정 password |
3. Access Token 발급
{
"refresh_token": "v4poTbTkkdAhRxe3zRSaf3ZvUOhMD9",
"expires_in": 259200,
"access_token": "tK0YduHEURdqqaKY47ir8t8Pe3O2pM",
"scope": "groups read write",
"token_type": "Bearer"
}
Client credentials
client credentials grant 는 OAuth2.0 grants 중에서 가장 간단하며, 데이터에 접근하기 위한 사용자의 권한이 구체적이지 않아도 될 때 사용된다.
애플리케이션 등록
- client_type: public
- grant_type: Client credentials
Access Token 발급 요청
content-type이 application/x-www-form-urlencoded인 HTTP POST 요청을 합니다.
1. URI: {servie_uri}/o/token/
2. Parameters
요청변수 | 값 | 설명 |
client_id | string(필수) | 애플리케이션 등록시 발급한 client ID |
client_secret | string(필수) | 등록시 발급한 client secret |
grant_type | string(필수) | "client_credentials" 입력 |
3. Access Token 발급
{
"token_type": "Bearer",
"expires_in": 259200,
"access_token": "gSyy9ixqTzj6076vNUuCZQ86Y8yZUb",
"scope": "groups read write"
}
댓글