【发布时间】:2020-01-08 16:12:15
【问题描述】:
我按照tutorial 为我的 Azure Bot 设置身份验证。成功登录后,它会为我返回一个令牌。我相信这是访问 Microsoft Graph API 的授权令牌。如果我想使用同一个令牌来交换另一个 Web 应用程序的访问令牌,这可能吗?我怎么能做到呢?
【问题讨论】:
标签: azure-active-directory azure-bot-service azure-authentication
我按照tutorial 为我的 Azure Bot 设置身份验证。成功登录后,它会为我返回一个令牌。我相信这是访问 Microsoft Graph API 的授权令牌。如果我想使用同一个令牌来交换另一个 Web 应用程序的访问令牌,这可能吗?我怎么能做到呢?
【问题讨论】:
标签: azure-active-directory azure-bot-service azure-authentication
是的,有可能。
授权完成后应该可以得到一个refresh_token。
使用此 refresh_token 与另一个 Web 应用程序的 scope 交换另一个 access_token。像这样:
然后我们可以获取另一个范围的 access_token:
您可以看到范围已从 https://graph.microsoft.com 更改为 api://{id}/user.write,这是另一个 Web API。
更新:
也许我有误会,因为我看到你想交换一个新的访问令牌。
如果您只想从 Bot 应用程序访问自己的 Web api 而不需要调用 Microsoft Graph API,只需修改 Resource URL (Azure AD v1) 或 Scopes (Azure AD v2)。无需交换新的访问令牌。
对于Azure AD v1,您应该将资源 URL 设置为:api://{api id}。
对于Azure AD v2,将作用域设置为:api://{api id}/.default。
请注意,api://{api id} 是您的网络 API。
【讨论】: