.netcore создать пользователя в Azure AD B2C из мобильного приложения с использованием Microsoft Graph API

#.net-core #mobile #microsoft-graph-api #azure-ad-b2c #azure-identity

#.net-core #Мобильный #microsoft-graph-api #azure-ad-b2c #azure-identity

Вопрос:

Я ищу наилучшие методы обеспечения безопасности для создания нового пользователя из мобильного приложения в Azure AD B2C. Между мобильным приложением и Azure AD (B2C) есть веб-API .netcore, который будет запускаться с учетной записью службы. Эта служба должна быть авторизована для создания новых пользователей в Azure AD B2C.

Сегодня я смог внедрить следующее:

  1. Мобильное приложение подключается к ВЕБ-API
  2. ВЕБ-API запрашивает токен доступа к Azure AD, используя поток учетных данных клиента OAuth 2.0 (идентификатор приложения секрет клиента).
  3. Azure AD B2C возвращает токен в ВЕБ-API
  4. ВЕБ-API использует Microsoft Graph API для создания пользователя.

Для шага 4 мое приложение Azure зарегистрировано с разрешениями API «User.ReadWrite.Все», поскольку ВЕБ-API .net core должен иметь возможность создавать нового пользователя.

Все это только с помощью пакетов nuget Azure.Идентификация и Microsoft.График.

Я следовал этому подходу:

https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow#get-a-token

У меня есть несколько сомнений, а именно:

  1. Конечная точка «register» (веб-API my .netcore) не требует никакой аутентификации. Конечно, он должен быть открыт, чтобы новые пользователи могли зарегистрироваться. Мы введем 2FA, мы могли бы рассмотреть возможность применения некоторого регулирования для каждого клиента. В целом, устройство должно иметь возможность создавать только одного пользователя.
  2. В приведенном выше документе Microsoft написано: «Когда это возможно, мы рекомендуем вместо этого использовать поддерживаемые библиотеки аутентификации Microsoft (MSAL) для получения токенов и вызова защищенных веб-API. Также взгляните на примеры приложений, которые используют MSAL.». Я не думаю, что это возможно, поскольку я не хочу иметь атрибут авторизации в конечной точке реестра. Опять же, он должен быть открыт.
  3. В [схема протокола] [1] упоминается, что рекомендуется подписать пользователя в приложение. Опять же, я не могу этого сделать до регистрации нового пользователя, что приведет к созданию новой учетной записи пользователя.

Будут высоко оценены любые советы / подтверждения того, что мои три приведенных выше утверждения и мой общий подход верны и не приводят к плохому дизайну безопасности.

С наилучшими пожеланиями,

Николас