我正在使用endpoint / oauth2 / token从Azure Active Directory请求(通过HTTP POST)身份验证承载令牌。 AAD中的所有内容都设置正常,以注册使用此流程检索此令牌的Web客户端。使用了client_id和client_secret(共享对称密钥),并且我成功获得了包含用于auth的jwt承载令牌的json响应。
我想要了解的是知道我们如何配置令牌的到期时间超过1小时到期,这似乎是我通过此POST请求获取的令牌。我在Azure AD经典门户中生成的共享密钥具有2年到期时间。但是,返回的令牌有1小时到期。
基于此,我假设此流程的工作方式(至少就AAD而言)是我们的Web客户端需要安排自己在1小时内重新发布新的身份验证令牌请求时间范围,以确保用于Web客户端进行的经过身份验证的REST调用的身份验证令牌的新鲜度。我想如果先前发出的令牌失败然后发出新请求(这只是实现细节......),它也可以捕获异常。
这是保持为此流程刷新身份验证令牌的常规方法吗? 我知道,对于大多数其他流程,会生成刷新令牌,并且可以执行OAuth“跳舞”以保持身份验证令牌有效。 ADAL很好地抽象了所有这些细节,但在这种情况下,我使用客户端凭据流并使用HTTP POST请求到oauth2 / token端点,并且在此流程中(根据OAuth2 RFC),不提供刷新令牌。 ]
我曾假设可能在OAuth令牌上配置更长的到期时间,甚至可能是此服务器/服务器机密客户端场景的无限期令牌。 这可能在Azure AD设置中吗?
Azure AD token lifetime config处链接的文档表明生命周期是可配置的。
答案 0 :(得分:2)
在最后一个到期之前获得新令牌的简单方法是跟踪它何时到期。那么每当你为HTTP调用获取一个令牌时:
根据您链接的文档,确实可以按服务主体,应用程序或组织配置生命周期。因此,如果您愿意,您应该能够将访问令牌的生命周期延长到1天。
我已经确认您确实可以在Azure AD的免费层上延长访问令牌到期时间。 documentation page上的免责声明确实说某些功能可能在将来需要使用Premium 。并没有真正说出:/
您需要Azure AD v2 PowerShell cmdlets才能执行此操作。几个命令就足够了:
-IsOrganizationDefault $true
您必须找出服务主体的对象ID是什么,例如Graph API只为那里的标记设置它。或者,您可以在第二个调用中设置Math.Cos(90 * Math.PI / 180)
并完全省略第三个调用,使策略适用于所有服务主体和应用程序,除非它们具有更具体的一个。
Azure AD中没有无限期的访问令牌,但您可以将刷新令牌生存期设置为直到被撤销。