首页 > 解决方案 > 如何从 Azure SDK DefaultCredential 获取不记名令牌

问题描述

问题 :

我需要获取在 Azure AD 下注册的应用程序证书列表并更新即将到期的应用程序。

我能够通过 Microsoft Graph API > 应用程序获取应用程序相关的详细信息。但是,问题是不记名令牌每次在 1 小时内刷新一次。由于我希望这项任务自动化,因此我需要始终创建一个新的令牌。

我获得了一些 Azure SDK 的参考,用于基于身份的身份验证,但包函数返回的是凭据,而不是要在其余 API 标头授权中使用的令牌(不记名令牌)

代码:

from azure.identity import DefaultAzureCredential

default_credential = DefaultAzureCredential()

参考:

Azure api 或 sdk 以获取应用注册列表以及与之关联的证书

标签: pythonazurerestidentity

解决方案


好的,经过大量调试和上网后,我找到了 RestAPI 获取不记名令牌的方法。

    data = {
        "client_id":"add your client id",
        "scope": "add scope ex: User.read Directory.read.All",
        "grant_type": "password", [don't modify this one since you are providing the password]
        "username": "your username",
        "password": "your password",
        "client_secret": "client secret"
    }

    headers = {
        "Host": "login.microsoftonline.com",
        "Content-Type": "application/x-www-form-urlencoded"
    }
    data = requests.post(f'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token', data=data, headers=headers)

您将收到一个包含访问令牌和相关详细信息的 json。

请记住在 azure 门户> Azure AD > 应用注册 > 你的应用 > API 权限(授予同意)中提供权限:)


推荐阅读