2016-01-28 17 views
9

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

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

Gina

+0

Пожалуйста, отметьте ответ, если он отвечает на ваш вопрос –

ответ

5

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

Согласно Azure Active Directory B2C preview: Limitations & Restrictions

/сервера приложений на стороне Демонов

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

+2

я продолжаю надеяться, что документ находится вне даты и они освободят эту функцию. – ginalster

+0

Было бы неплохо, если бы они пошли и закончили! –

+0

Я предполагаю, что случай использования @ginalster немного по-другому (как и мой). В этом случае у пользователя есть доступ к аутентификации (указать имя пользователя и пароль), но он не хочет выполнять это через URL-адрес перенаправления. то есть он хочет создать весь пользовательский опыт в своем приложении – Mike

0

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

+2

Насколько я знаю, Azure AD поддерживает только адреса электронной почты домена (johndoe @ mydomaincom), а не адрес электронной почты конкретного пользователя (janedoe @ hotmail, [email protected] ...). Надеюсь, что Azure AD B2C скоро допустит аутентификацию/контроль API. Другие службы CIAM, такие как LoginRadius, уже разрешают это. – ginalster

0

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

0

Что вы ищете учетных данные пароля владельца ресурса Owin в в azure AD b2c. Вы можете обратиться https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/13817784-add-support-for-resource-owner-password-credential и upvote для этой функции должны быть реализованы

+1

После прочтения этого: [Почему учетные данные пароля владельца ресурса не являются аутентификационными и не подходят для современных приложений] (https://www.scottbrady91.com/OAuth/Why-the-Resource-Owner-Password-Credentials-Grant- Type-is not-Authentication-nor-Appro-for-Modern-Applications), похоже, что Client Credential Flow является более подходящим потоком. – spottedmahn

+0

У них теперь есть это. [Инструкции здесь] (https://docs.microsoft.com/en-us/azure/active-directory-b2c/configure-ropc) – spottedmahn

0

еще в предварительном просмотре (по состоянию на январь 2018 года), но может быть то, что вы ищете, если вы используете Azure функции. Взгляните на Microsoft Graph bindings for Azure Functions

1

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

  1. Define an Azure AD App для Web API
  2. Define an Azure AD App в сервисный счет
  3. Настройка веб-API, чтобы принимать маркеры от вашего B2C Арендатором и Azure AD
  4. Запрос маркер доступа к учетной записи службы AD App для Web API

Примечание: убедитесь, что для создания приложения Azure AD под вашим арендатором B2C.


фрагмент кода, чтобы получить маркер доступа от C#

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") 
     , new KeyValuePair<string, string>("client_secret", "[client secret defined in the service account]") 
     , new KeyValuePair<string, string>("scope", "[App ID URI of the web api azure ad app]/.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"]; 
} 

Вы, вероятно, хотите, чтобы определить некоторые пользовательские требования (ы) для защиты Web API. См. 'Application Permissions' here.

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

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

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

{ 
    "roles": [ 
    "some-claim" 
    ] 
} 

Пожалуйста upvote the user voice feedback item сделать это проще :)

Смежные вопросы