目前,我仍在研究为我的桌面应用程序实现 ADB2C 注销的解决方案(我们实现了访问 token (用于隐式流))。到目前为止,我发现的情况让我对 AD B2C 中注销功能的用途感到非常困惑(也可能在 OpenId 中?)。我意识到以下几点:
- 注销过程不会撤销已颁发的 ID token
- 没有什么可以阻止被阻止的用户使用刷新 token (在被阻止之前授予)获取另一个访问代码,并继续这样做,直到他们自己退出(来自 here )
- 来自 this link (实际上是一样的..)他们建议使用Azure Graph命令“invalidateAllRefreshTokens”,但是来自Official Microsoft documentation似乎仍处于测试阶段,在生产环境中不受支持。
所以现在我想知道使用注销过程的真正目的是什么。似乎我应该自己处理这一切(这很好),但是我仍然需要调用注销端点吗? Here他们说:
如果您的应用未转到注销端点,用户将重新对您的应用进行身份验证,而无需再次输入其凭据。原因是他们将与 Microsoft 身份平台进行有效的单点登录 session 。
但目前我无法理解这句话(可能是因为我仍然对所有这些感到有点震惊)坏消息)。所以我的问题是:您如何完成注销过程?从桌面应用程序注销时有什么需要注意的事项吗?感谢您的耐心和时间。
最佳答案
当您调用注销端点时,会发生一些事情:
- 访问和刷新 token 由客户端或 secret 服务器销毁
- AAD B2C session Cookie 已清除
此处注销的要点是,当合法用户请求在特定设备上注销并再次登录时,用户必须提供凭据。想象一下家庭或图书馆中的共享设备。用户必须注销才能保护自己。
您所担心的一切都与捕获其 token 并重放它们的合法用户有关。当用户是一开始进行身份验证的用户,并且是可以重新进行身份验证以获得这些 token 的用户时,这不是问题。
如果您担心的是,作为管理员,您会因为您的要求而迫使最终用户失去完全访问权限,而这并不是通过用户自愿注销来实现的,则由您作为管理员调用/revoke 端点来确定需求(尽管 AAD B2Cs session cookie 不会失效,只会失效 token )。
在这种情况下,用户将保持登录状态,直到其访问 token 过期。如果帐户在 token 撤销时被标记为禁用,则无论如何他们都将无法再次进行身份验证。如果这种情况对于您的服务安全运行至关重要,您希望缩短访问 token 的生命周期(最少:5 分钟)。
关于wpf - Active Directory B2C 注销 : what is the purpose then?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66507130/