sso-感觉密码模式和sso好像

6次阅读
没有评论

 

你会觉得它们像,直觉非常敏锐。因为从用户体验上看,它们确实是一样的:用户输入账号密码,然后就进去了。

但在架构逻辑信任边界上,它们有着本质的区别。你可以把它们理解为:“自己在家里开门”“拿着房东给的钥匙去开不同的房间”


1. 核心区别:密码交给了谁?

这是区分它们最关键的一点:

  • 密码模式 (OAuth 2.0 Password Grant):

    你把账号密码直接输入给了当前这个应用

    • 例子: 你在京东 App 里直接输入京东账号密码。

    • 风险: 如果这个应用是第三方的(比如一个不知名的小 App 让你输微信密码),你的密码就泄露了。所以它只适用于自家产品

  • SSO (单点登录):

    你把账号密码输入给了一个独立的认证中心 (CAS/IDP),而不是当前应用。

    • 例子: 你想上 YouTube,它把你跳到 Google 的登录页面。你输密码的对象是 Google,YouTube 拿不到你的密码,它只拿到一个“登录成功”的证明。

    • 优势: 安全。无论有多少个子系统,你的密码永远只在认证中心输入。


2. 交互流程的“形态”不同

密码模式:直线型

用户 $\rightarrow$ 应用 (拿到密码) $\rightarrow$ 认证服务器 (换 Token)。

应用作为“中间人”,全程摸到了你的密码。

SSO / 授权码模式:三角形(重定向)

用户 $\rightarrow$ 应用 $\rightarrow$ [跳转] $\rightarrow$ 认证中心 (用户输密码) $\rightarrow$ [跳转回] $\rightarrow$ 应用。

应用被“绕过去”了,它只负责接收最终结果,不触碰敏感信息。


3. 为什么你会觉得它们像?

因为在现代企业架构中,大家经常把这两者混合使用,导致界限模糊:

  1. 产品全家桶: 公司内部有 A、B、C 三个系统。公司为了省事,可能在 A 系统里直接写个表单(密码模式)发给认证中心。这时候,密码模式实现了 SSO 的效果(一处登录,全处可用)。

  2. App 原生登录: 很多手机 App 的登录界面是原生开发的,看起来是“密码模式”,但后台逻辑其实是走的安全加固后的 SSO 流程。


4. 总结对比

维度 密码模式 (Password Grant) SSO (通常基于 OIDC/SAML)
谁看得到密码 当前应用直接获取。 只有认证中心能看到。
适用范围 仅限“亲儿子”应用(高度信任)。 跨域、跨公司、第三方应用。
安全性 较低(密码暴露给应用)。 极高(密码不落地应用)。
主要目的 简化协议流程。 解决“多系统只登一次”的问题。

一句话点醒:

如果一个网站让你直接在它自己的框里输另一个平台的密码,那是“密码模式”;如果它弹出一个新窗口让你去另一个平台输密码,那是“SSO/授权码模式”。

你前年做的项目里,是不是因为那个 App 也是你们公司自研的,所以为了省事直接用了密码模式?

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-04-07发表,共计1115字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)