【问题标题】:Azure Ad access token clarificationsAzure 广告访问令牌说明
【发布时间】:2017-09-04 15:37:16
【问题描述】:

我需要通过以下项目的示例或参考链接进行说明:

  1. 如何启用访问令牌的自动更新?
  2. 如何获取活动访问令牌和到期时间?
  3. 是否有任何可能的方法从访问令牌中再次获取广告用户名、密码和客户端 ID?
  4. 如何验证访问令牌?

这一切都需要在 c# 中实现,而不是在 powershell 中。

【问题讨论】:

标签: azure azure-active-directory


【解决方案1】:

如何启用访问令牌自动续订?

身份验证成功后,Azure AD 返回两个令牌:一个 JWT 访问令牌和一个 JWT 刷新令牌。当访问令牌过期时,客户端应用程序将收到一个错误,指示用户需要再次进行身份验证。如果应用程序具有有效的刷新令牌,则可以使用它来获取新的访问令牌,而无需提示用户再次登录。如果刷新令牌过期,应用程序将需要再次以交互方式对用户进行身份验证。

如何获取活动访问令牌和到期时间?

有关如何对用户进行身份验证并为您的 azure 广告应用获取 Azure AD 访问令牌,您可以参考Authentication Scenarios for Azure AD。Azure Active Directory 身份验证库 (ADAL) 使客户端应用程序开发人员能够轻松地对用户进行身份验证以访问云或云端- 部署 Active Directory (AD),并获取访问令牌以保护 API 调用。 ADAL 可在各种平台上使用。您可以在this document 找到代码示例和常见场景。

是否有任何可能的方法从访问令牌中再次获取广告用户名、密码和客户端 ID?

您可以解码访问令牌,找到存储用户主体的用户名的upn 声明; appid 声明标识使用令牌访问资源的应用程序。请参考文档:Azure AD token reference。当然,您无法获取密码信息。

如何验证访问令牌?

JWT 令牌已签名,但在收到时未加密。它必须validate the signature 来证明令牌的真实性并验证令牌中的一些声明以证明其有效性。应用验证的声明因场景要求而异,但您的应用必须在每个场景中执行一些常见的声明验证。例如,如果您正在开发单个声明,我们需要验证 issaud 声明租户应用程序。而且您还需要验证nbf 以确保令牌没有过期。更多详情请参考Validating tokens

Here 是关于如何在 Web API 中手动验证 JWT 访问令牌的代码示例。如果您在项目中使用了OWIN组件,使用UseWindowsAzureActiveDirectoryBearerAuthentication扩展名更容易验证令牌,代码示例here供您参考。

【讨论】:

  • 请注意,访问令牌应该被认为是不透明的(并且将来可能会被加密)。我们不建议您从访问令牌中提取声明。它应该只被资源(而不是客户端)使用
  • 令牌的更新也是在客户端库上完成的(对于 C#,如果您想针对 Azure AD V1(即工作/学校帐户和 ADFS 本​​地帐户),您可以使用 ADAL.Net ),如果你想定位 Azure AD V2,你可以使用 MSAL.Net,它适用于工作/学校帐户和 MSA(Microsoft 个人帐户)
  • 对于 C# 客户端库,请参阅 Azure Active Directory Authentication Libraries
猜你喜欢
  • 2021-11-12
  • 1970-01-01
  • 2017-12-15
  • 2018-01-01
  • 1970-01-01
  • 2021-10-30
  • 2020-01-16
  • 2021-04-29
  • 2013-01-08
相关资源
最近更新 更多