Я пытаюсь добавить поставщика аутентификации WSFederation в IdentityServer4. Недавно вышел Microsoft.AspNetCore.Authentication.WsFederation Preview 2 был выпущен, и я смог добавить его в обычное приложение Asp.NetCore.
Но мне сложно добавить его в IdentityServer4 EntityFramework-Quickstart Пример.
Вот как я добавил AuthenticationProvider в свой метод Startup.cs / ConfigureServices:
services.AddAuthentication()
.AddWsFederation("WsFederation", options =>
{
options.Wtrealm = realm;
options.MetadataAddress = metadata;
})
У меня есть кнопка для WSFederation во Frontend, и я также могу войти в систему. Но после обратного вызова я получаю эту ошибку:
InvalidOperationException: отсутствует дополнительное утверждение IdentityServer4.Hosting.IdentityServerAuthenticationService.AssertRequiredClaims (участник ClaimsPrincipal)
Я могу понять, откуда это взялось, это в IdentityServerAuthenticationService.cs IdentityServer4, она ожидает «вспомогательную» претензию - WSFed не возвращает такую претензию:
if (principal.FindFirst(JwtClaimTypes.Subject) == null) throw new InvalidOperationException("sub claim is missing");
Насколько я понимаю, я не могу настроить это утверждение, хотя в проекте быстрого запуска есть некоторые таблицы, которые, кажется, могут быть использованы для этого, особенно те 2: a>
Я уже пробовал добавить утверждение, которое хочу использовать вместо объекта-утверждения, в таблицу, но, похоже, это не оказывает никакого влияния, также я не знаю, как база данных сопоставляется с поставщиками удостоверений, которые я добавляю в код . Буду рад любым подсказкам о следующих шагах или, если вы знаете какие-либо примеры, было бы еще лучше.
P.S .: Уже есть некоторые вопросы по этой теме, но все они либо до того, как была доступна реализация WSFederation .Net Core, либо относятся к образцу для WSFederation-server, но не для клиента.