Правильно ли это для приложения React на внешнем интерфейсе и приложения Express на серверной части для проверки подлинности и авторизации пользователей с помощью Azure AD?

  1. У меня есть приложение React на интерфейсе, я зарегистрировал его в Azure AD как REACT_AZURE и использую пакет @azure / msal-response npm для аутентификации пользователя.

  2. Чтобы защитить свои экспресс-маршруты, я зарегистрировал другое приложение в Azure AD как API_AZURE, а в разделе «Предоставить API» добавил область «access_as_user».

  3. В приложении REACT_AZURE в разделе «Разрешения API» я добавил разрешение для «access_as_user». Теперь я могу получить токен доступа для области «access_as_user» и выполнить вызов API к моему экспресс-серверу.

  4. В моем защищенном маршруте я использую Passport-azure-ad BearerStrategy для проверки токена доступа, если он действителен, я имею право на получение ресурсов.

Это правильный поток? Нужно ли мне регистрировать два приложения в Azure AD? если нет, как мне это сделать правильно?

1 ответ

Это правильный поток? Нужно ли мне регистрировать два приложения в Azure AD? если нет, как мне это сделать правильно?

Конечно, ваш процесс абсолютно правильный. Вам необходимо зарегистрировать два приложения в Azure, одно из которых представляет клиентское приложение, а другое - приложение api. Затем откройте api приложения api и добавьте клиентское приложение в приложение api. Затем позвольте пользователю войти в клиентское приложение, чтобы завершить аутентификацию и получить токен, и использовать токен для вызова API. Я уже отвечал на подобные вопросы раньше, вы можете обратиться к нему.

Но я не уверен, хотите ли вы контролировать, какие пользователи могут получить доступ к API в зависимости от роли пользователя. Если вы хотите, чтобы только определенные пользователи в клиенте имели доступ к api, вы можете добавить шаг, который должен создать роль приложения и предоставить пользователям, которым вы хотите получить доступ к api. Тогда пользователи в клиенте, которым не предоставлена роль приложения , не будут иметь разрешения на доступ к API. см. более подробный ответ.

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