我有一个Azure移动应用程序,我想用Azure AD B2C保护 . 我一直关注https://developer.xamarin.com/guides/xamarin-forms/cloud-services/authentication/azure-ad-b2c-mobile-app/并实施了客户端管理身份验证 . 来自B2C租户的令牌似乎没问题 . 异步登录MobileServicesClient返回同一个用户 .

但是,当我尝试访问用[Authorize]修饰的函数时,我被重定向到 /.auth/login/aad?ReturnUrl={requested url} .

以下是日志示例(https已删除,因为stackoverflow不允许我发布这么多链接):

Received request: GET ://xxx.azurewebsites.net/tables/table1?$filter=(Email%20eq%20'x%40x.x')
JWT validation succeeded. Subject: 'sid:x', Issuer: '://xxx.azurewebsites.net/'.

Authenticated sid:x successfully using 'Session Token' authentication.

Received request: GET ://xxx.azurewebsites.net/.auth/login/aad?ReturnUrl=%2ftables%2ftable1

Information Redirecting: ://login.microsoftonline.com/xxx.onmicrosoft.com/oauth2/v2.0/authorize?response_type=id_token&redirect_uri=https%3A%2F%2Fxxx.azurewebsites.net%2F.auth%2Flogin%2Faad%2Fcallback&client_id=x&scope=openid+profile+email&response_mode=form_post&p=b2c_1_susi&nonce=x&state=redir%3D

结果是我在我的Xamarin Forms应用程序中得到JSON解析错误,因为调用不返回JSON而是返回整个网页 .

我的移动服务应用程序( xxx.azurewebsites.net )使用Active Directory身份验证,在高级配置中使用B2C租户的应用程序ID,颁发者URL是登录注册策略的元数据 endpoints ,令牌受众是 ://xxx.azurewebsites.net://xxx.azurewebsites.net/.auth/login/aad/callback (结果是一样的) .

在B2C租户( xxx.onmicrosoft.com )中,我有一个网络应用程序和一个本机应用程序 . Web应用程序具有回复url ://xxx.azurewebsites.net/.auth/login/aad/callback ,本机应用程序转到 msal{application id}://authmsal{application id}://easyauth.callback (同样结果相同) .

有人可以解释为什么重定向发生以及如何防止它?