갱신 토큰을 생성하는 방법
이 문서에서는 새로 고침 토큰을 생성하는 방법을 알아봅니다. 다음은 OAuth 2.0 인증 코드 부여 흐름을 사용하여 Microsoft ID 플랫폼 엔드포인트에서 새로 고침 토큰을 가져오는 기본 단계입니다.
- Microsoft Entra ID에 앱을 등록합니다.
- 권한 부여를 받습니다.
- 새로 고침 토큰을 가져옵니다.
Microsoft Entra ID를 사용하여 앱 등록
에너지용 Azure Data Manager 플랫폼 엔드포인트를 사용하려면 Azure 앱 등록 포털을 사용하여 앱을 등록해야 합니다. Microsoft 계정이나 회사 또는 학교 계정을 사용하여 앱을 등록할 수 있습니다.
OAuth 2.0 인증 코드 부여 흐름을 사용하도록 앱을 구성하려면 앱을 등록할 때 다음 값을 저장합니다.
{Tenant ID}
대신 사용될Directory (tenant) ID
client_id
대신 사용되는 앱 등록 포털에서 할당한application (client) ID
- 암호 또는 공용/프라이빗 키 쌍(인증서)인
client (application) secret
. 네이티브 앱에는 클라이언트 암호가 필요하지 않습니다. 이 비밀은 나중에{AppReg Secret}
대신 사용됩니다. redirect URI (or reply URL)
앱이 Microsoft Entra ID에서 응답을 받을 수 있는 A입니다. 지정된 리디렉션 URI가 없는 경우 플랫폼을 추가하고 "웹"을 선택한 다음http://localhost:8080
를 추가하고 저장을 선택합니다.
Azure Portal에서 앱을 구성하는 방법에 대한 단계는 앱 등록을 참조하세요.
권한 부여 받기
많은 OIDC(OpenID Connect) 및 OAuth 2.0 흐름에 대한 액세스 토큰을 얻는 첫 번째 단계는 사용자를 Microsoft ID 플랫폼 /authorize
엔드포인트로 리디렉션하는 것입니다. Microsoft Entra ID는 사용자를 로그인하고 앱이 요청하는 권한에 대한 동의를 요청합니다. 권한 부여 코드 부여 흐름에서 동의를 얻은 후 Microsoft Entra ID는 액세스 토큰에 대한 Microsoft ID 플랫폼 /token
엔드포인트에서 사용할 수 있는 앱에 반환 authorization_code
합니다.
권한 부여 요청
인증 코드 흐름은 클라이언트가 사용자를 /authorize
엔드포인트로 보내는 것으로 시작됩니다. 이 단계는 사용자가 작업을 수행하는 흐름의 대화형 부분입니다.
다음은 권한 부여 요청의 예를 보여 줍니다.
https://login.microsoftonline.com/{Tenant ID}/oauth2/v2.0/authorize?client_id={AppReg ID}
&response_type=code
&redirect_uri=http%3a%2f%2flocalhost%3a8080
&response_mode=query
&scope={AppReg ID}%2f.default&state=12345&sso_reload=true
매개 변수 | 필수? | 설명 |
---|---|---|
{Tenant ID} |
필수 | Microsoft Entra 테넌트 이름 |
client_id | 필수 | Azure Portal에서 앱에 할당된 애플리케이션 ID입니다. |
response_type | Required | 응답 유형입니다. 인증 코드 흐름의 경우 code 를 포함해야 합니다. ID 토큰을 응답 형식(예: code+id_token )에 포함하면 받을 수 있으며, 이 경우 범위에 openid 를 포함해야 합니다. |
redirect_uri | 필수 | 앱에서 인증 응답을 보내고 받는 앱의 리디렉션 URI입니다. URL로 인코딩되어야 한다는 점을 제외하고 포털에 등록한 리디렉션 URI 중 하나와 정확히 일치해야 합니다. |
scope | 필수 | 공백으로 구분된 범위 목록입니다. 범위는 openid 사용자에게 로그인하고 ID 토큰 형식으로 사용자에 대한 데이터를 가져올 수 있는 권한을 나타냅니다. 범위는 offline_access 웹 애플리케이션에 대해 선택 사항입니다. 리소스에 대한 확장된 액세스를 위해 애플리케이션에 새로 고침 토큰이 필요했음을 나타냅니다. client-id는 발급된 토큰이 Azure AD B2C 등록 클라이언트에서 사용하기 위한 것임을 나타냅니다. 웹 https://{tenant-name}/{app-id-uri}/{scope} API와 같은 보호된 리소스에 대한 사용 권한을 나타냅니다. |
response_mode | 권장 | 결과 권한 부여 코드를 앱에 다시 보내는 데 사용하는 방법입니다. 또는 .form_post fragment 일 query 수 있습니다. |
state | 권장 | 사용하려는 콘텐츠의 문자열이 될 수 있는 요청에 포함된 값입니다. 일반적으로 교차 사이트 요청 위조 공격을 방지하기 위해 임의로 생성된 고유 값이 사용됩니다. 또한 state(상태)는 인증 요청이 발생하기 전에 앱에서 사용자 상태에 대한 정보를 인코딩하는 데에도 사용됩니다. 예를 들어 사용자가 보고 있던 페이지 또는 실행 중이었던 사용자 흐름입니다. |
권한 부여 응답
응답에서 URL 표시줄에 authorization code
가 표시됩니다.
http://localhost:8080/?code=0.BRoAv4j5cvGGr0...au78f&state=12345&session....
인증에 성공하면 브라우저가 http://localhost:8080/?code={authorization code}&state=...
로 리디렉션됩니다.
참고 항목
브라우저에 사이트에 연결할 수 없다는 오류가 표시될 수 있지만 여전히 URL 표시줄에 인증 코드가 있어야 합니다.
매개 변수 | 설명 |
---|---|
코드 | 앱이 요청한 authorization_code. 앱에서 권한 부여 코드를 사용하여 대상 리소스에 대한 액세스 토큰을 요청할 수 있습니다. authorization_code는 수명이 짧으며, 일반적으로 약 10분 후에 만료됩니다. |
상태 | state 매개 변수가 요청에 포함된 경우 동일한 값이 응답에 표시됩니다. 앱은 요청과 응답의 상태 값이 동일한지 확인해야 합니다. 이 검사는 클라이언트에 대한 CSRF(교차 사이트 요청 위조) 공격을 검색하는 데 도움이 됩니다. |
session_state | 현재 사용자 세션을 식별하는 고유 값입니다. 이 값은 GUID이지만 검사 없이 통과되는 불투명 값으로 처리되어야 합니다. |
code=
와 &state
사이의 코드를 복사합니다.
Warning
Postman에서 URL을 실행하면 토큰 검색을 위한 추가 구성이 필요하므로 작동하지 않습니다.
새로 고침 토큰 가져오기
앱은 이전 단계에서 받은 인증 코드를 사용하여 /token
엔드포인트에 POST 요청을 전송하여 액세스 토큰을 요청합니다.
샘플 요청
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'client_id={AppReg ID}
&scope={AppReg ID}%2f.default openid profile offline_access
&code={authorization code}
&redirect_uri=http%3A%2F%2Flocalhost%3a8080
&grant_type=authorization_code
&client_secret={AppReg Secret}' 'https://login.microsoftonline.com/{Tenant ID}/oauth2/v2.0/token'
매개 변수 | 필수 | 설명 |
---|---|---|
tenant | 필수 | 요청 경로의 {테넌트 ID} 값을 사용하여 애플리케이션에 로그인할 수 있는 사용자를 제어할 수 있습니다. |
client_id | 필수 | 등록 시 앱에 할당된 애플리케이션 ID |
scope | 필수 | 공백으로 구분된 범위 목록입니다. 이 구간에서 앱이 요청하는 범위는 첫 번째(권한 부여) 구간에서 요청한 범위의 하위 집합과 동일하거나 해당 범위여야 합니다. 이 요청에 지정된 범위가 여러 리소스 서버에 걸쳐 있는 경우 v2.0 엔드포인트는 첫 번째 범위에 지정된 리소스에 대한 토큰을 반환합니다. |
코드 | Required | 흐름의 첫 번째 레그에서 획득한 authorization_code. |
redirect_uri | 필수 | authorization_code 획득하는 데 사용된 것과 동일한 redirect_uri 값입니다. |
grant_type | Required | 인증 코드 흐름에 대한 authorization_code여야 합니다. |
client_secret | Required | 앱의 앱 등록 포털에서 만든 클라이언트 암호입니다. 디바이스에 client_secret을 안정적으로 저장할 수 없으므로 네이티브 앱에서는 사용하면 안 됩니다. client_secret을 서버 쪽에 안전하게 저장할 수 있는 웹앱 및 웹 API에 필요합니다. |
샘플 응답
{
"token_type": "Bearer",
"scope": "User.Read profile openid email",
"expires_in": 4557,
"access_token": "eyJ0eXAiOiJKV1QiLCJub25jZSI6IkJuUXdJd0ZFc...",
"refresh_token": "0.ARoAv4j5cvGGr0GRqy180BHbR8lB8cvIWGtHpawGN..."
}
매개 변수 | 설명 |
---|---|
token_type | 토큰 형식 값을 나타냅니다. Microsoft Entra ID가 지원하는 유일한 형식은 Bearer입니다. |
scope | access_token이 유효한 Microsoft Graph 권한의 공백으로 구분된 목록입니다. |
expires_in | 액세스 토큰의 유효 기간(초)입니다. |
access_token | 요청된 액세스 토큰입니다. 앱은 이 토큰을 사용하여 Microsoft Graph를 호출할 수 있습니다. |
refresh_token | OAuth 2.0 새로 고침 토큰입니다. 앱은 현재 액세스 토큰이 만료된 후 이 토큰을 사용하여 추가 액세스 토큰을 가져올 수 있습니다. 새로 고침 토큰은 수명이 길며 장기간 리소스에 대한 액세스를 유지하는 데 사용할 수 있습니다. |
자세한 내용은 갱신 토큰 생성을 참조하세요.
OSDU™는 The Open Group의 상표입니다.
다음 단계
생성된 갱신 토큰을 사용하는 방법에 대해 자세히 알아보려면 아래 섹션을 따릅니다.