Я довольно новичок в .net core 2.1, я подумал, что если я собираюсь построить / перестроить проект, я мог бы также использовать новую вещь. Поэтому я некоторое время боролся с идентификацией ядра ASP.NET - документация, безусловно, оставляет желать лучшего.
Я успешно ввел аутентификацию - я перенаправляю на свою ADFS и снова, и пользователи входят в систему.
Тогда я начал просматривать Авторизацию. Сначала я попробовал на основе ролей, но я прочитал, что роли не используются, и, кроме того, я не мог понять, почему роли, назначенные пользователям, не проходят проверки авторизации (ClaimsPrincipal.IsInRole и политики для страниц бритв).
Я решил использовать авторизацию на основе утверждений, полагая, что могу использовать утверждения, предоставленные через WS-Federation, - я отправляю несколько (имя, имя, адрес электронной почты, группа), где группа представляет собой неполный список членство в группах в виде строк - однако я не вижу ни одной из этих претензий в ClaimsPrincipal (HttpContext.User) после входа в систему.
прерывая поток при входе в систему, я вижу, что вызов
_signInManager.GetExternalLoginInfoAsync()
определенно получает ожидаемые претензии от ADFS, но явно не понимает, что происходит после этого.
Как я уже сказал, я довольно туманный по поводу того, как это работает внутри и TBH. На самом деле я не хочу слишком глубоко разбираться в мелочах, мне просто нужно знать, что я могу авторизоваться на основе групповых утверждений из ADFS.
Мой проект в большей или меньшей степени является стандартным веб-сайтом asp.net core 2.1 по умолчанию с выбранной авторизацией отдельных учетных записей, затем я добавил изменения для WS-Federation и присяжным выполнил действие Login для прямого перенаправления в ADFS. чем подсказать.
Пожалуйста, дайте мне знать, если вам нужно разъяснение, но суть этого:
Как получить групповые заявки из ADFS в удостоверение ядра ASP.NET , чтобы я мог ссылаться на них следующим образом:
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdminGroup", policy =>
policy.RequireClaim("Group", "AD Admin Group Name")
);
});
Кроме того, не стесняйтесь направлять меня на любой пропущенный мной ответ. Читал документы и искал в интернете целый день, а сегодня совсем не прогрессировал!