我试图了解如何确保登录用户的帐户仍然“有效”(其中有效意味着例如未锁定,未删除)
我使用IdentityServer v3设置了身份提供程序 . 在“依赖方”方面,我有一个使用Owin托管的ASP.NET WebApi . 在RP端,我正在使用UseOpenIdConnectAuthentication在Owin管道中安装OpenIdConnectAuthenticationMiddleware .
到目前为止有什么工作:
-
访问我的Web应用程序的任何未经身份验证的用户都将重定向到IdentityServer上的登录页面
-
用户登录(我正在使用隐式流程)
-
用户被重定向回我的网络应用程序
-
我的网络应用程序收到包含id令牌和访问令牌的JWT
-
我的网络应用程序调用用户信息 endpoints 以使用访问令牌检索声明
-
我的网络应用会创建一个新的ClaimsIdentity,其中包含我的应用感兴趣的声明 . 然后将其保存在cookie中,使用:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies",
SlidingExpiration = true
});
这工作正常,但我希望从身份服务器的角度来看,用户仍然是“有效”的某种每小时验证 .
是否有一些标准模式我应该如何重新验证用户帐户是否有效?我不想强迫用户再次登录,我只想确认用户即使他的用户帐户被删除也无法永远保持 .
1 回答
您可以使用OpenID Connect身份验证请求再次将用户发送到授权服务器,但使用规范中记录的附加参数
prompt=none
:http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint如果成功返回,则用户仍然登录,否则将返回错误 . 在任何一种情况下都不会提示用户 .