Azure AD B2C + Azure移动应用程序 - MobileServiceInvalidOperationException

问题描述 投票:2回答:1

我们正在尝试关注this教程并在Android上运行客户端管理身份验证。以下是我们在Azure AD B2C中配置应用程序的方式:

enter image description here

然后在Azure移动应用程序中,我们启用Azure AD身份验证:

enter image description here

其中Issuer Urlv2.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的样本

c# azure xamarin azure-mobile-services azure-ad-b2c
1个回答
0
投票

我们已经看过这个文档/样本,并且可以确认它需要进行重大刷新,因为它不再准确。我们正在内部工作以刷新它。

感谢您对我们的感谢。

© www.soinside.com 2019 - 2024. All rights reserved.