Наше приложение перенаправляет на внешнюю учетную запись ADFS для аутентификации, а затем направляет обратно к нам. Я пытаюсь выяснить, как я анализирую информацию о претензиях, как только она возвращается на наш сайт. Проблема, с которой я столкнулся, - найти рабочий пример для .NET Core 2.1. Вот что у меня есть:
services.AddAuthentication(sharedOptions => {
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
})
.AddWsFederation(options => {
options.MetadataAddress = config.Authentication.ADFSMetadataAddress;
options.Wtrealm = config.Authentication.ADFSWtrealm;
options.CallbackPath = "/Auth";
}).AddCookie();
Эта часть работает нормально, я могу войти в систему и получить обратно в свое приложение. Примеры в документации Microsoft показывают реализацию пользовательского ClaimsAuthenticationManager
, подобного этому, для извлечения информации о претензиях:
public class MyClaimsAuthenticationManager : ClaimsAuthenticationManager {
public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal) {
if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true) {
((ClaimsIdentity)incomingPrincipal.Identity).AddClaim(new Claim(ClaimTypes.Role, "Admin"));
}
return incomingPrincipal;
}
}
Но он не может найти этот базовый класс в .NET Core. Я пытался добавить пакеты NuGet для:
Microsoft.AspNetCore.Identity
Microsoft.Extensions.Identity.Core
и даже
System.Security.Claims
но не игра в кости ... есть ли другой способ сделать это в .NET Core?