При входе пользователя в систему с помощью 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.