使用Xamarin和Android进行MSAL身份验证

使用Xamarin和Android进行MSAL身份验证,android,xamarin.forms,asp.net-web-api2,azure-active-directory,msal,Android,Xamarin.forms,Asp.net Web Api2,Azure Active Directory,Msal,我已经实现了一种通过MSAL身份验证使用Xamarin表单使用Web API 2的方法。 它在UWP上工作得很好,但我无法在Android平台上进行身份验证 对于此请求,我总是得到一个授权被拒绝。 身份验证的代码如下所示: public static PublicClientApplication IdentityClientApp = null; internal static void InitializeLogin(PlatformParameters platformParameter

我已经实现了一种通过MSAL身份验证使用Xamarin表单使用Web API 2的方法。 它在UWP上工作得很好,但我无法在Android平台上进行身份验证

对于此请求,我总是得到一个
授权被拒绝。

身份验证的代码如下所示:

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);
}

平台参数来自2016年MSAL的首次预览。该预览不受支持,最新的预览版本(受支持)将取代它。有关如何在Android上使用最新MSAL的完整示例,请参阅。
另请注意:Azure AD v2端点暂时不支持从本机客户端为Microsoft API以外的API颁发访问令牌。它很快就会上线,但我们目前还没有ETA可供分享。

平台参数来自2016年MSAL的首次预览。该预览不受支持,最新的预览版本(受支持)将取代它。有关如何在Android上使用最新MSAL的完整示例,请参阅。
另请注意:Azure AD v2端点暂时不支持从本机客户端为Microsoft API以外的API颁发访问令牌。它很快就会上线,但我们目前没有ETA可供分享。

若要缩小问题范围,请解码此网站的访问令牌,以检查
aud
声明是否与观众配置匹配,以保护web API。感谢您的回答。观众似乎是对的,因为我在那里看到了我的应用程序ID。要缩小问题范围,请解码此网站的access_令牌,以检查
aud
声明是否与观众配置匹配,以保护web API。感谢您的回答。观众似乎是对的,因为我在那里看到了我的应用程序ID。谢谢你的回答,我注意到我无法使用MSAL的更新版本在API上进行身份验证。您知道在我的API上进行身份验证和使用Graph API的最佳方式是什么吗?您的意思是,目前还不可能仅在Android或任何平台上通过API进行身份验证?我已经能够在UWP平台上获得访问令牌,没有任何问题。对于任何不是MS图的API,无论客户端平台如何,都没有访问令牌,因为这是服务端行为。修复应该是几个星期后(虽然我不能完全承诺的时间)。再次抱歉给您带来不便,没关系。我只是不明白如果它不应该在UWP平台上工作,我是如何让它在UWP平台上工作的。看到一些代码片段和跟踪会很有趣。如果你想跟进,你可以通过www.cloudidentity.com与我联系,联系表会给我发送一封电子邮件,我可以回复邮件打开一个频道:)谢谢你的回答,我注意到我无法使用MSAL的更新版本在我的API上进行身份验证。您知道在我的API上进行身份验证和使用Graph API的最佳方式是什么吗?您的意思是,目前还不可能仅在Android或任何平台上通过API进行身份验证?我已经能够在UWP平台上获得访问令牌,没有任何问题。对于任何不是MS图的API,无论客户端平台如何,都没有访问令牌,因为这是服务端行为。修复应该是几个星期后(虽然我不能完全承诺的时间)。再次抱歉给您带来不便,没关系。我只是不明白如果它不应该在UWP平台上工作,我是如何让它在UWP平台上工作的。看到一些代码片段和跟踪会很有趣。如果您想跟进,您可以通过www.cloudidentity.com与我联系,联系表格将向我发送一封电子邮件,我可以回复该邮件以打开一个频道:)
App.InitializeLogin(new PlatformParameters(this));