다음을 통해 공유


MSAL을 사용하여 사용자에 대한 Microsoft Entra ID 토큰 가져오기

Important

이 문서에서는 MSAL(Microsoft 인증 라이브러리)을 사용하여 Microsoft Entra ID 토큰을 수동으로 만드는 방법을 설명합니다.

Databricks는 Azure Databricks 사용자에 대한 Microsoft Entra ID 토큰을 수동으로 만드는 것을 권장하지 않습니다. 이는 각 Microsoft Entra ID 토큰이 수명이 짧고 일반적으로 1시간 이내에 만료하기 때문입니다. 이 시간 후에는 대체 Microsoft Entra ID 토큰을 수동으로 생성해야 합니다. 대신 Databricks 클라이언트 통합 인증 표준을 구현하는 참여 도구 또는 SDK 중 하나를 사용합니다. 이러한 도구 및 SDK는 Azure CLI 인증을 활용하여 만료된 Microsoft Entra ID 토큰을 자동으로 생성하고 대체합니다.

Azure Databricks 관리 서비스 주체는 Azure Databricks 내에서 직접 관리됩니다. Microsoft Entra ID 관리 서비스 주체는 추가 권한이 필요한 Microsoft Entra ID에서 관리됩니다. Databricks는 대부분의 사용 사례에 Azure Databricks 관리 서비스 주체를 사용하는 것이 좋습니다. 그러나 Databricks는 Azure Databricks 및 기타 Azure 리소스를 동시에 인증해야 하는 경우 Microsoft Entra ID 관리 서비스 주체를 사용하는 것이 좋습니다.

Microsoft Entra ID 관리 서비스 주체 대신 Azure Databricks 관리 서비스 주체를 만들려면 서비스 주체 관리를 참조 하세요.

MSAL(Microsoft 인증 라이브러리)을 사용하여 프로그래밍 방식으로 Microsoft Entra ID 액세스 토큰을 획득할 수 있습니다. 이 문서에서는 Python 예제를 사용하여 MSAL 라이브러리의 기본 사용 및 필수 사용자 입력에 대해 설명합니다.

참고 항목

MSAL은 Microsoft Entra ID 인증 라이브러리(ADAL)를 대체합니다. 보안 수정을 포함하여 ADAL에 대한 모든 Microsoft 지원과 개발은 2022년 6월 30일에 종료됩니다. MSAL(Microsoft 인증 라이브러리)로 애플리케이션 마이그레이션을 참조하세요.

Azure CLI를 사용하는 데 더 적은 단계가 포함되므로 MSAL 대신 Azure CLI를 사용하여 사용자에 대한 Microsoft Entra ID 토큰을 가져오려고 할 수 있습니다. Azure CLI를 사용하여 사용자에 대한 Microsoft Entra ID 토큰 가져오기를 참조하세요.

Microsoft Entra ID에서 서비스 주체를 정의하고 사용자가 아닌 서비스 주체에 대한 Microsoft Entra ID 액세스 토큰을 가져올 수도 있습니다. 서비스 주체에 대한 Microsoft Entra ID 토큰 가져오기를 참조 하세요.

Azure Portal에서의 경고 구성

Azure Portal에서 Microsoft Entra ID 엔드포인트에 애플리케이션을 등록합니다. 또는 이미 등록된 Microsoft Entra ID 앱을 사용할 수 있습니다. 자세한 내용은 Azure Portal을 사용하여 앱 등록을 참조하세요.

  1. Azure Portal에 로그인합니다.

    참고 항목

    사용할 포털은 Microsoft Entra ID 애플리케이션이 Azure 퍼블릭 클라우드에서 실행되는지 또는 국가 또는 소버린 클라우드에서 실행되는지에 따라 다릅니다. 자세한 내용은 국가별 클라우드를 참조하세요.

  2. 여러 테넌트, 구독 또는 디렉터리에 액세스할 수 있는 경우 상단 메뉴에서 디렉터리 + 구독(필터가 있는 디렉터리) 아이콘을 클릭하여 애플리케이션을 등록할 디렉터리로 전환합니다.

  3. Microsoft Entra ID를 검색하여 선택합니다.

  4. 관리 내에서 앱 등록 > 새 등록을 선택합니다.

  5. 이름에 애플리케이션의 이름을 입력합니다.

  6. 지원되는 계정 유형 섹션에서 이 조직 디렉터리의 계정만(단일 테넌트)을 선택합니다.

  7. 리디렉션 URI(선택 사항) 섹션에서 플랫폼 선택에 대해 공용 클라이언트/네이티브(모바일 및 데스크톱)를 선택하고 리디렉션 URI를 입력합니다. 다음 예제에서 리디렉션 URI 값은 http://localhost입니다.

    앱 등록

  8. 등록을 클릭합니다.

  9. 애플리케이션 페이지의 개요 페이지에서 Essentials 섹션의 다음 값을 복사합니다.

    • 애플리케이션(클라이언트) ID
    • 디렉터리(테넌트) ID
    • 리디렉션 URI에서 이 절차의 앞부분에서 입력한 퍼블릭 클라이언트 리디렉션 URI입니다.

    Azure 등록된 앱 개요

  10. 등록된 애플리케이션의 필수 권한에 AzureDatabricks를 추가합니다. 이 단계를 수행하려면 관리자 사용자여야 합니다. 이 작업을 수행하는 동안 사용 권한 관련 문제가 발생하는 경우 관리자에게 도움을 요청하세요.

    1. 애플리케이션 페이지의 개요 페이지에서 시작 탭의 API 권한 보기를 클릭합니다.

      Azure 등록된 앱 설정

    2. 권한 추가를 클릭합니다.

      앱에 필수 권한 추가

    3. API 사용 권한 요청 창에서 내 조직에서 사용하는 API 탭을 선택하고, AzureDatabricks를 검색한 다음, 선택합니다.

      AzureDatabricks API 권한 추가

    4. user_impersonation 확인란을 사용하도록 설정한 다음 권한 추가를 클릭합니다.

      Azure 앱 위임된 권한

    5. ###에 대한 관리자 동의 허용을 클릭한 다음 를 클릭합니다. 이 작업을 수행하려면 관리자 사용자이거나 애플리케이션에 동의를 부여할 권한이 있어야 합니다. ###에 대한 관리자 동의 허용가 표시되지 않거나 이 작업을 건너뛰는 경우 애플리케이션을 처음 사용하여 동의할 때 권한 부여 코드 흐름(대화형)을 사용해야 합니다. 그런 다음 사용자 이름 암호 흐름(프로그래밍 방식) 메서드를 사용할 수 있습니다.

      앱 권한에 추가 사용자 및 그룹 추가

애플리케이션에 사용자를 추가할 수 있습니다. 자세한 내용은 Azure Portal 지침에 대한 엔터프라이즈 애플리케이션 에 사용자 계정 할당 또는 PowerShell 지침에 대한 Microsoft Entra ID(이전의 Azure Active Directory) 의 애플리케이션에 사용자 및 그룹 할당을 참조하세요. 사용자는 필요한 권한 없이 토큰을 가져올 수 없습니다.

Microsoft Entra ID 액세스 토큰 가져오기

Microsoft Entra ID 액세스 토큰을 가져오려면 다음 중 하나를 사용할 수 있습니다.

다음과 같은 경우 권한 부여 코드 흐름(대화형)을 사용하여 Microsoft Entra ID 액세스 토큰을 가져와야 합니다.

  • Microsoft Entra ID에서 2단계 인증을 사용할 수 있습니다.
  • 페더레이션 인증은 Microsoft Entra ID에서 사용하도록 설정됩니다.
  • 애플리케이션 등록 중에 등록된 애플리케이션에 대한 동의가 부여되지 않습니다.

사용자 이름 및 암호로 로그인할 권한이 있는 경우 사용자 이름 암호 흐름(프로그래밍 방식)을 사용하여 Microsoft Entra ID 액세스 토큰을 가져올 수 있습니다.

권한 부여 코드 흐름(대화형)

권한 부여 코드 흐름을 사용하여 Microsoft Entra ID 액세스 토큰을 획득하는 두 가지 단계가 있습니다.

  1. 브라우저 창을 시작하고 Azure 사용자 로그인을 요청하는 권한 부여 코드를 요청합니다. 권한 부여 코드는 사용자가 성공적으로 로그인한 후에 반환됩니다.
  2. 권한 부여 코드를 사용하여 Microsoft Entra ID 액세스 토큰을 획득합니다. 사용하는 방법에 따라 새로 고침 토큰도 동시에 반환될 수 있으며 Microsoft Entra ID 액세스 토큰을 새로 고치는 데 사용할 수 있습니다.

이 두 단계를 완료하는 한 가지 방법은 웹 브라우저와 curl을 사용하는 것입니다. 이렇게 하려면 웹 브라우저를 사용하여 권한 부여 코드를 가져오고 권한 부여 코드를 curl 사용하고 Microsoft Entra ID 액세스 토큰을 가져옵니다. 이 방법은 새로 고침 토큰을 제공하지 않습니다.

또 다른 방법은 MSAL Python 라이브러리를 사용하는 것입니다. 이렇게 하려면 웹 브라우저를 사용하여 권한 부여 코드를 가져오는 단일 스크립트를 실행한 다음, 권한 부여 코드를 사용하여 액세스 및 새로 고침 토큰을 모두 가져옵니다.

두 방법 모두 Azure에 이미 로그인되어 있다고 가정합니다. 로그인하지 않은 경우 웹 브라우저에서 로그인하라는 메시지가 표시됩니다.

웹 브라우저 및 curl을 사용하여 Microsoft Entra ID 토큰 가져오기

  1. 다음 정보를 수집합니다.

    매개 변수 설명
    테넌트 ID Azure Portal에서 앱 구성에서 Microsoft Entra ID에 등록된 관련 애플리케이션의 디렉터리(테넌트) ID입니다.
    Client ID Microsoft Entra ID에 등록된 관련 애플리케이션의 애플리케이션(클라이언트) ID입니다.
    리디렉션 URI Microsoft Entra ID(예http://localhost: )에 등록된 관련 애플리케이션에 대한 적절한 리디렉션 URI입니다. 인증 응답은 권한 부여 코드가 포함된 이 URI로 전송됩니다.
  2. 웹 브라우저를 통해 다음 URL로 이동하여 권한 부여 코드를 가져옵니다. 이에 따라 다음 URL 예제의 필드를 바꿉니다. URL은 한 줄로 보내야 합니다. 가독성을 위해 줄 바꿈이 다음 URL에 추가되었습니다. 자세한 내용은 권한 부여 코드 요청을 참조 하세요.

    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize?client_id=<client-id>
    &response_type=code
    &redirect_uri=<redirect-uri>
    &response_mode=query
    &scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default
    &state=<state>
    

    다음을

    • <tenant-id>를 등록된 애플리케이션의 테넌트 ID로 바꿉니다.
    • <client-id>를 등록된 애플리케이션의 클라이언트 ID로 바꿉니다.
    • <redirect-uri>: 등록된 애플리케이션의 리디렉션 URI 이 URI는 URL로 인코딩(백분율로 인코딩)된 형식이어야 합니다. 예를 들어 http://localhosthttp%3A%2F%2Flocalhost입니다.
    • <state>: 난수 또는 일부 인코딩된 정보 정보 교환의 무결성을 확인하려면 이 상태 값이 이 절차의 뒷부분에서 반환된 URL에 있는 값과 일치해야 합니다.

    scope 매개 변수의 값을 변경하지 마세요. 기본 범위(/.default, %2f.default로 인코딩된 URL)와 함께 Azure Databricks(2ff814a6-3304-4ab8-85cb-cd0e6f879c1d)의 프로그래매틱 ID를 나타냅니다.

    예시:

    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/authorize?client_id=12a34b56-789c-0d12-e3fa-b456789c0123
    &response_type=code
    &redirect_uri=http%3A%2F%2Flocalhost
    &response_mode=query
    &scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default
    &state=12345
    
  3. URL을 웹 브라우저에 한 줄로 붙여넣고 메시지가 표시되면 Azure에 로그인합니다.

    HTTP 요청 URL

  4. 권한 부여 코드는 반환된 URL의 code 필드에 있습니다. 권한 부여 코드는 안전한 위치에 저장합니다. 또한 state 필드 값이 이 절차의 앞부분에서 제공한 값과 일치하는지 확인합니다.

    권한 부여 코드 URL

    전체 반환된 URL은 다음과 같이 표시됩니다(여기에서는 간결성을 위해 전체 code 필드 값이 0.ASkAIj...RxgFhSAA로 단축됨).

    http://localhost/?code=0.ASkAIj...RxgFhSAA&state=12345&session_state=c44574d5-38ba-4f93-b2a3-a830db8e8cdf
    
  5. 권한 부여 코드를 curl 사용하여 Microsoft Entra ID 액세스 토큰을 가져옵니다.

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
    -d 'client_id=<client-id>' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'code=<authorization-code>' \
    -d 'redirect_uri=<redirect-uri>' \
    -d 'grant_type=authorization_code' \
    -d 'state=<state>'
    

    다음을

    • <tenant-id>를 등록된 애플리케이션의 테넌트 ID로 바꿉니다.
    • <client-id>를 등록된 애플리케이션의 클라이언트 ID로 바꿉니다.
    • <authorization-code>: 권한 부여 코드
    • <redirect-uri>: 등록된 애플리케이션의 리디렉션 URI 이 URI는 URL로 인코딩(백분율로 인코딩)된 형식이어야 합니다. 예를 들어 http://localhosthttp%3A%2F%2Flocalhost입니다.
    • <state>: 난수 또는 일부 인코딩된 정보 정보 교환의 무결성을 확인하려면 이 상태 값이 이 절차의 뒷부분에 있는 응답 페이로드에 있는 값과 일치해야 합니다.

    scope 매개 변수의 값을 변경하지 마세요. 기본 범위(/.default, %2f.default로 인코딩된 URL)와 함께 Azure Databricks(2ff814a6-3304-4ab8-85cb-cd0e6f879c1d)의 프로그래매틱 ID를 나타냅니다.

    예시:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'code=0.ASkAIj...RxgFhSAA' \
    -d 'redirect_uri=http%3A%2F%2Flocalhost' \
    -d 'grant_type=authorization_code' \
    -d 'state=12345'
    

    Microsoft Entra ID 토큰은 access_token 호출 결과 내의 값에 있습니다. state 값이 이 절차의 앞부분에서 제공한 값과 일치하는지 확인해야 합니다.

MSAL Python 라이브러리를 사용하여 Microsoft Entra ID 토큰 가져오기

  1. 다음 정보를 수집합니다.

    매개 변수 설명
    테넌트 ID Azure Portal에서 앱 구성에서 Microsoft Entra ID에 등록된 관련 애플리케이션의 디렉터리(테넌트) ID입니다.
    Client ID Microsoft Entra ID에 등록된 관련 애플리케이션의 애플리케이션(클라이언트) ID입니다.

    이 절차에서는 Microsoft Entra ID에 등록된 관련 애플리케이션에 대한 리디렉션 URI로 설정 http://localhost 했다고 가정합니다.

  2. pip install msal을 실행하여 로컬 컴퓨터에 MSAL Python SDK를 설치합니다.

  3. 다음 코드를 로컬 컴퓨터에 get-tokens.py로 저장합니다.

    # Given the client ID and tenant ID for an app registered in Azure,
    # provide a <ms-entra-id> access token and a refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID and tenant ID here,
    # or you can provide them as command-line arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<tenant-id>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '/.default'.
    scopes = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 3):
      print("Usage: get-tokens.py <client ID> <tenant ID>")
      exit(1)
    
    # If the registered app's client ID and tenant ID are provided as
    # command-line variables, set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_interactive(
      scopes = scopes
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("Access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nRefresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  4. 다음 중 하나를 수행합니다.

    • 앞의 코드에서 <client-id>를 등록된 애플리케이션의 클라이언트 ID로, <tenant-id>를 등록된 애플리케이션의 테넌트 ID로 바꾼 다음 스크립트를 실행합니다(예: python get-tokens.py).
    • 예제 python get-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de의 경우 스크립트를 실행할 때 등록된 애플리케이션의 클라이언트 ID 및 등록된 애플리케이션의 테넌트 ID를 제공합니다.
  5. 웹 브라우저에서 메시지가 표시되면 Azure에 로그인합니다.

  6. Microsoft Entra ID 액세스 및 새로 고침 토큰이 출력에 인쇄됩니다.

사용자 이름 암호 흐름(프로그래밍 방식)

  1. 사용자 이름 및 암호를 사용하여 로그인할 권한이 있는 경우 다음 정보를 취합합니다.

    매개 변수 설명
    테넌트 ID Azure Portal에서 앱 구성에서 Microsoft Entra ID에 등록된 관련 애플리케이션의 디렉터리(테넌트) ID입니다.
    Client ID Microsoft Entra ID에 등록된 실제 애플리케이션의 애플리케이션(클라이언트) ID입니다.
    사용자 이름 및 암호 테넌트에 있는 사용자의 사용자 이름(즉, Azure Portal에 로그인할 때의 이메일 주소) 및 암호입니다.

    이 절차에서는 Microsoft Entra ID에 등록된 관련 애플리케이션에 대한 리디렉션 URI로 설정 http://localhost 했다고 가정합니다.

  2. pip install msal을 실행하여 로컬 컴퓨터에 MSAL Python SDK를 설치합니다.

  3. 다음 코드를 로컬 컴퓨터에 get-tokens-for-user.py로 저장합니다.

    # Given the client ID and tenant ID for an app registered in Azure,
    # along with an Azure username and password,
    # provide a <ms-entra-id> access token and a refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID and tenant ID here,
    # along with the Azure username and password,
    # or you can provide them as command-line arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<tenant-id>'
    username = '<username>'
    password = '<password>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '/.default'.
    scope = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 5):
      print("Usage: get-tokens-for-user.py <client ID> <tenant ID> <username> <password>")
      exit(1)
    
    # If the registered app's client ID and tenant ID along with the
    # Azure username and password are provided as command-line variables,
    # set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
      username = sys.argv[3]
      password = sys.argv[4]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_by_username_password(
      username = username,
      password = password,
      scopes = scope
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("Access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nRefresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  4. 다음 중 하나를 수행합니다.

    • 앞의 코드에서 <client-id>를 등록된 애플리케이션의 클라이언트 ID로, <tenant-id>를 등록된 애플리케이션의 테넌트 ID로, <username>을 사용자 이름으로, <password>를 암호로 바꾼 다음 스크립트를 실행합니다(예: python get-tokens-for-user.py).
    • 예를 들어 python get-tokens-for-user.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de someone@example.com "MyPa55w&rd!"스크립트를 실행할 때 등록된 애플리케이션의 클라이언트 ID, 등록된 애플리케이션의 테넌트 ID, 사용자 이름 및 암호를 제공합니다. 명령줄 인수에 특수 문자가 포함된 경우 따옴표로 묶어야 합니다.
  5. Microsoft Entra ID 액세스 및 새로 고침 토큰은 터미널에 인쇄됩니다.

Microsoft Entra ID 액세스 토큰을 사용하여 Databricks REST API에 액세스

이 섹션에서는 Microsoft Entra ID 액세스 토큰을 사용하여 Databricks REST API를 호출하는 방법을 설명합니다. 다음 예제에서는 Microsoft Entra ID 액세스 토큰과 <databricks-instance> Azure Databricks 배포의 작업 영역별 URL바꿉 <access-token> 니다.

Python 예

이 예제에서는 Azure Databricks 작업 영역에서 클러스터를 나열하는 방법을 보여 줍니다.

import requests
import json

databricks_instance = '<databricks-instance>'
api_version = '/api/2.0'
api_command = '/clusters/list'
url = f"https://{databricks_instance}{api_version}{api_command}"
access_token = '<access-token>'

response = requests.get(
  url = url,
  headers = { 'Authorization': "Bearer " + access_token}
)

print(json.dumps(json.loads(response.text), indent = 2))

참고 항목

관리자가 아닌 사용자이고 관리자 사용자로 로그인하려는 경우 'Authorization' : 'Bearer ' 헤더 외에도 X-Databricks-Azure-Workspace-Resource-Id 헤더를 제공해야 하며 Azure의 작업 영역 리소스에 대한 기여자 또는 소유자 역할에 있어야 합니다. X-Databricks-Azure-Workspace-Resource-Id 값을 다음과 같이 생성합니다.

# ...

subscription = '<azure-subscription-id>'
resource_group = '<azure-resource-group-name>'
workspace = '<databricks-workspace-name-in-azure>'

db_resource_id = '/subscriptions/%s/resourcegroups/%s/providers/microsoft.databricks/workspaces/%s' % (
  subscription,
  resource_group,
  workspace
)

# ...

  headers = {
    'Authorization': "Bearer " + access_token,
    'X-Databricks-Azure-Workspace-Resource-Id': db_resource_id
  }

# ...

Azure에서 구독, 리소스 및 작업 영역 정보를 얻으려면 리소스 열기를 참조하세요. 대상 리소스를 열려면 Azure Databricks 서비스 유형 및 대상 Azure Databricks 작업 영역에 대해 알고 있는 Azure의 다른 정보를 검색할 수 있습니다.

curl 예제

curl -X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <access-token>' \
https://<databricks-instance>/api/2.0/clusters/list

Microsoft Entra ID 액세스 토큰 새로 고침

Microsoft Entra ID 액세스 토큰과 함께 새로 고침 토큰을 가져오는 경우 새로 고침 토큰을 사용하여 새 토큰을 가져올 수 있습니다. 기본적으로 Microsoft Entra ID 액세스 토큰의 수명은 60분에서 90분(평균 75분) 사이의 임의 기간입니다. Microsoft Entra ID(이전의 Azure Active Directory)구성 가능한 토큰 수명에서 메서드를 사용하여 Microsoft Entra ID 액세스 토큰의 수명을 구성할 수 있습니다.

다음 예제에서는 새로 고침 토큰과 함께 MSAL Python 라이브러리를 사용하여 새 토큰을 가져오는 방법을 보여 줍니다.

  1. 다음 코드를 로컬 컴퓨터에 refresh-tokens.py로 저장합니다.

    # Given the client ID and tenant ID for an app registered in Azure,
    # along with a refresh token, provide a new <ms-entra-id> access token and
    # refresh token.
    
    # If the caller is not already signed in to Azure, the caller's
    # web browser will prompt the caller to sign in first.
    
    # pip install msal
    from msal import PublicClientApplication
    import sys
    
    # You can hard-code the registered app's client ID, tenant ID,
    # and refresh token here, or you can provide them as command-line
    # arguments to this script.
    client_id = '<client-id>'
    tenant_id = '<refresh-token'
    refresh_token = '<refresh-token>'
    
    # Do not modify this variable. It represents the programmatic ID for
    # Azure Databricks along with the default scope of '.default'.
    scope = [ '2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' ]
    
    # Check for too few or too many command-line arguments.
    if (len(sys.argv) > 1) and (len(sys.argv) != 4):
      print("Usage: refresh-tokens.py <client ID> <tenant ID> <refresh token>")
      exit(1)
    
    # If the registered app's client ID, tenant ID, and refresh token are
    # provided as command-line variables, set them here.
    if len(sys.argv) > 1:
      client_id = sys.argv[1]
      tenant_id = sys.argv[2]
      refresh_token = sys.argv[3]
    
    app = PublicClientApplication(
      client_id = client_id,
      authority = "https://login.microsoftonline.com/" + tenant_id
    )
    
    acquire_tokens_result = app.acquire_token_by_refresh_token(
      refresh_token = refresh_token,
      scopes = scope
    )
    
    if 'error' in acquire_tokens_result:
      print("Error: " + acquire_tokens_result['error'])
      print("Description: " + acquire_tokens_result['error_description'])
    else:
      print("\nNew access token:\n")
      print(acquire_tokens_result['access_token'])
      print("\nNew refresh token:\n")
      print(acquire_tokens_result['refresh_token'])
    
  2. 다음 중 하나를 수행합니다.

    • 앞의 코드에서 <client-id>를 등록된 애플리케이션의 클라이언트 ID로, <tenant-id>를 등록된 애플리케이션의 테넌트 ID로, <refresh-token>을 새로 고침 토큰으로 바꾼 다음 스크립트를 실행합니다(예:python get-tokens-for-user.py).
    • 예제 python refresh-tokens.py 12a34b56-789c-0d12-e3fa-b456789c0123 a1bc2d34-5e67-8f89-01ab-c2345d6c78de "0.ASkAIj...huE84ALg"의 경우 스크립트를 실행할 때 등록된 애플리케이션의 클라이언트 ID, 등록된 애플리케이션의 테넌트 ID 및 새로 고침 토큰을 제공합니다. 명령줄 인수에 특수 문자가 포함된 경우 따옴표로 묶어야 합니다.
  3. 새 Microsoft Entra ID 액세스 및 새로 고침 토큰이 터미널에 인쇄됩니다.