Вот моя среда разработки:ASP Net MVC Жила - Загрузка данных пользователя из Active Directory, когда пользователь просматривает любой страницы,
- Intranet Сайт
- аутентификации Active Directory/авторизацию
- Asp Net Ядро
Я пытаюсь получить данные, хранящиеся в атрибутах Active Directory, когда пользователь впервые входит на любую страницу нашего приложения. Все права и разрешения пользователей, employeeid, studentid и т. Д. Хранятся в атрибутах AD и Группы безопасности. Некоторые атрибуты также должны отображаться на веб-сайте.
Скажем, мой сайт получил следующие ссылки ...
- http://mysite/Home/Index
- http://mysite/Student/Index
- http://mysite/Student/MyJobs
- http://mysite/Staff/Applications
и т.д ....
Любые пользователи могут свободно перемещаться по сайтам/URL-адресам веб-сайта с других порталов Intranet, и я не знаю, где я должен писать код для выполнения этих критериев. Проблема заключается в том, что нет конкретной точки входа в приложение, например, http://mysite/Login или Authenticate и т. Д. Если есть, я мог бы загружать все данные и права пользователей из AD в эту единственную точку входа.
В эпоху MVC5 я использовал Custom Global Authorize Attribute и поместил его на BaseController, наследуемый от всех других контроллеров для загрузки данных AD. Я поместил данные AD в Session при первом попадании и использовал Static Class для отображения в представлениях и использования в контроллерах. Но когда я провел некоторое исследование в MVC Core, некоторые говорят, что он устарел, и я должен использовать политику авторизации вместо пользовательских атрибутов авторизации.
Получение данных из Active Directory уже достигнуто за счет использования старых веб-сервисов, и нам не нужно беспокоиться о том, что ядро .NET не поддерживает AD.
Я просмотрел учебники по вопросам политики и увидел что-то о претензиях и пользовательских менеджерах пользователей. Я не мог решить, какой из них я должен использовать для загрузки данных из Active Directory в объект (вероятно, Scoped Object DI), который длится для всего сеанса пользователя.
Должен ли я загружать данные на претензии атрибутов Ев ...
var claims = new List<Claim>();
claims.Add(new Claim("UserName", "John.Smith", ClaimValueTypes.String, Issuer));
claims.Add(new Claim("RefNo", "02343001", ClaimValueTypes.String, Issuer));
claims.Add(new Claim("Email", "[email protected]", ClaimValueTypes.String, Issuer));
Или я должен написать заказной SignInManager и IdentityUser? Например ...
public class ApplicationUser : IdentityUser
{
public string RefNo { get; set; }
public string Email { get; set; }
}
Есть ли где я мог бы поставить свой код, чтобы проверить данные AD и нагрузки? И хранить данные в этом Заявленном объекте, а не использовать данные сеанса?
Не могли бы вы, ребята, посоветуете мне? Не стесняйтесь критиковать, если я что-то пропущу, и моя идея не работает.
Спасибо, и я думаю, что буду придерживаться подхода к веб-сервисам, который я уже использую во всех других проектах. Я уже смотрел 2 ваших видео об Auths, и я пытаюсь сделать то же самое, создав RequirementHandler и Policy и поместив его на BaseController. Таким образом, информация из AD будет загружаться всякий раз, когда пользователь попадает в любую область моего сайта. Претензии Transformation Middleware - это то, чего я не знал. Я тоже сделаю некоторые исследования. – TTCG
Выполнение этой политики в порядке, просто кэшируйте ее какое-то время для повышения производительности. – blowdart
Новая библиотека для AD <--> ASPNetCore выпущена неделю назад. (https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.ActiveDirectory/). Хотел бы с вами проверить, что это только для проверки подлинности Windows, правильно? Это не имеет никакого отношения к получению данных от AD и Vice Versa. Благодарю. – TTCG