python - 如何从 Azure SDK DefaultCredential 获取不记名令牌
问题描述
问题 :
我需要获取在 Azure AD 下注册的应用程序证书列表并更新即将到期的应用程序。
我能够通过 Microsoft Graph API > 应用程序获取应用程序相关的详细信息。但是,问题是不记名令牌每次在 1 小时内刷新一次。由于我希望这项任务自动化,因此我需要始终创建一个新的令牌。
我获得了一些 Azure SDK 的参考,用于基于身份的身份验证,但包函数返回的是凭据,而不是要在其余 API 标头授权中使用的令牌(不记名令牌)
代码:
from azure.identity import DefaultAzureCredential
default_credential = DefaultAzureCredential()
参考:
解决方案
好的,经过大量调试和上网后,我找到了 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 权限(授予同意)中提供权限:)
推荐阅读
- nestjs - Nest.js + Mikro-ORM:使用 createQueryBuilder 和 leftJoin 时未初始化的实体集合
- python-3.x - 在这种情况下使用 eval() 在 python 中是一个好主意吗?
- java - 我将如何制作一个程序来点击谷歌表单上的按钮?
- c - 如何获取目录的相对路径?
- php - 防止 fgetcsv() 在外壳内的 \n 上中断
- common-lisp - 更正正则表达式“\[([a-zA-Z0-9_-]+)]”
- postgresql - 如何以零停机时间向生产 PostgreSQL 的表中添加列?
- spring-boot - 如何使用 thymeleaf + Spring boot 动态解析 html 模板?
- game-maker - Issue with game over room
- python-3.x - 如何正确处理 Wagtail 大文件上传