У меня есть приложение ASPNet Core 2.2, которое я пытаюсь настроить для использования аутентификации WsFed для аутентификации с помощью нашего STS.Для запуска я добавил следующее:
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
})
.AddWsFederation(options =>
{
options.Configuration = new WsFederationConfiguration
{
TokenEndpoint = Configuration["Sts:Issuer"],
Issuer = "FP",
KeyInfos = { new KeyInfo(GetStsIssuerCert(Configuration["Sts:Thumbprint"])) },
};
options.CallbackPath = new PathString("/Home/CallBack");
options.ClaimsIssuer = Configuration["Sts:Issuer"];
options.Wtrealm = Configuration["Sts:Realm"];
options.TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = Configuration["Sts:Realm"]
};
})
.AddCookie();
Это работает, как и ожидалось, при попытке выполнить действие основного контроллера, имеющего атрибут «Авторизация», однако данные User.Identity не заполняются.Если я затем добавлю следующее при запуске.
app.UseAuthentication();
Я получу следующую ошибку.
SecurityTokenException: No token validator was found for the given token.
Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.HandleRemoteAuthenticateAsync()
Нужно ли использовать UseAuthentication ()?
Любая помощьна это будет принята с благодарностью.