azure - AcquireTokenSilentAsync 会在 90 天后不起作用吗?

标签 azure authentication adal

我正在构建一个 ASP.NET Web API 服务,该服务连接到 Azure Graph API 以获取用户列表。 所以我的场景是在此服务上创建一个 MVC 页面 => 让 Azure AD 管理员登录并授予权限 => 缓存 access_token 并使用它来调用 API。

但是,我承认access_token将在1小时后过期。即使使用refresh_token续订,管理员实际上也必须在90天后再次手动登录此服务。

我阅读了一些使用 ADAL 库中的 AcquireTokenSilentAsync 方法的示例。但不确定 90 天后是否就没用了?

最佳答案

是的,目前访问 token 将在一小时内过期。刷新 token 的有效期为 14 天,可用于获取新的访问 token 和新的刷新 token 。您最多可以继续这样做 90 天。 (请注意,这些是当前值,将来可能会更改。)AcquireTokenSilentAcquireTokenSilentAsync 将尝试使用现有状态(即刷新 token ,如果可用)来获取一个新的访问 token ,或者如果不可能的话抛出异常。

也就是说,我怀疑这可能不是适合您的场景的最佳方法。听起来您处于以下两种情况之一:

  1. 您正在构建一个中间件服务(API),该服务将由经过身份验证的用户访问的不同应用程序使用。如果是这种情况,您可以使用代表流程,其中 (a) 您的中间件服务在 Azure AD 中注册为 Web 应用/API,(b) 面向用户的客户端应用程序并获取访问 token ( (c) 中间件 API 使用该访问 token 代表原始用户获取 Azure AD Graph API 的新访问 token 。

  2. 您只需启用对 Graph API 的无人值守访问即可。如果中间件服务是高度信任的环境,则可以使用仅应用程序身份验证(也称为“ headless ”或“守护程序”应用程序)来获取访问 token ,而无需任何用户上下文。 (这是客户端凭据授予 OAuth 2.0 流程。)

关于azure - AcquireTokenSilentAsync 会在 90 天后不起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37200335/

相关文章:

ios - 使用适用于 iOS 的 Office 365 SDK 读取文件

azure - 如何从 azure-active-directory 获取具有特定组声明的 token

authentication - 如何为 Mosquitto Broker 设置身份验证?

python - Django:一个 View 的基本身份验证(避免中间件)

用于爱尔兰网站的 Azure 北欧或西欧

azure - 使用 MSAL 库 java 获取 Azure 应用服务主体

git - 无法使用 PAT 从 Azure DevOps 克隆 git

azure - ADAL 是否支持 PCL 配置文件 259?

Azure API 管理操作 URL 模板

python - 为什么在调用 Azure OpenAI GPT 时使用 "Unrecognized request argument supplied: functions"时会收到错误 `functions`?