【发布时间】:2017-08-10 09:43:16
【问题描述】:
我已经实现了一种通过 MSAL 身份验证使用 Xamarin Forms 使用我的 Web API 2 的方法。 它在 UWP 上运行良好,但我无法在 Android 平台上进行身份验证。
我总是收到Authorization has been denied for this request.
身份验证代码如下所示:
public static PublicClientApplication IdentityClientApp = null;
internal static void InitializeLogin(PlatformParameters platformParameters)
{
App.IdentityClientApp = new PublicClientApplication(Constants.ApplicationID);
if (platformParameters != null)
App.IdentityClientApp.PlatformParameters = platformParameters;
我这样得到第一个令牌:
public async Task SignIn()
{
if (App.IdentityClientApp != null)
this.authenticationResult = await App.IdentityClientApp.AcquireTokenAsync(new String[] { Constants.ApplicationID });
}
并在每次调用我的 API 之前刷新它:
public async Task<String> RefreshToken()
{
if (App.IdentityClientApp != null)
{
this.authenticationResult = await App.IdentityClientApp.AcquireTokenSilentAsync(new String[] { Constants.ApplicationID });
}
return (this.authenticationResult.Token);
}
在我的 Android MainActivity.cs 中,我使用 platformParameters 调用登录初始化方法:
App.InitializeLogin(new PlatformParameters(this));
【问题讨论】:
-
为缩小问题范围,请解码此站点的 access_token 以检查
aud声明是否与 audience 配置匹配以保护 Web API。 -
感谢您的回答。观众似乎是对的,因为我在那里看到了我的 applicationID。
标签: android xamarin.forms asp.net-web-api2 azure-active-directory msal