使用 Microsoft 身份验证库 (MSAL) 时注销不起作用

Logout does not work when using Microsoft Authentication Library (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 的样本时,我看到了相同的行为。所以我怀疑这是 Microsoft 的 MSAL 组件中的错误。

根据样本注销,只需调用

PublicClientApplication.UserTokenCache.Clear(PublicClientApplication.ClientId);

我也试过添加

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

没有任何变化。

有什么建议吗?

发生这种情况是因为该服务不支持某些会导致用户注销的功能。这项工作仍在进行中。

只需在 Droid 项目中添加以下行:

CookieManager.Instance.RemoveAllCookie();

在iOS,

 foreach (var cookie in NSHttpCookieStorage.SharedStorage.Cookies)
 {
   NSHttpCookieStorage.SharedStorage.DeleteCookie (cookie);
 }

有关更多详细信息,请访问此 link https://developer.xamarin.com/guides/xamarin-forms/cloud-services/authentication/azure/