即使在注销后,适用于 iOS 应用程序的 ADAL for .NET 也可以对以前的用户进行身份验证
Posted
技术标签:
【中文标题】即使在注销后,适用于 iOS 应用程序的 ADAL for .NET 也可以对以前的用户进行身份验证【英文标题】:ADAL for .NET for iOS app can authenticate previous user even after logging out 【发布时间】:2016-03-01 06:32:22 【问题描述】:我正在使用 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”和标题为“Can't access your account?”的页面。后跟文本“从浏览器访问 passwordreset.microsoftonline.com 以重置密码”。还有一个链接可以“返回”。
当用户点击“返回”时,它会从AcquireTokenAsync()
返回,并使用与之前退出的用户相同的令牌。发生这种情况时,应用程序将继续运行,就像该用户再次成功登录一样。
我了解服务器可能正在使用浏览器 cookie 来执行此操作,但我不确定如何防止用户退出这种情况,然后同一设备上的不同用户可以在不输入密码的情况下以前一个用户的身份登录。
有没有办法防止这种情况发生?
【问题讨论】:
【参考方案1】:这是因为您必须删除存储在 NSHttpCookieStorage
上的所有 cookie。两者都做:ADAL 退出并删除所有 cookie。
【讨论】:
以上是关于即使在注销后,适用于 iOS 应用程序的 ADAL for .NET 也可以对以前的用户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章