【问题标题】:MSAL authentication with Xamarin and Android使用 Xamarin 和 Android 进行 MSAL 身份验证
【发布时间】: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


【解决方案1】:

PlatformParameters 来自 2016 年 MSAL 的第一个预览版。该预览版不受支持,更新的预览版(受支持)的发布取代了它。请参阅https://azure.microsoft.com/en-us/resources/samples/active-directory-xamarin-native-v2/ 获取完整示例,了解如何在 Android 上使用最新的 MSAL。 另请注意:Azure AD v2 终结点暂时不支持从本机客户端为 Microsoft API 以外的 API 发出访问令牌。它应该很快就会上线,但我们目前没有 ETA 可以分享。

【讨论】:

  • 感谢您的回答,我有点注意到我无法使用较新版本的 MSAL 在我的 API 上进行身份验证。您知道在我的 API 上进行身份验证和使用 Graph API 的最佳方式是什么吗?
  • 您的意思是目前还不能在仅来自 Android 的 API 或任何平台上进行身份验证?我已经能够毫无问题地在 UWP 平台上获得访问令牌。
  • 无论客户端平台如何,任何不是 MS 图的 API 都没有访问令牌,因为它是服务端行为。修复应该在几周之后(但我不能完全承诺时间)。再次抱歉给您带来不便
  • 没关系。我只是不明白如果它不应该在 UWP 平台上工作,我是如何让它工作的。
  • 看看一些代码 sn-p 和跟踪会很有趣。如果您想跟进,您可以通过 www.cloudidentity.com 与我联系,联系表格将给我发送一封电子邮件,我可以回复该邮件以打开一个频道:)
猜你喜欢
  • 2019-12-31
  • 2020-05-14
  • 2021-11-15
  • 2017-11-20
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多