Как можно аутентифицировать приложение с помощью Azure AD

Я пытаюсь настроить приложение для проверки личности с помощью Azure AD и получить токен, чтобы разрешить доступ к безопасному API. Интерфейсное приложение написано на угловом и допускает анонимный доступ. Что можно использовать для доступа к проверке подлинности AAD и возврата маркера доступа?

Это будет пользовательский интерфейс angular 6+, который взаимодействует с безопасным .Net API, используя Azure AD для аутентификации. Я провел пару дней исследований, и все указывает на то, что пользователь входит в систему для аутентификации с помощью страницы входа. Мне нужно, чтобы это было приложением и открывало страницу входа. Я попробовал пару примеров, где использовалась аутентификация/авторизация, и это не сработало, потому что приложению необходимо авторизовать пользователя для общения с API. Я видел, как люди использовали график Microsoft, но опять же он был основан на пользователях, и они были перенаправлены на вход в систему Azure. Я ищу решение, которое позволит мне настроить учетную запись в Azure Ad и аутентифицировать приложение при запуске, чтобы получить токен доступа, чтобы разрешить связь с моим безопасным API. Если я что-то упустил в своих исследованиях и попытках тестирования, дайте мне знать. Это моя первая попытка авторизации в Azure AD, и мне кажется, что я что-то упустил для авторизации приложений.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
211
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в том, что приложение Angular — это то, что мы называем публичным клиентом. Он не может хранить секреты и, следовательно, не может доказать свою личность. Таким образом, общедоступные клиенты должны использовать только потоки аутентификации на основе пользователей.

С другой стороны, конфиденциальные клиенты могут хранить секреты, поскольку они работают на серверах, которые вы контролируете. Так, например, серверное веб-приложение или API может быть конфиденциальным клиентом. Они могут использовать поток учетных данных клиента для получения токенов доступа и вызова API от своего имени без участия пользователя.

В вашем вопросе есть немного фундаментальной проблемы. Для вашего API требуется аутентификация, но вы хотите, чтобы функциональность была доступна анонимным пользователям. Итак, вы хотите обойти аутентификацию.

Если вы действительно хотите обойти аутентификацию для частей API, вы можете просто сделать эти конечные точки доступными анонимно без токена.

Понимаю. Я больше изучал это и наткнулся на эту статью, которая позволяет мне получить токен с помощью AAD. Я достигаю этого, регистрируя приложение с помощью AAD и предоставляя секрет и идентификатор клиента. Теоретически я могу использовать этот токен для аутентификации в моем AAD сейчас для авторизации в моем API, верно? docs.microsoft.com/en-us/azure/active-directory/develop/…

Kyle Pearson 10.04.2019 19:56

Да, это тот поток, который я упомянул, который может использоваться приложениями, у которых нет кода, работающего на устройстве, которое вы не контролируете. Например, внутренние веб-приложения и службы, работающие на серверах. Вы не можете использовать этот поток из внешнего интерфейса Angular. У вас может быть внутренний API, который получает токен, используя учетные данные клиента, а затем перенаправляет запрос в реальный API. Но это, по сути, то же самое, что сделать эти части API общедоступными.

juunas 10.04.2019 19:59

у вас уже есть хорошее объяснение от @juunas .. Я просто добавлю, что если вы исследуете конкретные потоки, OAuth2 implicit grant flow будет подходящим для углового приложения SPA (общедоступный клиент) .. и для аутентификации потребуется взаимодействие с пользователем . Подробнее здесь.. docs.microsoft.com/en-us/azure/active-directory/develop/…

Rohit Saigal 11.04.2019 00:59

Другие вопросы по теме