Я довольно новичок в .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, и жюри подстроило действие входа в систему, чтобы перенаправить прямо в ADFS, а не запрашивать для Это.
Пожалуйста, дайте мне знать, если вам нужно разъяснение, но суть его такова:
Как мне получить групповые утверждения из ADFS в ASP.NET Core Identity, чтобы я мог ссылаться на них следующим образом:
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdminGroup", policy =>
policy.RequireClaim("Group", "AD Admin Group Name")
);
});
Кроме того, не стесняйтесь указывать мне на любой ответ, который я пропустил. Целый день читал документы и искал в Интернете, а сегодня совсем не продвинулся!