如何在 Web 应用程序中从 Azure AD 刷新 ID 令牌?

Niv*_*ias 6 azure-active-directory azure-web-app-service

我正在尝试设置一个 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 令牌也刷新呢?

Chr*_*lum 8

不幸的是,AAD 不支持刷新 ID 令牌。只能刷新访问令牌。请参阅此处:https : //azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/#refreshing-the-access-tokens

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

  • 您声称“访问令牌和 id 令牌非常相似,您应该更改所有内容以使用访问令牌”有点冒险。Open ID 的开发并不是因为有些人无聊并且不想使用访问令牌来进行身份验证,而是因为它们具有不同的范围而开发的。虽然访问令牌授予您对第三方 API 中受保护资源的访问权限,但 id 令牌为您提供了一种无需任何特定访问即可验证用户身份的方法,因此不应混淆或替换它们。 (3认同)
  • 嘿克里斯,我从你的评论中看到我们应该使用“access_tokens”而不是“id_tokens”,但我发现只有“id_token”适用于不记名身份验证。您对执行承载身份验证时如何使用“access_token”有任何指导吗? (2认同)
  • @AndrésMongeMoreno 你完全脱离了上下文。我建议切换到访问令牌是因为*这是执行 OAuth* 的正确方法。关于常见声明的评论特定于 AAD 的实现(OIDC 不适用于此处),并且仅表明它不是 OP 服务器端代码的重大更改。 (2认同)