我有一个应用程序ASP.net 4.X,它使用UseOpenIdConnectAuthentication
对身份服务器4应用程序进行身份验证。
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = identityServerUrl,
ClientId = clientId,
Scope = "openid profile testapi",
ClientSecret = secret,
RedirectUri = basePath + "/signin-oidc",
PostLogoutRedirectUri = basePath,
ResponseType = "id_token token code",
SignInAsAuthenticationType = "Cookies",
UseTokenLifetime = false,
....................
所有这些目前都可以正常工作。但是我有一个问题。如果身份服务器中发生任何事情,并且它不会在我需要的令牌中返回所有声明。我需要一种方法来拒绝它,而不会以我目前拥有的某种无尽的登录循环结束。
我想知道中间件中是否可以添加
之类的地方 var needed= claims.FirstOrDefault(c => c.Type == "NeedThisClaim")?.Value;
如果不存在,则将其踢出并拒绝用户访问。我本来打算将其放在SecurityTokenValidated
中,但不确定是否是最佳位置。我也不确定如何优雅地拒绝令牌。
在验证应用程序时,如何验证令牌是否包含必需的声明。