我正在使用Xamarin编写一个iOS应用程序,该应用程序使用Azure Active Directory作为Azure Web应用程序中REST API的身份验证提供程序。我使用的是ADAL .NET版本3.5.208012240
有一种情况,即使在注销后,前一个用户也可以成功登录而无需输入密码
当用户选择退出时,应用程序会调用
authenticationContext.TokenCache.Clear()
和
/oauth2/logout
。
在下一次登录尝试时,它再次调用AcquireTokenAsync()
:
_authResult = await _authContext.AcquireTokenAsync(ResourceUri,
ClientId, new Uri(RedirectUrl), platformParam);
这会显示正常的Microsoft登录网页,其中有一个链接显示,"无法访问您的帐户?"当用户点击此链接时,它会重定向到带有标题的页面," Microsoft Online Password Reset"和标题"无法访问您的帐户?"然后是文本"从浏览器访问passwordreset.microsoftonline.com以重置密码。"还有一个链接去"返回"。
当用户点击"返回"时,它从AcquireTokenAsync()
返回,其签名与先前注销的用户相同。发生这种情况时,应用程序将继续进行,就好像该用户已成功登录一样
我知道服务器可能正在使用浏览器cookie来执行此操作,但我不确定如何防止用户注销的情况,然后同一设备上的其他用户可以在不输入密码的情况下以前一个用户身份登录。
有办法防止这种情况吗?
答案 0 :(得分:0)
那是因为您必须删除NSHttpCookieStorage
上存储的所有Cookie。同时执行以下操作:ADAL注销并删除所有Cookie。