使用Microsoft身份验证库(MSAL)

时间:2016-06-13 14:23:57

标签: xamarin xamarin.forms azure-active-directory msal

我有一个Xamarin.Forms iOS / Android应用程序,必须针对Microsoft Azure B2C AD对用户进行身份验证。

我添加了Microsoft.Identity.Client NuGet并将其用于身份验证。

登录工作正常,我可以使用返回的令牌来调用我们自己的Azure托管服务。

问题在于,当我尝试注销用户时,它无法按预期工作。

如果用户退出并在杀死应用后立即注销,则下次启动应用时,将按预期显示登录屏幕。

要杀死iOS上的应用程序,我可以通过双击主页按钮转到应用程序切换器,然后向上滑动。

但是如果用户没有杀死应用程序,而是按下我的登录按钮(触发对AcquireTokenAsync()的调用),则登录屏幕不会由Microsoft.Identity.Client呈现,而是立即返回有效令牌并且该应用程序可以使用此令牌进行服务调用,即它是一个有效的令牌。

下次启动应用时,令牌不再存在,并显示登录屏幕。

奇怪的是,当我从GitHub/active-directory-b2c-xamarin-native运行样本时,我看到了相同的行为。所以我怀疑它是微软MSAL组件中的一个错误。

根据示例注销,只需通过调用

即可完成
PublicClientApplication.UserTokenCache.Clear(PublicClientApplication.ClientId);

我也试过添加

foreach (var user in PublicClientApplication.Users)
{
     user.SignOut();
}

没有任何改变。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为该服务不支持导致用户退出的某些功能。这仍在进行中。