介绍 WS-Federation 一: 让Passport和传统SSO见鬼去吧!
微软在过去的身份验证服务上,一直采用的Passport验证,但已经是N年前推出来的一个软件架构,当然也被软件界很多地方采用到,由于很多安全问题以及隐私问题,导致05年eBay与Passport分手,相继不少公司也与微软身份验证服务分道扬镳。为何会这样呢?这还得从Passport流程说起:
Passport 是基于 Cookie 的身份验证服务。使用 Passport 身份验证的示例事务对话的工作方式如下:
- 客户端向受到保护的资源(如 http://www.contoso.com/default.aspx)发出 HTTP GET 请求。
- 检查客户的 Cookie 是否具有现有的 Passport 身份验证票。如果站点找到有效的凭据,则站点对该客户进行身份验证。如果请求不包括有效的身份验证票,则服务器返回状态代码 302 并将客户重定向到 Passport 登录服务。响应在查询字符串中包含一个 URL,该 URL 被发送到 Passport 登录服务以便将客户定向回原始站点。
- 客户端执行重定向操作,再向 Passport 登录服务器发出 HTTP GET 请求,然后传输来自原始站点的查询字符串信息。
- Passport 登录服务器向客户提供登录窗体。
- 客户端填写窗体,并使用安全套接字层 (SSL) 将 POST 发送回登录服务器。
- 登录服务器对用户进行身份验证并将客户重定向回原始 URL (http://www.contoso.com/default.aspx)。响应在查询字符串中包含一个加密的 Passport Cookie。
- 客户遵循重定向并再次请求原始的受保护资源,这一次使用 Passport Cookie。
- 起始服务器上的 PassportAuthenticationModule 会检测是否存在 Passport Cookie,并测试身份验证。如果成功,则该请求通过身份验证。
这个流程简单的绘制如下:
大家会发现,如果要使用Passport服务,那么你的用户的用户凭据必须存储在Passport服务器上。这个是敏感的数据哦!如果微软有个什么内鬼的话……………..
另外,这种安全是基于的对称加密的tripleDES算法的,对称算法可以基于穷举破解的。当然还有HTTPS证书机制保证用户的凭证不会在传输时截获并解密。
基于现有的互联网发展情况来看,有很多类似这种机制,许多相对独立的网站,他们拥有各自的用户资源,和和各自的资源优势,都希望自己的用户能够享受其他网站的特殊服务,又能够让其他网站的用户消费自己的特殊服务。传统的SSO,就是这样实现的。比如互联星空的,SP的服务都是受保护资源,用户在登录了互联星空后,才可以获得验证票据,在各个接入的SP内消费。给用户带来的好处就是只要登录互联星空,就能消费N多的SP服务。
当然我们举的例子是互联星空和SP的模型,他们之间只能是强弱之间的对话,没有挣扎的能力。那如果是谷歌和百度之间用户之间需要交流怎么办?到底是 把百度的用户名密码存储到谷歌上,还是将谷歌的用户名密码存储到百度上呢???
敬请期待下篇:
把百度和谷歌和谐起来!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述