Как я могу получить Azure AD-аутентификацию из. Net Core программы для Angular приложения - PullRequest
0 голосов
/ 03 августа 2020

У меня есть программа. Net Core 3.1, в которой размещено приложение Angular 10. Приложение Angular имеет страницу входа, где пользователь может ввести имя пользователя и пароль, которые отправляются в функцию входа в систему. Net Core, которая возвращает токен oAuth, который используется во всех вызовах API из Angular. Токен возвращается только после того, как имя пользователя и пароль проверяются в базе данных. Я хотел бы, чтобы в форме входа в систему была кнопка «Войти с помощью Microsoft», которую пользователь мог бы щелкнуть вместо ввода имени пользователя и пароля. Я бы хотел, чтобы основное приложение. Net затем вызвало Azure Active Directory и получило токен. Если пользователь уже вошел в систему Azure AD, он просто вернет токен, в противном случае он запросит у пользователя их учетные данные Active AD, а затем вернет токен после успешного входа в систему. Программа. Net Core могла бы тогда запросить токен Azure AD (вместо проверки имени пользователя и пароля в базе данных), и, если все в порядке, он вернет токен oAuth в приложение Angular. Я понимаю большую часть этого, кроме кода в. Net Core, чтобы сделать следующее:

  1. Проверить, вошел ли пользователь уже в Azure AD, и если не запрашивать пользователя для входа в систему Azure AD
  2. Сделайте запрос в Azure AD для отправки токена для аутентифицированного пользователя

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 05 августа 2020

При входе пользователя в систему с помощью Azure AD существует поток с указанием c, которому вы должны следовать . Как и в случае с библиотекой Angular, библиотека Microsoft.IdentityModel может скрыть от вас большую часть этой сложности. Поскольку вы используете Angular, обработка части входа в систему в вашем SPA будет проще, но вам это не обязательно.

Существует пример приложения, которое специально реализует аутентификацию AAD с Angular и. NET Ядро: https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnetcore-webapi

Также есть руководство, в котором рассматриваются несколько различных сценариев ios, включая пример приложения, которое вы, возможно, захотите изучить: https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/

Вы на правильном пути, имея две конечные точки входа в ваш API. Основная проблема заключается в том, что ваш API обрабатывает фактический вход в систему. Если вам нужно, чтобы Azure AD аутентифицировал пользователя, вы должны всегда обрабатывать это Azure AD в браузере. Поскольку их логин Microsoft предназначен не только для вашего сайта, пользователь может предоставить их вам в любой момент - это огромный риск для безопасности. Если в их учетной записи включен двухфакторный режим, ваш API не сможет выполнить аутентификацию, даже если у вас есть их имя пользователя и пароль.

Если пользователь вошел в систему Azure AD, но не на вашем сайте, им не будет предложено снова войти в систему. Они могут на короткое время увидеть всплывающее окно или перенаправить, но Azure AD немедленно отправит их обратно на ваш сайт с токеном для вашего API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...