如何拒绝无效声明的令牌

时间:2018-09-27 12:25:32

标签: c# asp.net-mvc oauth openid identityserver4

我有一个应用程序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中,但不确定是否是最佳位置。我也不确定如何优雅地拒绝令牌。

在验证应用程序时,如何验证令牌是否包含必需的声明。

0 个答案:

没有答案