azure - 如何在 on_behalf_of 流程中创建 client_assertion 和断言

标签 azure azure-active-directory microsoft-graph-api

我想通过证书获取访问 token 。

我从我的应用程序中知道这些 client_id、grant_type、scope 的值。

但是我在哪里可以找到assertion和client_assertion的值。

我需要获得更多代币吗?我完全迷失了。

任何人都可以指导我使用工作示例吗?

最佳答案

这是一个示例。可以概括为:

  1. 转至此网址获取授权码:
https://login.microsoftonline.com/tenant_id/oauth2/v2.0/authorize?
client_id=aad_client_id
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=api://aad_client_id_which_exposed_api/permission_name
&state=12345

2.使用auth code通过auth code流程生成访问 token 。 3.使用访问 token 通过obo流程生成另一个访问 token 。

enter image description here

当一个API想要调用另一个API时,使用代表流。所以首先你需要有一个受AAD保护的web api,这样它才能接收一个访问 token A。有了这个 token A后,代表流可以通过A生成一个新的 token B,所以A是参数断言。然后使用客户端 ID + 客户端密码并遵循 this section通过obo流生成访问 token 。这就是我在屏幕截图中所做的。

Azure AD 还使用证书而不是客户端 key 来完成授权。所以我们也可以关注this section去做吧。如您所见,缺少 client_secret 但出现 client_assertion_type client_assertion

那么剩下的问题就是如何获取token A了。就像我说的,token A是用来访问受AAD保护的API的,所以你需要暴露一个API并给予该api权限,然后更新你们的项目授权范围对吗?然后this tutorial展示整个进度。完成所有步骤后,您可能需要先使用您的 onmicrosoft.com 帐户登录,然后您可以从浏览器中的网址获取 code,然后使用它生成访问 token 的代码,该 token 的范围应类似于 api://aad_client_id/xxx,这是 token A。

enter image description here

您也可以引用this tutorial ,这可以帮助您了解obo流程。

关于azure - 如何在 on_behalf_of 流程中创建 client_assertion 和断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74311506/

相关文章:

python - Azure Functions - BlobTrigger - 如何使用容器中的任何文件触发函数?

azure - CMD 文件对于启动任务和通过 RDP 手动执行的 react 不同

microsoft-graph-api - Microsoft Graph FindMeetingTimes 差距

c# - 如何在onedriveAPI的请求正文中指定@microsoft.graph.conflictBehavior

azure-active-directory - 验证用户在德国国家云中使用图形 API

powershell - 禁止显示 Azure Stop-AzureRMVM cmdlet 警告消息框

python - 使用 Azure Functions 部署 python 机器学习模型

javascript - 使用 proxyAddresses 筛选器的 Microsoft Graph API 查询用户

基于 Azure 证书的身份验证在 Azure AD 中不起作用

azure-active-directory - oid 在 AAD 中的所有租户中是否唯一?