使用OAuth2隐式流(IdentityServer4),用户是否必须在访问令牌到期时重新输入密码?

时间:2017-02-02 18:29:27

标签: oauth-2.0 openid-connect identityserver4

我需要为Angular2客户端WebApp实现授权/身份验证,以便与资源服务器(WebApi)进行通信。

我正在研究IdentiyServer4并选择授权类型/流程。 HERE

  1. 资源所有者密码凭据授权(我们现在使用的内容。)“这是所谓的”非交互式“身份验证,通常不建议使用”。
  2. 授权码& Hybrid< - Implicit Flow的解决方案不允许刷新令牌。(对我来说似乎相当复杂。但这是要走的路吗?)
  3. 隐含流量 - 推荐SPA用于我看的任何地方。但不支持刷新令牌..
  4. 使用隐式流程,如何不要求SPA的用户每隔3600秒输入一次密码?推荐的access_token生命周期。我认为有一些关于获取新授权URL的内容我不明白。

    我看过的资源。

    感谢Scott的回答。我有一些阅读要做。

1 个答案:

答案 0 :(得分:3)

使用隐式流时,您仍然可以使用自己的cookie生命周期(即超过3600秒)。要绕过访问令牌过期,您可以使用IdentityServer中仍然验证用户的事实来获取另一个访问令牌,而无需刷新令牌。

IdentityModel OpenID Connect JS Client通过在访问令牌到期之前触发事件并使用iframe向IdentityServer发出新的身份验证请求来执行此操作。如果用户仍然登录到IdentityServer(其拥有与您自己的客户端应用程序不同的,通常更长的cookie),则IdentityServer会像正常的身份验证请求一样发回新的令牌。这种情况发生在后台,没有来自用户的交互,也没有中断。

查看此库中的automaticSilentRenew功能以了解实施细节。

顺便说一下,在IdentityServer的情况下,隐式授权代码和混合授权类型是OpenID Connect授权类型。引用OAuth版本的资源可能不适用于您的用例。