Как отклонить токен с недействительными претензиями - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть приложение ASP.net 4.X, которое использует UseOpenIdConnectAuthentication для аутентификации в приложении Identity Server 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,

                ....................

В настоящее время все работает нормально.Однако у меня есть проблема.Если что-то происходит на сервере Identity, и он не возвращает все утверждения в токене, которые мне нужны.Мне нужен способ отказаться от него, не заканчивая каким-то бесконечным циклом входа в систему, который у меня сейчас есть.

Мне было интересно, есть ли место в промежуточной одежде, где я мог бы добавить что-то вроде

 var needed= claims.FirstOrDefault(c => c.Type == "NeedThisClaim")?.Value;

Если его там нет, выгоните его и откажитесь в доступе пользователя.Я думал о том, чтобы поместить это в SecurityTokenValidated, но я не уверен, что это лучшее место или нет.Я также не уверен, как изящно отклонить токен.

Как проверить, что токен содержит требуемые утверждения при аутентификации приложения.

...