2016-06-13 46 views
0

我有一个Xamarin.Forms iOS/Android应用程序,必须根据Microsoft Azure B2C AD对用户进行身份验证。注销在使用Microsoft身份验证库(MSAL)时不起作用

我已添加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(); 
} 

没有任何变化。

有什么建议吗?

+0

我只是改变了uiOptions参数传递给'AcquireTokenAsync( )'从'UiOptions.SelectAccount'改为'UiOptions.ForceLogin',这对用户来说有点不方便,但确实能够确保登录界面的显示。 –

回答

1

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

+0

所以你说我实在不能在MSAL处于当前alpha状态时注销用户? –

+2

现在,是的。但这是我们希望早日支持的事情。 –

+0

@ KanishkPanwar-MSFT,它在MSAL级别还是端点v2级别上不受支持? – Konstantin