почему accessToken имеет значение null в аутентификации AuthenticationResult B2 C? - PullRequest
0 голосов
/ 14 января 2020

Я работаю над проектом xamarin.form. Я добавляю аутентификацию B2 C в соответствии с этим примером: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/authentication/azure-ad-b2c Я копирую и вставляю точно, а методы не меняю. теперь это работает, но проблема в параметре AuthenticationResult ar, токен доступа равен нулю, а также истекает срок действия. Я не могу ее решить. Я приложил изображение содержания AuthenticationResult Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Ответы [ 3 ]

1 голос
/ 20 января 2020

Выполните следующие действия, чтобы создать рег API-приложения Web для представления вашего ресурса, и назначьте своему внешнему доступу Reg Reg конец доступа к ресурсу (разрешение). https://docs.microsoft.com/en-us/azure/active-directory-b2c/add-web-application?tabs=applications

Затем запрос авторизации должен предоставить идентификатор API и имя области в параметре scope запроса аутентификации, чтобы получить код авторизации, который будет использован для токена доступа: https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-access-tokens

Чтобы заставить MSAL сделать это за вас, сделайте следующее:
AuthenticationResult result = await App.AuthenticationClient.AcquireTokenSilent(Constants.Scopes, accounts.FirstOrDefault())

Область действия будет массивом и должна содержать URI идентификатора. / ScopeName приложения Web API Reg, которое вы настроили выше.

https://github.com/xamarin/xamarin-forms-samples/blob/e546c7cbc8ed20b724e742598bffac68b25c7f88/WebServices/AzureADB2CAuth/ADB2CAuthorization/LoginPage.xaml.cs#L25

0 голосов
/ 06 февраля 2020

У вас неверное значение области. Токены доступа предназначены для доступа к защищенным ресурсам, таким как веб-API. Области - это способ управления разрешениями для этих защищенных ресурсов. Области используются веб-API для реализации контроля доступа на основе области.

Например, чтобы указать значение области read для API с идентификатором URI идентификатора приложения https://contoso.onmicrosoft.com/api, область действия будет https://contoso.onmicrosoft.com/api/read.

в AAD B2 C портал, вы бы все это настроили.

Например, в этом примере клиентское приложение запрашивает разрешение на эту apiEndpoint https://fabrikamb2chello.azurewebsites.net/hello - эту область действия https://fabrikamb2c.onmicrosoft.com/helloapi/demo.read

который устанавливается в разделе портала AAD B2 C. В моем веб-интерфейсе (называемом HelloApi) я настроил области действия: enter image description here

Затем в том же разделе AAD B2 C я go для своего клиентского приложения, (называется AzureAD B2 C Playground), а в разделе «Доступ к API» я добавляю ссылку на HelloApi и определяю, к каким областям будет иметь доступ это приложение. enter image description here

Вернувшись в клиентское приложение, я должен убедиться, что у меня есть установленный clientId, политики и Uri перенаправления, а также обновлены значения для области веб-API и ApiEndpoint. Теперь, когда все подключено к порталу AAD B2 C, вы должны получить токен доступа для этого ресурса (Web Api).

См. этот пример для получения подробной информации

См. токены доступа в AAD B2 C

См. области действия в AAD B2 C

0 голосов
/ 14 января 2020

Пожалуйста, убедитесь, что вы выполнили следующие шаги:

  • В Azure B2 C Blade выберите Application и установите URL-адрес ответа на адрес Azure Экземпляр мобильных приложений (e.g. https://App.azurewebsites.net), followed by /.auth/login/aad/callback

  • в блейде выберите поставщика AAD, go для расширенного доступа и настройте идентификатор клиента и URL-адрес эмитента, причем идентификатор клиента является идентификатором приложения для Azure Active Directory B2 C, а URL-адрес эмитента является конечной точкой метаданных для политики Azure Active Directory B2 C

Дополнительная ссылка:

Xamarin Microsoft.Identity.Client AuthenticationResult AccessToken имеет значение null

https://github.com/Azure-Samples/active-directory-b2c-xamarin-native/issues/24

Пожалуйста, проверьте правильность приведенных ниже действий c шаги:

https://github.com/Azure-Samples/active-directory-b2c-xamarin-native/commit/076ed31f3af9c82cd131efcc97d32f1c4fe6cb57

Надеюсь, это поможет.

...