ReactJS &. Net Базовое приложение с "тихой" локальной аутентификацией Active Directory - PullRequest
0 голосов
/ 02 апреля 2020

Я создаю внутреннее приложение React SPA с. Net Core 2.2 back-end.

Компания использует AD, и как только пользователь входит на свою рабочую станцию ​​Windows, он должен иметь доступ к этому приложению anet без необходимости ввода имени пользователя / пароля для аутентификации - приложение следует «забрать» windows учетные данные пользователя, молча запросить AD для получения сведений об учетной записи в фоновом режиме и аутентифицировать / авторизовать пользователя на основе этих данных, а также внутренних разрешений приложения / logi c.

Теперь проблема с React SPA заключается в том, что он не может получить Windows идентификационные данные пользователя или запросить AD напрямую без необходимости ввода пользователем своих учетных данных (или, я так думаю). Я видел несколько постов, предлагающих использовать JWT, но я мог бы использовать это только после первоначальной аутентификации.

Поэтому я планирую попробовать это: enter image description here

  1. Windows - пользователь, прошедший проверку подлинности, вводит URL-адрес приложения
  2. . Получает доступ к. Net Базовому контроллеру
  3. Контроллер получает Windows удостоверения пользователя, молча запрашивает сервер AD для любого добавления 'l info
  4. Сервер AD возвращает данные AD пользователя на контроллер и упаковывает их в токен JWT или в какой-либо объект данных пользователя
  5. Контроллер возвращает представление в виде индекса. html как реакция SPA вместе с «упакованным» токеном, который отправляется в контекст React или хранилище Redux.
  6. , который отображается в браузере для конечного пользователя
  7. .. с тех пор он функционирует как обычный SPA, взаимодействующий с сервером Конечные точки API.

Вопросы:

  • A. Будет ли это работать?
  • B. Есть ли лучший / более эффективный способ реализации «тихой» внутренней аутентификации AD с React SPA?
  • C. Есть ли какие-нибудь библиотеки / инструменты, которые я могу использовать, чтобы сделать это проще?
  • D. Я читал о библиотеке MSAL от Microsoft, но, похоже, она работает только для Azure и все равно требует имя пользователя / пароль?
...