Я пытаюсь настроить приложение для проверки личности с помощью Azure AD и получить токен, чтобы разрешить доступ к безопасному API. Интерфейсное приложение написано на угловом и допускает анонимный доступ. Что можно использовать для доступа к проверке подлинности AAD и возврата маркера доступа?
Это будет пользовательский интерфейс angular 6+, который взаимодействует с безопасным .Net API, используя Azure AD для аутентификации. Я провел пару дней исследований, и все указывает на то, что пользователь входит в систему для аутентификации с помощью страницы входа. Мне нужно, чтобы это было приложением и открывало страницу входа. Я попробовал пару примеров, где использовалась аутентификация/авторизация, и это не сработало, потому что приложению необходимо авторизовать пользователя для общения с API. Я видел, как люди использовали график Microsoft, но опять же он был основан на пользователях, и они были перенаправлены на вход в систему Azure. Я ищу решение, которое позволит мне настроить учетную запись в Azure Ad и аутентифицировать приложение при запуске, чтобы получить токен доступа, чтобы разрешить связь с моим безопасным API. Если я что-то упустил в своих исследованиях и попытках тестирования, дайте мне знать. Это моя первая попытка авторизации в Azure AD, и мне кажется, что я что-то упустил для авторизации приложений.
Проблема в том, что приложение Angular — это то, что мы называем публичным клиентом. Он не может хранить секреты и, следовательно, не может доказать свою личность. Таким образом, общедоступные клиенты должны использовать только потоки аутентификации на основе пользователей.
С другой стороны, конфиденциальные клиенты могут хранить секреты, поскольку они работают на серверах, которые вы контролируете. Так, например, серверное веб-приложение или API может быть конфиденциальным клиентом. Они могут использовать поток учетных данных клиента для получения токенов доступа и вызова API от своего имени без участия пользователя.
В вашем вопросе есть немного фундаментальной проблемы. Для вашего API требуется аутентификация, но вы хотите, чтобы функциональность была доступна анонимным пользователям. Итак, вы хотите обойти аутентификацию.
Если вы действительно хотите обойти аутентификацию для частей API, вы можете просто сделать эти конечные точки доступными анонимно без токена.
Да, это тот поток, который я упомянул, который может использоваться приложениями, у которых нет кода, работающего на устройстве, которое вы не контролируете. Например, внутренние веб-приложения и службы, работающие на серверах. Вы не можете использовать этот поток из внешнего интерфейса Angular. У вас может быть внутренний API, который получает токен, используя учетные данные клиента, а затем перенаправляет запрос в реальный API. Но это, по сути, то же самое, что сделать эти части API общедоступными.
у вас уже есть хорошее объяснение от @juunas .. Я просто добавлю, что если вы исследуете конкретные потоки, OAuth2 implicit grant flow
будет подходящим для углового приложения SPA (общедоступный клиент) .. и для аутентификации потребуется взаимодействие с пользователем . Подробнее здесь.. docs.microsoft.com/en-us/azure/active-directory/develop/…
Понимаю. Я больше изучал это и наткнулся на эту статью, которая позволяет мне получить токен с помощью AAD. Я достигаю этого, регистрируя приложение с помощью AAD и предоставляя секрет и идентификатор клиента. Теоретически я могу использовать этот токен для аутентификации в моем AAD сейчас для авторизации в моем API, верно? docs.microsoft.com/en-us/azure/active-directory/develop/…