2、核心概念解析:身份提供商(IdP)、服务提供商(SP)、联合身份、SSO
好,咱们进入第二个核心章节。说实话,很多人在多云环境里搞身份权限,一开始就被这几个术语绕晕了。什么IdP、SP、联合身份、SSO……听着像是一堆缩写开会。其实没那么复杂,我带你一个一个拆开看。
2.1 身份提供商(IdP)—— 你是谁,它说了算
身份提供商,简称IdP。说白了,它就是那个负责「证明你是谁」的系统。
你想想看,你在公司登录OA系统,输入用户名密码,谁在验证?是OA系统自己吗?不一定。很多时候,是后台的AD或者LDAP在干活。那个AD,就是IdP。
我个人习惯把IdP理解成「数字世界的户籍警」。它存储着用户的身份信息——用户名、密码、手机号、所属部门、角色等等。当某个应用需要知道「你是谁」时,它就会去问IdP。
常见的IdP产品有哪些?
- 企业自建: Microsoft Active Directory、OpenLDAP、Keycloak
- 云上托管: Azure AD(现在叫Entra ID)、AWS IAM Identity Center、Google Cloud Identity
- 第三方SaaS: Okta、OneLogin、Auth0
我在项目中遇到过一家客户,他们用了三个不同的IdP:本地AD管员工、Azure AD管Office 365、还有一个自建的Keycloak管内部研发平台。结果每次员工离职,IT要跑三个地方删账号,经常漏掉一个。嗯,这就是典型的IdP碎片化问题。
2.2 服务提供商(SP)—— 你要用啥,它来提供
服务提供商,SP,就是那个提供具体功能或资源的系统。
举个例子:你们公司用的Jira、Confluence、Salesforce、或者你们自己开发的内部管理系统。这些应用本身不负责验证身份,它们只负责「你进来了,我给你干活」。它们就是SP。
SP的核心诉求很简单:「我不管你是谁验证的,只要IdP说你通过了,我就认。」
所以,SP和IdP之间需要建立一种信任关系。SP会配置一个「信任的IdP列表」,只接受来自这些IdP的认证结果。
2.3 联合身份(Federation)—— 跨域互认的通行证
联合身份,这是多云管理的核心概念。
什么叫联合?说白了,就是「我信任你的认证结果」。比如,你在AWS上有一个IdP,在Azure上也有一个IdP。如果这两个IdP之间建立了联合信任,那么用AWS账号登录的用户,可以直接访问Azure上的资源,反之亦然。
为什么会需要这个?因为现实中,很少有企业只用一朵云。我见过的大多数客户,都是「AWS跑核心业务、Azure跑Office和AI、GCP跑数据分析」。如果每个云都单独建一套用户体系,那运维人员光记密码就得疯掉。
联合身份的实现方式,通常基于标准协议:
- SAML 2.0: 老牌协议,企业级应用支持最广。我在2018年做的一个金融项目,全部用的SAML。
- OIDC(OpenID Connect): 基于OAuth 2.0,更轻量,适合现代应用和移动端。
- WS-Federation: 微软家的老协议,现在逐渐被OIDC取代。
| 协议 | 传输格式 | 适用场景 | 我的评价 |
|---|---|---|---|
| SAML 2.0 | XML | 企业级Web应用、传统SaaS | 成熟稳定,但XML解析有点重 |
| OIDC | JSON | 移动端、单页应用、API | 现代首选,我推荐新项目用这个 |
| WS-Federation | XML | 微软生态旧系统 | 能不用就别用了 |
2.4 单点登录(SSO)—— 一次登录,到处通行
SSO,单点登录,这是联合身份最直接的应用体验。
你想想看,你早上打开电脑,登录了公司门户,然后点开Jira、Confluence、GitLab、Slack……每个系统都不需要再输密码。这就是SSO。
SSO的本质是什么?是「一次认证,多个SP共享会话」。
具体流程大致是这样的:
- 用户第一次访问SP-A,SP-A发现没有登录凭证,把用户重定向到IdP。
- 用户在IdP输入用户名密码(或者刷指纹、扫脸)。
- IdP验证通过,生成一个令牌(Token),把用户送回SP-A。
- SP-A验证令牌有效,允许用户访问。
- 用户再访问SP-B,SP-B同样重定向到IdP。
- IdP发现用户已经登录过了(有会话),直接发一个新令牌给SP-B。
- 用户无缝进入SP-B,全程无感。
嗯,这里要注意:SSO的体验虽然爽,但背后涉及多个重定向和令牌交换。如果网络延迟高,或者IdP挂了,所有关联的应用都会瘫痪。这就是所谓的「单点故障」——单点登录爽,单点挂了全完蛋。
2.5 四个概念的关系,我用一句话总结
好,咱们捋一捋这四个概念的关系:
- IdP 负责认证,回答「你是谁」。
- SP 负责授权,回答「你能干啥」。
- 联合身份 是IdP和SP之间的信任桥梁,让不同域之间互认。
- SSO 是用户感受到的便利,一次登录,到处通行。
说白了,联合身份是「幕后协议」,SSO是「前台体验」。IdP和SP是「角色」,联合身份和SSO是「能力」。
我在做多云架构设计时,经常跟团队说一句话:「先定IdP,再谈联合,最后优化SSO体验。」 顺序搞反了,后面全是坑。
下一章,咱们聊聊具体的协议实现——SAML和OIDC到底怎么选,以及我在实际项目中踩过的那些坑。