#azure-ad-b2c
#azure-ad-b2c
Вопрос:
Можно ли реализовать базовую стратегию аутентификации в моем API с помощью Azure AD B2C? Я исследовал Интернет, но там нет документа для этой политики. Сценарий, который я собираюсь реализовать, таков:
Существует API, который я хочу защитить с помощью Azure AD B2C. Клиенты могут вызывать API-интерфейсы с предоставленным user amp; pass и получать свои данные
Комментарии:
1. Привет, @Navid Ahrary Если один из ответов решит вашу проблему, вы можете принять его, чтобы завершить поток. ( нажмите на галочку рядом с ответом, чтобы переключить его с выделенного серым цветом на заполненный 🙂
Ответ №1:
Вся идея B2C заключается в том, что пользователи не обмениваются паролями с вашим API. Вместо этого они переходят к B2C (интерактивным или неинтерактивным способом) и получают токен. Используя этот токен, они вызывают ваш API, и ваш API проверяет этот токен. Однако, если вы по-прежнему считаете, что это единственный и неповторимый способ создания вашего приложения, вы можете сделать так: из серверной части вы можете запросить токен для своих пользователей, используя политику «Вход с использованием учетных данных пароля владельца ресурса (ROPC)».
Для выполнения этой работы вам необходимо настроить B2C, создать эту политику, а затем использовать ее с кодом, похожим на этот (C #):
var client = new RestClient("https://yourtenant.b2clogin.com/yourtenant.onmicrosoft.com/B2C_1_ropc/oauth2/v2.0/token");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData = true;
request.AddParameter("username", "YOUR_USERNAME");
request.AddParameter("password", "YOUR_PASSWORD");
request.AddParameter("grant_type", "password");
request.AddParameter("scope", "openid offline_access https://yourtenant.onmicrosoft.com/your_app_name/user_impersonation");
request.AddParameter("client_id", "YOUR_CLIENT_ID");
request.AddParameter("response_type", "token id_token");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
где B2C_1_ropc — созданное вами имя политики
Ответ №2:
Идея, предоставленная @Georgy Grigoryev, верна, но необходимо добавить более подробный процесс работы:
Согласно вашему вопросу: вы хотите предоставить API, защищенный Azure, а затем войти в систему для пользователя и вызвать API для получения их данных.
Вам необходимо создать 2 приложения на портале Azure AD B2C, одно из которых представляет клиентское приложение, а другое — приложение api, затем использовать пользователя для входа в клиентское приложение и использовать клиентское приложение для доступа к приложению api.
Во-первых, вам необходимо предоставить api внутреннего приложения:
Затем добавьте область, предоставляемую приложением api, в клиентское приложение (вы можете найти свои открытые разрешения api в разделе Мои API), чтобы клиент мог получить доступ к API, а затем предоставить согласие администратора на получение разрешения.
Наконец, вам необходимо создать поток пользователей владельца ресурса и войти в систему пользователей для получения токенов доступа.