the*_*fox 6 openid authentication oauth access-token oauth-2.0
我正在尝试找出实现跨域身份验证的最佳方法。
\n设想:
\n作为登录 youtube.com 的用户,当我通过在新的浏览器选项卡中输入域名https://www.google.com来访问 Google.com 时,我的会话将被保留。
\n问题:
\n作为开发人员,如何实现安全、面向未来且用户友好的跨域身份验证?
\n我会用Google和YouTube的例子来解释这个问题。本示例中将演变的各方是:
\n可能的解决方案1
\n使用 SameSite 属性创建Third-Party Cookie
将用于身份验证的 SameSite 属性。该 cookie 将用于存储和维护用户跨网站的会话。
例子
\n优点:
\n缺点:
\n自 2022 年起,大多数浏览器都会阻止此类 Cookie :
\n1.1 自 13.1 版本起,Safari 中禁止使用第三方 Cookie。
\n1.2 今年,Firefox 引入了 Total Cookie Protection,\xe2\x80\x9 保证在您浏览网页时不会使用 Cookie 来跟踪您的各个站点。\xe2\x80\x9d
\n1.3 Google 计划到 2023 年逐步淘汰第三方 Cookie,并用FLoC取而代之。
\n可能的解决方案2
\n优点:
\n缺点:
\n问题
\n解决方案1
正如您所阐明的,跨域解决方案存在阻塞问题。如今,您需要设计托管域名来共享基本域,例如*.example.com
您想共享(第一方)cookie。
一个例子是,在 Google 中,您可以在 和 之间导航drive
,mail
并且calendar
无需重定向,因为所有 3 个应用程序都托管在同一父域中。请注意,所涉及的资源非常相似。
解决方案2
这是 OAuth 标准的处理方式。身份提供商 cookie 是第三方的,但当浏览器中存在顶级重定向时,(当前)不会在任何浏览器中删除,因为这充当用户手势。
每个应用程序的重定向导致每个应用程序获得自己的令牌和生命周期以及特定于该应用程序的权限,从安全角度来看,这更干净。
哪个选项?
我可能会为基于 Micro UI 的架构选择选项 1,其中单个应用程序部署为三个技术组件,或者为一小组具有基本相同权限的应用程序选择。
随着软件规模的扩大,选项 2 更易于管理,并且某些应用程序比其他应用程序具有更高的权限。如果您必须向客户解释您的安全性或接受 PEN 测试,效果会更好。
我认为解决方案 1 中的单点注销选项可能更好。不过,它通常被视为次要要求,而如今人们明白这是一个存在技术限制的领域。
归档时间: |
|
查看次数: |
2711 次 |
最近记录: |