【问题标题】:What is the token returned by the Azure Bot?Azure Bot 返回的令牌是什么?
【发布时间】:2020-01-08 16:12:15
【问题描述】:

我按照tutorial 为我的 Azure Bot 设置身份验证。成功登录后,它会为我返回一个令牌。我相信这是访问 Microsoft Graph API 的授权令牌。如果我想使用同一个令牌来交换另一个 Web 应用程序的访问令牌,这可能吗?我怎么能做到呢?

【问题讨论】:

    标签: azure-active-directory azure-bot-service azure-authentication


    【解决方案1】:

    是的,有可能。

    授权完成后应该可以得到一个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。

    【讨论】:

    • 您好@Allen Wu,非常感谢您的回复。你回应的正是我想做的。我的一个问题与令牌有关。使用本教程 (docs.microsoft.com/en-us/azure/bot-service/…),我能够通过机器人对话设置身份验证。我从中获得的令牌是“eyJ0......”的形式。这是身份验证码还是访问令牌?
    • @vfirma 这是访问令牌。您不需要在我上面的步骤中使用验证码。而且您需要获取 refresh_token 而不是 access_token。然后用 refresh_token 换取新的 access_token。
    • 不能使用该访问令牌值来完成吗?看来我的机器人只给了我那个令牌,或者我可能在某处丢失了 refresh_token
    • 尝试此操作后,我收到 { "error": "invalid_grant", "error_description": "AADSTS9002313: Invalid request. Request is malformed or invalid.\r\nTrace ID: 4f9be336-22bc-4ee5 -89a9-c342b6ba8900\r\n相关 ID: 9f4716e4-136b-437d-864e-bde2c1320306\r\n时间戳: 2020-01-08 06:43:00Z", "error_codes": [9002313] 这是使用 client_id 和 client_secret Azure Bot。
    • @vfirma 根据我的理解,您似乎不想调用 Microsoft Graph API。你想要的是调用你自己的 web api。那正确吗?您调用 Microsoft Graph API 只是因为官方示例是用于访问 Microsoft Graph API。
    猜你喜欢
    • 2019-09-08
    • 2020-11-28
    • 1970-01-01
    • 2022-11-10
    • 2018-01-21
    • 2016-10-19
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    相关资源
    最近更新 更多