使用OpenId Connect隐式流时重新验证用户

时间:2016-02-16 15:00:18

标签: session refresh openid-connect identityserver3

我正在尝试了解如何确保已登录用户的帐户仍然“有效”(有效意味着例如未锁定,未删除)

我使用IdentityServer v3设置了身份提供程序。在“依赖方”方面,我有一个使用Owin托管的ASP.NET WebApi。在RP端,我正在使用UseOpenIdConnectAuthentication在Owin管道中安装OpenIdConnectAuthenticationMiddleware。

到目前为止有效:

  1. 访问我的网络应用程序的任何未经身份验证的用户都会被重定向到IdentityServer上的登录页面
  2. 用户登录(我正在使用隐式流程)
  3. 用户被重定向回我的网络应用
  4. 我的网络应用收到包含ID令牌和访问令牌的JWT
  5. 我的网络应用程序调用用户信息端点以使用访问令牌检索声明
  6. 我的网络应用会创建一个新的ClaimsIdentity,其中包含我的应用感兴趣的声明。然后使用以下命令将其保存在cookie中:
  7.     app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = "Cookies",
            SlidingExpiration = true
        });
    

    这很好用,但我希望从身份服务器的角度来看,用户仍然是“有效”的某种小时验证。

    是否有一些标准模式我应该如何重新验证用户帐户是否有效?我不想强迫用户再次登录,我只想确认用户即使他的用户帐户被删除也无法永远保持。

1 个答案:

答案 0 :(得分:1)

您可以使用OpenID Connect身份验证请求再次将用户发送到授权服务器,但使用规范中记录的附加参数prompt=nonehttp://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint如果成功返回,则用户仍然会被记录in,否则将返回错误。在任何一种情况下都不会提示用户。