AcquireTokenSilentAsync 会在 90 天后失效吗?
Will AcquireTokenSilentAsync not work after 90 days?
我正在构建一个 ASP.NET Web API 服务,它连接到 Azure Graph API 以获取用户列表。
所以我的方案是在此服务上创建一个 MVC 页面 => 让 Azure AD 管理员登录并授予权限 => 缓存 access_token 并使用它来调用 API.
不过,我承认 access_token 将在 1 小时后过期。即使使用 refresh_token 续订,管理员实际上也必须在 90 天后再次手动登录此服务。
我阅读了一些使用 ADAL 库中的 AcquireTokenSilentAsync 方法的示例。但不确定 90 天后是否会失效?
是的,默认情况下刷新令牌会在 14 天后过期(访问令牌会在一小时后过期),但我相信通过某些配置它可以持续到 90 天。这是出于安全原因和良好做法。没有错。但是,这仅在您实现自己的缓存时才有效,因为默认情况下 ADAL 缓存使用内存,并且在重新启动时它将丢失这些令牌。
https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect
是的,目前访问令牌将在一小时内过期。 Refresh Token 的有效期为 14 天,可用于获取新的 Access Token 和新的 Refresh Token。您最多可以继续这样做 90 天。 (请注意,这些是当前值,它们将来可能会更改。)AcquireTokenSilent
和 AcquireTokenSilentAsync
将尝试使用现有状态(即刷新令牌,如果可用)来获取新的访问令牌,或者如果不可能,则抛出异常。
也就是说,我怀疑这可能不是适合您的情况的最佳方法。听起来您处于以下两种情况之一:
您正在构建一个中间件服务(API),该服务将由经过身份验证的用户访问的不同应用程序使用。如果是这种情况,您可以使用代表流程,其中 (a) 您的中间件服务在 Azure AD 中注册为 Web app/API,(b) 面向用户的客户端应用程序并获得访问权限中间件 API 的令牌(对于当前用户),并且 (c) 中间件 API 使用该访问令牌代表 Azure AD Graph API 获取新的访问令牌原始用户。
您只需启用对 Graph 的无人值守访问 API。如果中间件服务是高度信任的环境,您可以使用仅应用程序身份验证(也称为 "headless" 或 "daemon" 应用程序)在没有任何用户上下文的情况下获取访问令牌。 (这是客户端凭据授予 OAuth 2.0 流程。)
我正在构建一个 ASP.NET Web API 服务,它连接到 Azure Graph API 以获取用户列表。 所以我的方案是在此服务上创建一个 MVC 页面 => 让 Azure AD 管理员登录并授予权限 => 缓存 access_token 并使用它来调用 API.
不过,我承认 access_token 将在 1 小时后过期。即使使用 refresh_token 续订,管理员实际上也必须在 90 天后再次手动登录此服务。
我阅读了一些使用 ADAL 库中的 AcquireTokenSilentAsync 方法的示例。但不确定 90 天后是否会失效?
是的,默认情况下刷新令牌会在 14 天后过期(访问令牌会在一小时后过期),但我相信通过某些配置它可以持续到 90 天。这是出于安全原因和良好做法。没有错。但是,这仅在您实现自己的缓存时才有效,因为默认情况下 ADAL 缓存使用内存,并且在重新启动时它将丢失这些令牌。
https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect
是的,目前访问令牌将在一小时内过期。 Refresh Token 的有效期为 14 天,可用于获取新的 Access Token 和新的 Refresh Token。您最多可以继续这样做 90 天。 (请注意,这些是当前值,它们将来可能会更改。)AcquireTokenSilent
和 AcquireTokenSilentAsync
将尝试使用现有状态(即刷新令牌,如果可用)来获取新的访问令牌,或者如果不可能,则抛出异常。
也就是说,我怀疑这可能不是适合您的情况的最佳方法。听起来您处于以下两种情况之一:
您正在构建一个中间件服务(API),该服务将由经过身份验证的用户访问的不同应用程序使用。如果是这种情况,您可以使用代表流程,其中 (a) 您的中间件服务在 Azure AD 中注册为 Web app/API,(b) 面向用户的客户端应用程序并获得访问权限中间件 API 的令牌(对于当前用户),并且 (c) 中间件 API 使用该访问令牌代表 Azure AD Graph API 获取新的访问令牌原始用户。
您只需启用对 Graph 的无人值守访问 API。如果中间件服务是高度信任的环境,您可以使用仅应用程序身份验证(也称为 "headless" 或 "daemon" 应用程序)在没有任何用户上下文的情况下获取访问令牌。 (这是客户端凭据授予 OAuth 2.0 流程。)