4.2. 토큰 추가
OAuth 애플리케이션 세부 정보 페이지에서 토큰 탭을 선택하여 애플리케이션에 액세스할 토큰이 있는 사용자 목록을 볼 수 있습니다.
자신의 사용자에 대해서만 OAuth 2 토큰을 생성할 수 있습니다. 즉, 사용자 프로필의 토큰만 구성하거나 볼 수 있습니다.
인증 토큰을 구성하면 토큰이 연결된 애플리케이션과 토큰이 있는 액세스 수준을 선택할 수 있습니다.
프로세스
-
탐색 패널에서
를 선택합니다. - 사용자 프로필의 사용자 이름을 선택하여 OAuth 2 토큰을 구성합니다.
토큰 탭을 선택합니다.
토큰이 없으면 토큰 화면에 토큰 을 추가하라는 메시지가 표시됩니다.
- 토큰 생성 창을 엽니다. 을 클릭하여
다음 세부 정보를 입력합니다.
- 애플리케이션
토큰을 연결할 애플리케이션의 이름을 입력합니다. 또는 이름 목록에서 이름으로 필터링합니다.
를 클릭하여 검색할 수 있습니다. 그러면 별도의 창이 열리고 사용 가능한 옵션 중에서 선택할 수 있습니다. 목록이 긴 경우참고애플리케이션에 연결되지 않은 개인 액세스 토큰(PAT)을 생성하려면 애플리케이션 필드를 비워 둡니다.
- 설명
- (선택 사항) 토큰에 대한 간단한 설명을 제공합니다.
- 범위
(필수) 이 토큰에 포함할 액세스 수준을 지정합니다. OAuth 2 토큰의 범위는 다음 중 하나로 설정할 수 있습니다.
- write: 이 토큰과 함께 전송된 요청이 시스템에서 리소스를 추가, 편집 및 삭제할 수 있도록 허용합니다.
- read : 읽기 전용 작업을 제한합니다. 쓰기 범위에는 읽기 범위가 포함됩니다.
토큰 및 토큰 새로 고침 정보 및 토큰 만료일과 함께 토큰 정보가 표시됩니다. 토큰과 새로 고침 토큰이 표시되는 유일한 시간입니다. 목록 보기에서 토큰 연결 및 토큰 정보를 볼 수 있습니다.
- 복사 아이콘을 클릭하고 나중에 사용할 수 있도록 토큰 및 새로 고침 토큰을 저장합니다.
검증
애플리케이션 세부 정보 페이지의 토큰 탭을 사용하여 애플리케이션에 적절한 토큰이 있는 사용자를 표시할 수 있습니다.
-
탐색 패널에서
를 선택합니다. - 애플리케이션 목록 보기에서 확인할 애플리케이션을 선택합니다.
토큰 탭을 선택합니다.
선택한 애플리케이션과 연결된 토큰 목록에 토큰이 표시되어야 합니다.
추가 리소스
시스템 관리자이고 다른 사용자의 토큰을 생성하거나 제거해야 하는 경우 토큰 및 세션 관리에서 취소 및 생성 명령을 참조하십시오.
4.2.1. 애플리케이션 토큰 기능
/o/
끝점의 토큰에 대한 토큰과 관련된 새로 고침
및 취소
기능은 현재 애플리케이션 토큰을 통해서만 수행할 수 있습니다.
4.2.1.1. 기존 액세스 토큰 새로 고침
다음 예제에서는 새로 고침 토큰이 제공된 기존 액세스 토큰을 보여 줍니다.
{ "id": 35, "type": "access_token", ... "user": 1, "token": "omMFLk7UKpB36WN2Qma9H3gbwEBSOc", "refresh_token": "AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z", "application": 6, "expires": "2017-12-06T03:46:17.087022Z", "scope": "read write" }
{
"id": 35,
"type": "access_token",
...
"user": 1,
"token": "omMFLk7UKpB36WN2Qma9H3gbwEBSOc",
"refresh_token": "AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z",
"application": 6,
"expires": "2017-12-06T03:46:17.087022Z",
"scope": "read write"
}
/o/token/
끝점은 액세스 토큰을 새로 고치는 데 사용됩니다.
curl -X POST \ -d "grant_type=refresh_token&refresh_token=AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z" \ -u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \ http://<gateway>/o/token/ -i
curl -X POST \
-d "grant_type=refresh_token&refresh_token=AL0NK9TTpv0qp54dGbC4VUZtsZ9r8z" \
-u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \
http://<gateway>/o/token/ -i
여기서 refresh_token
은 이전 액세스 토큰의 refresh_token
필드에 제공됩니다.
인증 정보는 < client_id>:<client_secret
> 입니다. 여기서 client_id
및 client_secret
은 액세스 토큰의 기본 관련 애플리케이션의 해당 필드입니다.
특수 OAuth 2 끝점은 x-www-form-urlencoded
Content-type 만 사용하므로 /o/*
끝점은 application/json
을 허용하지 않습니다.
성공 시 범위 정보와 동일한 새 액세스 토큰을 포함하는 응답이 JSON 형식으로 표시됩니다.
HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Tue, 05 Dec 2017 17:54:06 GMT Content-Type: application/json Content-Length: 169 Connection: keep-alive Content-Language: en Vary: Accept-Language, Cookie Pragma: no-cache Cache-Control: no-store Strict-Transport-Security: max-age=15768000 {"access_token": "NDInWxGJI4iZgqpsreujjbvzCfJqgR", "token_type": "Bearer", "expires_in": 315360000000, "refresh_token": "DqOrmz8bx3srlHkZNKmDpqA86bnQkT", "scope": "read write"}
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Tue, 05 Dec 2017 17:54:06 GMT
Content-Type: application/json
Content-Length: 169
Connection: keep-alive
Content-Language: en
Vary: Accept-Language, Cookie
Pragma: no-cache
Cache-Control: no-store
Strict-Transport-Security: max-age=15768000
{"access_token": "NDInWxGJI4iZgqpsreujjbvzCfJqgR", "token_type": "Bearer", "expires_in": 315360000000, "refresh_token": "DqOrmz8bx3srlHkZNKmDpqA86bnQkT", "scope": "read write"}
새로 고침 작업은 기존 토큰을 삭제한 다음 원래 토큰과 동일한 범위 및 관련 애플리케이션으로 즉시 새 토큰을 생성하여 기존 토큰을 교체합니다.
새 토큰이 있고 이전 토큰이 api/gateway/v1/tokens/
엔드포인트에서 삭제되었는지 확인합니다.
4.2.1.2. 액세스 토큰 취소
플랫폼 UI에서 토큰을 삭제하거나 /o/revoke-token/
끝점을 사용하여 액세스 토큰을 취소할 수 있습니다.
이 방법으로 액세스 토큰을 취소하는 것은 토큰 리소스 오브젝트를 삭제하는 것과 동일하지만 토큰 값과 연결된 client_id
(및 애플리케이션이 기밀
인 경우 client_secret
)를 제공하여 토큰을 삭제할 수 있습니다. 예를 들면 다음과 같습니다.
curl -X POST -d "token=rQONsve372fQwuc2pn76k3IHDCYpi7" \ -u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \ http://<gateway>/o/revoke_token/ -i
curl -X POST -d "token=rQONsve372fQwuc2pn76k3IHDCYpi7" \
-u "gwSPoasWSdNkMDtBN3Hu2WYQpPWCO9SwUEsKK22l:fI6ZpfocHYBGfm1tP92r0yIgCyfRdDQt0Tos9L8a4fNsJjQQMwp9569eIaUBsaVDgt2eiwOGe0bg5m5vCSstClZmtdy359RVx2rQK5YlIWyPlrolpt2LEpVeKXWaiybo" \
http://<gateway>/o/revoke_token/ -i
-
특수 OAuth 2 끝점은
x-www-form-urlencoded
Content-type 만 사용하므로/o/*
끝점은application/json
을 허용하지 않습니다. -
외부 사용자가 Oauth2 토큰을 생성할 수 있도록 허용 (API에서
ALLOW_OAUTH2_FOR_EXTERNAL_USERS
) 설정은 기본적으로 비활성화되어 있습니다. 외부 사용자는 LDAP와 같은 서비스 또는 기타 SSO 서비스를 사용하여 외부에서 인증된 사용자를 나타냅니다. 이 설정을 사용하면 외부 사용자가 고유한 토큰을 생성할 수 없습니다. 설정을 활성화했다가 비활성화하는 경우 외부 사용자가 그동안 생성한 토큰은 모두 유지되며 자동으로 취소되지 않습니다. 이 설정은메뉴에서 구성할 수 있습니다.
또는 OAuth2 토큰을 취소하려면 manage
유틸리티를 사용할 수 있습니다. Revoke oauth2 토큰을 참조하십시오.
성공 시 200 OK
응답이 표시됩니다. 토큰이 api/gateway/v1/tokens/
엔드포인트에 있는지 확인하여 삭제를 확인합니다.
4.2.2. 토큰 및 세션 관리
Ansible Automation Platform은 OAuth2 토큰 관리를 위해 다음 명령을 지원합니다.
4.2.2.1. create_oauth2_token
다음 명령을 사용하여 OAuth2 토큰을 생성합니다( example_user
의 사용자 이름 지정).
aap-gateway-manage create_oauth2_token --user example_user
$ aap-gateway-manage create_oauth2_token --user example_user
New OAuth2 token for example_user: j89ia8OO79te6IAZ97L7E8bMgXCON2
토큰을 생성할 때 유효한 사용자를 제공해야 합니다. 그렇지 않으면 사용자를 지정하지 않거나 존재하지 않는 사용자 이름을 제공하지 않고 명령을 실행하려고 시도한 오류 메시지가 표시됩니다.
4.2.2.2. revoke_oauth2_tokens
이 명령을 사용하여 애플리케이션 토큰과 PAT(개인 액세스 토큰) 둘 다 OAuth2 토큰을 취소합니다. 애플리케이션 토큰(관련 새로 고침 토큰이 아님)을 모두 취소하고 개인 액세스 토큰을 모두 취소합니다. 그러나 모든 토큰을 취소할 사용자를 지정할 수도 있습니다.
기존 OAuth2 토큰을 모두 취소하려면 다음 명령을 사용합니다.
aap-gateway-manage revoke_oauth2_tokens
$ aap-gateway-manage revoke_oauth2_tokens
모든 OAuth2 토큰과 새로 고침 토큰을 취소하려면 다음 명령을 사용합니다.
aap-gateway-manage revoke_oauth2_tokens --revoke_refresh
$ aap-gateway-manage revoke_oauth2_tokens --revoke_refresh
id=example_user
를 사용하여 사용자의 모든 OAuth2 토큰을 취소하려면( example_user
의 사용자 이름 지정).
aap-gateway-manage revoke_oauth2_tokens --user example_user
$ aap-gateway-manage revoke_oauth2_tokens --user example_user
id=example_user
:인 사용자의 모든 OAuth2 토큰을 취소하고 토큰을 새로 고침하려면 다음을 수행합니다.
aap-gateway-manage revoke_oauth2_tokens --user example_user --revoke_refresh
$ aap-gateway-manage revoke_oauth2_tokens --user example_user --revoke_refresh
4.2.2.3. cleartokens
이미 취소된 토큰을 지우려면 이 명령을 사용합니다.
자세한 내용은 Django의 Oauth Toolkit 설명서에서 cleartokens 를 참조하십시오.
4.2.2.4. 명확한 세션
만료된 모든 세션을 삭제하려면 이 명령을 사용합니다.
자세한 내용은 Django의 Oauth Toolkit 설명서에서 세션 저장소 지우기 를 참조하십시오.
UI의 OAuth2 토큰 관리에 대한 자세한 내용은 애플리케이션을 참조하십시오.