我们正在尝试遵循this教程,并在Android上运行客户端管理的身份验证。这是我们在Azure AD B2C中配置应用程序的方式:
然后在Azure移动应用中启用Azure AD身份验证:
其中Issuer Url
以v2.0/.well-known/openid-configuration
结尾,并包含从Azure门户(目录+订阅菜单)获取的B2C租户ID。
然后在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);
因此,我们可以从IdToken
方法中获取有效的JWT令牌(AcquireTokenSilentAsync
),但是每次尝试运行LoginAsync
时,我们都会得到401
具有以下堆栈跟踪:
{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:您无权查看此目录或页面。
当我们尝试查看Azure App Service日志时,它只是说
应用程序:2019-02-28T10:09:30 PID [7924]信息发送响应:401.83未经授权
没有任何其他详细信息。
其余代码涵盖了github
中的示例答案 0 :(得分:0)
我们已经查看了此文档/样本,并可以确认需要重新进行更新,因为它不再准确。我们正在内部进行刷新。
感谢与我们保持联系。