Безопасный API с пользователями Azure AD / B2C

Мой вариант использования:

  • Создание пользователей через API с настраиваемыми полями, назначенный пароль с любого адреса электронной почты
  • Обновите / отключите этих пользователей через API
  • «Войдите» в приложение Azure AD, указав сведения о пользователе через rest API, чтобы получить токен.
  • Делайте авторизованные запросы к веб-API, когда токен передается в заголовке Http

Можно ли всего этого достичь с помощью прямого Azure AD / B2C, или я должен искать другого поставщика удостоверений, например IdentityServer / Auth0?

Изменить 1

Я очень запутался между приложениями / пользователями AAD и приложениями / пользователями B2C, очень мало указаний о том, что использовать в этом случае.

Использование https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet в качестве отправной точки я получаю следующие результаты при подключении идентификатора клиента и секрета из:

  • Azure AD - Веб-приложение типа приложения / Api - работает, может создавать пользователя
  • Azure AD - Тип приложения Собственный - не работает, невозможно создать пользователя
  • Azure B2C - приложение, созданное в Powershell по ссылке - работает, может создавать пользователя, однако я не вижу вновь созданное приложение на портале Azure и не могу вносить изменения.
  • Azure B2C - приложение, созданное в пользовательском интерфейсе B2C - не работает, запрос к Graph Api завершается ошибкой с «недостаточными разрешениями». Я добавил разрешения на чтение / запись вручную в Powershell, но это не сработало.

На данный момент я не знаю, какой подход подходит для моего сценария.


person Matt Rowett    schedule 06.04.2017    source источник


Ответы (1)


Если вы хотите добавить локальные учетные записи в Azure AD B2C, вы можете использовать Azure AD Graph API для этого, чтобы добавить пользователя локальной учетной записи в клиент Azure Active Directory B2C, см. Создайте документ api пользователя (локальной учетной записи).

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

Изменить

Для подключения к Graph API в настоящее время необходимо настроить другое приложение в Azure AD (не в блейд-сервере azure ad b2c):

введите описание изображения здесь В этом приложении вы можете установить ключ приложения и предоставить разрешения на использование Azure AD Graph API. Другой способ - использовать субъект-службу PowerShell и прикрепить 3 разрешения Graph API:

https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-devquickstarts-graph-dotnet/.

После входа пользователя в приложение B2C при вызове api графа вы можете использовать ADAL v2 или v3, чтобы получить токены доступа, которые можно использовать с Azure AD Graph API (с использованием потока учетных данных клиента). Пожалуйста, обратитесь к образцу кода по ссылке выше.

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

Обновление:

Приложение B2C (которое создается в лезвии b2c) может помочь вам войти в систему и зарегистрировать пользователей, но приложение B2C в настоящее время не может получить доступ к API-интерфейсам (в предварительной версии, но не может выбрать какой-либо api на моем портале), поэтому вам нужно использовать приложение AD (в лазурном рекламном блейде), которое может предоставлять разрешение на доступ к другим API, таким как Microsoft Graph API. При переходе по ссылке: https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet, в статье он создает ServicePrincipal, а не приложение, поэтому вы не удалось найти приложение, нажмите здесь для получения дополнительных сведений об объектах приложения и субъекта-службы в Azure Active Directory.

person Nan Yu    schedule 07.04.2017
comment
Спасибо, для ясности могу ли я сделать то же самое с Azure AD и не использовать B2C? И тогда я могу использовать эти данные пользователя для получения токена, действительного для приложений AD? - person Matt Rowett; 09.04.2017
comment
Кроме того, будет ли токен действителен для «приложений» Azure B2C? Приложения AD и B2C - это одно и то же? - person Matt Rowett; 09.04.2017
comment
Да, вы можете использовать api графика AAD для создания рабочей или учебной учетной записи в azure ad и локальной учетной записи в azure ad b2c. Приложения, которые можно интегрировать с Azure AD / Azure AD B2C, чтобы обеспечить безопасный вход и авторизацию для своих служб. В Azure ad и azure ad b2c используется одна и та же концепция. - person Nan Yu; 11.04.2017
comment
Настройки приложения в AAD и B2C сильно различаются. В B2C нет ссылки «Управляемое приложение в локальном каталоге», по которой я мог бы назначать пользователей приложению. Как мне назначить пользователей для приложения B2C? - person Matt Rowett; 11.04.2017
comment
Также нет очевидного способа назначить соответствующие разрешения (такие как создание / обновление пользователей) для приложения B2C, как это возможно с приложением AAD. - person Matt Rowett; 11.04.2017
comment
@MattRowett, я отредактировал свой ответ, чтобы ответить на ваш вопрос, пожалуйста, проверьте это. - person Nan Yu; 12.04.2017
comment
Я должен сказать, что это намного больнее, чем должно быть. Все, что я хочу сделать, это: 1, создать пользователя с настраиваемыми полями 2, получить токен с использованием учетных данных пользователя 3, получить доступ к защищенному API с помощью этого токена. Есть ли где-нибудь простые, полные примеры? - person Matt Rowett; 12.04.2017
comment
Поскольку функция api доступа к b2c-приложению в настоящее время находится на стадии предварительной версии, я боюсь, что вам нужно зарегистрировать другое приложение, которое можно было бы использовать для доступа к api. См. эту ссылку поможет вам в этом. - person Nan Yu; 13.04.2017
comment
Нужно ли мне создавать объект B2C в Poweshell в соответствии с документом как ServicePrincipal или я должен создавать его как приложение B2C в пользовательском интерфейсе, чтобы я мог использовать такие свойства, как App Uri Id? Метод приложения B2C не работает при создании пользователей - недостаточно прав. - person Matt Rowett; 14.04.2017
comment
Вам понадобится приложение B2C, созданное в пользовательском интерфейсе (в колонке b2c), чтобы позволить пользователю входить в систему и регистрироваться, а затем добавить ServicePrincipal в соответствии с документом, чтобы разрешить доступ к API. - person Nan Yu; 14.04.2017
comment
Хорошо, я создал новое приложение B2C (не родное), сгенерировал новый ключ приложения и попытался создать нового пользователя, используя образец B2CClient - я получаю ошибку «недостаточно прав». Должен ли я использовать вместо этого AppPrincipalId и секрет из PowerPrincipal, созданного Powershell? Если да, то какова цель приложения UI B2C? - person Matt Rowett; 14.04.2017
comment
Нужно ли мне каким-то образом связать приложение пользовательского интерфейса и Powershell ServicePrincipal? - person Matt Rowett; 14.04.2017
comment
Вам нужно одно приложение B2C, в этом приложении вы хотите получить доступ к api графика для создания пользователей, но приложение b2c в настоящее время не может получить доступ к apis, поэтому вам нужно другое рекламное приложение Azure (или ServicePrincipal, созданное в PowerShell, как показано в документе), вы можете используйте этот идентификатор приложения для доступа к api (установите разрешение на apis на рекламном портале Azure). Надеюсь, вы понимаете. - person Nan Yu; 17.04.2017
comment
Если я создам приложение B2C в блейде B2C, я не смогу создавать пользователей с использованием идентификатора и секрета. - person Matt Rowett; 18.04.2017
comment
Вы хотите использовать графический интерфейс для создания пользователей? Если да, вам нужно другое рекламное приложение Azure, поскольку приложение B2C в настоящее время не может получить доступ к графическому API. - person Nan Yu; 19.04.2017