问题1
我们目前正在使用 ADFS 和 OAuth(使用带有 ADFS 3.0 的 Windows Server 2012 R2)。我们的测试应用程序(WPF 和移动应用程序)可以成功进行身份验证并获取访问 token 和刷新 token 。之后我们可以继续使用访问 token 直到它过期,然后使用刷新 token 来获取新的访问 token 。 到目前为止一切顺利,但问题是当刷新 token 过期时,我们需要强制用户再次输入其凭据。我们的目标是让用户只输入一次凭据,然后使用较短的访问 token 生命周期和持久(或非常长)的刷新 token 生命周期。
根据一些博客文章,使用刷新 token 时,您应该获得一个新的访问 token ,有时还应该获得一个新的刷新 token ,但在我们的例子中,我们永远不会获得新的刷新 token ,因此最终会过期。
使用 ADFS 3.0 和 OAuth 是否有可能获得持久的刷新 token ?或者不时获取新的刷新 token ,以便用户不必再次输入其凭据?或者刷新 token 的生命周期是否可能非常长。
问题2
您还可以在 ADFS 中设置许多我们不确定的不同属性
- TokenLifetime - 这是访问 token 的生命周期?最大值是多少?
- SsoTokenLifetime - 这是刷新 token 生命周期?最大值是多少?
- PersistentSsoLifetimeMins - 这是什么?
- PersistentSsoEnabled - 我想应该设置为 true 才能使刷新 token 正常工作
最佳答案
这个post描述了一个半官方的答案。这是设置所需值的示例 -
Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -IssueOAuthRefreshTokensTo AllDevices
Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -TokenLifetime 10
Set-AdfsProperties -SSOLifetime 480
对于指定的 RPT,这将向所有客户端颁发生命周期为 10 分钟的访问 token ,并向所有客户端颁发生命周期为 8 小时的刷新 token 。
关于authentication - 使用 OAuth 和持久刷新 token 的 ADFS 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22330004/