Мы пытаемся следовать этому руководству и запускаем управляемую клиентом аутентификацию на Android.Вот как мы настроили наше приложение в Azure AD B2C:
Затем в мобильных приложениях Azure мы включаем аутентификацию Azure AD:
, где Issuer Url
оканчивается на v2.0/.well-known/openid-configuration
и содержит идентификатор клиента B2C, взятый из портала Azure (каталог + меню подписки).
Затем в Xamarinу нас есть следующий код:
ADB2CClient = new PublicClientApplication(Constants.ClientID, // "48ab01cc-***********-73ef6c616da5"
Constants.Authority); // https://login.microsoftonline.com/tfp/{Tenant}/{Policy name}/oauth2/v2.0/authorize
ADB2CClient.RedirectUri = Constants.RedirectUri; // "msal{ClientID}://auth
authenticationResult = await ADB2CClient.AcquireTokenSilentAsync(
Constants.Scopes, // empty array
GetUserByPolicy(ADB2CClient.Users,
Constants.PolicySignUpSignIn), // Policy name from AD B2C
Constants.Authority, // https://login.microsoftonline.com/tfp/{Tenant}/{Policy name}/oauth2/v2.0/authorize
true);
var payload = new JObject();
if (authenticationResult != null && !string.IsNullOrWhiteSpace(authenticationResult.IdToken))
{
payload["access_token"] = authenticationResult.IdToken;
}
User = await TodoItemManager.DefaultManager.CurrentClient.LoginAsync(
MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,
payload);
В результате мы можем получить действительный токен JWT (IdToken
) из метода AcquireTokenSilentAsync
, но каждый раз, когда мы пытаемся запустить LoginAsync
, мы получаем401
со следующей трассировкой стека:
{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: у вас нет разрешения на просмотр этого каталога или страницы.
Когда мы пытаемсядля просмотра журналов службы приложений Azure просто говорится, что
Приложение: 2019-02-28T10: 09: 30 PID [7924] Ответ на отправку информации: 401,83 Несанкционированный
безлюбые дополнительные детали.
Остальная часть кода охватывает образец длям гитхуб