Безглавная аутентификация Azure AD b2c

Я ищу способ аутентификации пользователя по имени пользователя/паролю безгласным способом для Azure AD b2c. Azure AD b2c велик, но мы чувствуем, что перенаправления для логинов могут привести к путанице среди клиентов (а иногда даже предотвращаются некоторыми браузерами). Также мы хотим полностью контролировать опыт пользователей UX.

Я исследовал ADAL и Graph API, но пока ничего не нашел.

Джина

Ответ 1

Как упоминалось здесь, вы можете использовать приложения Azure AD для потока учетных данных клиента для учетных записей служб. Это не оптимально, но работает.

  1. Определите приложение Azure AD для веб-API
  2. Определите приложение Azure AD для каждой учетной записи службы
  3. Настройте веб-API для приема токенов от клиента B2C и Azure AD.
  4. .Запрос токена доступа к приложению AD учетной записи службы для веб-API

Примечание. Обязательно создайте приложения Azure AD под своим клиентом B2C.


Фрагмент кода для получения токена доступа из С#

using (var httpClient = new HttpClient())
{
    httpClient.BaseAddress = new Uri("https://login.microsoftonline.com");

    var content = new FormUrlEncodedContent(new[]
    {
          new KeyValuePair<string, string>("grant_type", "client_credentials")
        , new KeyValuePair<string, string>("client_id", "[service account app id e.g. 10d635e5-7615-472f-8200-a81d5c87c0ca")
        , new KeyValuePair<string, string>("client_secret", "[client secret defined in the service account e.g. 5L2ZJOBK8GI1wRSgGFooHcBkAOUOj65lQd9DgJxQOrw=]")
        , new KeyValuePair<string, string>("scope", "[App ID URI of the web api azure ad app]/.default e.g. https://my-b2c-tenant.onmicrosoft.com/my-azure-ad-ap/.default")
    });

    var requestResult = await httpClient.PostAsync("/[your b2c tenant].onmicrosoft.com/oauth2/v2.0/token", content);
    var contentResult = await requestResult.Content.ReadAsStringAsync();

    var json = JObject.Parse(contentResult);
    var accessToken = (string)json["access_token"];
}

App ID URI

app id uri screenshot


Возможно, вы захотите определить некоторые пользовательские утверждения для защиты веб-API. См. "Разрешения приложений" здесь.

  1. Измените манифест приложения в приложении Azure AD Web API

    {
        "appRoles": [{
                "allowedMemberTypes": [
                    "Application"
                ],
                "displayName": "Some display nane",
                "id": "[create a new guid]",
                "isEnabled": true,
                "description": "Allow the application to _____ as itself.",
                "value": "the-blah-role"
            }
        ]
    }
    
  2. Предоставьте разрешение учетной записи службы Azure AD App определенным пользовательским разрешениям приложения

Разрешения, предоставленные учетной записи службы, будут возвращены в претензии roles:

{
  "roles": [
    "the-blah-role"
  ]
}

Чтобы сделать это проще, добавьте голосового отзыва пользователя 😀

Ответ 2

В настоящее время невозможно запустить Azure B2C без присутствия интерактивного пользователя. Хотя я уверен, что он прибудет в какой-то момент, в настоящее время вы не можете создавать back-end приложения на основе B2C.

В соответствии с Предварительный просмотр Azure Active Directory B2C: ограничения и ограничения

Демоны/серверные приложения

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

Ответ 3

Если вы хотите использовать безгласную аутентификацию, почему бы вам просто не использовать Azure AD? Он имеет API. И если вы намереваетесь самостоятельно создавать и управлять всем пользовательским интерфейсом, зачем вам нужен AD B2C?

Ответ 4

Azure AD B2C не может предлагать безгласную аутентификацию, но объединение таможенные маршруты
суетные домены и индивидуальный стиль его возможности для пользователей никогда не покидать ваш сайт