我有一个 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();
}
没有任何变化。
有什么建议么?