【问题标题】:How to refresh an ID Token from Azure AD in a Web App?如何在 Web 应用程序中从 Azure AD 刷新 ID 令牌?
【发布时间】:2016-11-20 00:26:44
【问题描述】:

我正在尝试设置 Azure Web 应用程序以通过 Azure AD 进行身份验证并在后台自动刷新 ID 令牌。 一篇很棒的博客文章帮助我理解了整个事情是如何运作的: https://cgillum.tech/2016/03/07/app-service-token-store/

从它链接的本指南帮助我进行了设置: http://cgillum.tech/2016/03/25/app-service-auth-aad-graph-api/

似乎为 Azure AD 身份验证启用刷新令牌并不那么简单,因此我建议我使用上述指南来设置它,就好像它是为 GraphApi 设置的一样。

我遇到的问题是即使在调用“.auth/refresh”端点然后调用“.auth/me”端点之后,唯一刷新的令牌是访问令牌。该令牌对我没有用,因为我在与后端服务器通信时使用了 Id 令牌(使用“授权承载”标头)。

那么如何让 Id Token 也刷新?

【问题讨论】:

    标签: azure-web-app-service azure-active-directory


    【解决方案1】:

    很遗憾,AAD 不支持刷新 ID 令牌。只能刷新访问令牌。见这里:https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/#refreshing-the-access-tokens

    但即使可以刷新,在使用其他服务进行身份验证时使用访问令牌更正确,因此我建议更改您的应用程序以这种方式工作。访问令牌和 id_token 的声明非常相似,因此它不应该是一个非常破坏性的更改。

    【讨论】:

    • 嘿,克里斯,我从您的评论中看到,我们应该使用 access_tokens 而不是 id_tokens,但我发现只有 id_token 适用于不记名身份验证。您对在执行承载身份验证时如何使用access_token 有任何指导吗?
    • 访问令牌绝对应该适用于不记名令牌身份验证。如果它不起作用,那么您需要在服务器端日志中查看验证错误。如果这是一个具有身份验证/授权的 Web 应用程序,那么您可以通过启用应用程序日志记录来找到此信息。我的猜测是观众验证失败,这很容易修复。
    • 这是否适用于我们自己的 API 应用程序?我刚刚检查了日志并在使用访问令牌进行不记名身份验证时收到了 JWT 验证错误。
    • 您声称“访问令牌和 id 令牌非常相似,您应该更改所有内容以使用访问令牌”有点冒险。开发 Open ID 并不是因为有些人很无聊,不想使用访问令牌进行身份验证,而是因为它们的范围不同而开发的。虽然访问令牌授予您对第三方 API 中受保护资源的访问权限,但 id-token 为您提供了一种无需任何特定访问权限即可验证用户身份的方法,因此不应混淆或替换它们。
    • @AndrésMongeMoreno 你把我的回答完全断章取义了。我建议切换到访问令牌是因为这是进行 OAuth 的正确方法。关于常见声明的评论特定于 AAD 的实现(OIDC 不适用于此处),仅表明这不是 OP 的服务器端代码的重大更改。
    猜你喜欢
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2020-03-17
    • 1970-01-01
    • 2016-06-26
    • 2018-11-18
    相关资源
    最近更新 更多