У меня есть приложение 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
, но я не уверен, что это лучшее место или нет.Я также не уверен, как изящно отклонить токен.
Как проверить, что токен содержит требуемые утверждения при аутентификации приложения.