IDP 是什么

一句话总结

IDP(Identity Provider,身份提供者)是 SSO 体系里的”公安局”——它存着所有人的账号密码,负责验证你是谁,然后给各个应用签发身份令牌。


🤔 为什么会有它 / 解决了什么问题

没有 IDP 时,每个应用自己存密码、自己验证用户。这带来三个问题:

  1. 密码散落各处:用户要在 10 个地方设密码,安全风险极高
  2. 账号管理噩梦:HR 招一个人,IT 要在 10 个系统创建账号;离职要逐一注销
  3. 安全审计不可能:谁什么时间登录了什么系统,没法集中追踪

IDP 把”验证身份”这个职责从每个应用中抽离出来,集中到一个专门的服务。管身份的事,只由专业的人/系统来做。


🔍 具体原理 / 运作逻辑

IDP 的核心工作流程:

  1. 存储用户:维护一个用户目录(用户名、邮箱、密码哈希、角色)
  2. 验证身份:你输入密码,IDP 判断对不对
  3. 签发令牌:验证通过后,发一张”身份令牌”(ID Token)给应用
  4. 会话管理:记住你登录了,下次不必重复输入

在我们的架构里,Frappe 就是 IDP。Frappe 的 User Doctype 存用户,OAuth Provider 模块负责签发令牌。


🧭 什么情况下会用到 / 什么场景会遇到它

  • 搭建公司内部 SSO 时,需要选一个系统当 IDP
  • 接入第三方登录时(“用 Google 登录”按钮),Google 就是 IDP
  • 任何需要统一管理用户身份的地方

⚖️ 副作用 / 代价 / 取舍

  • 单点故障:IDP 是 SSO 的唯一依赖,它挂了 = 全员登不进去
  • 安全集中:攻击者最想攻破的就是 IDP,因为拿到它就拿到了所有系统
  • 性能瓶颈:每次认证请求都经过 IDP,需要保证它有足够的资源

🕰️ 来历

  • 早期的 LDAP(轻量目录访问协议,1993)和 Kerberos(MIT,1980s)就是 IDP 的雏形
  • 现代 IDP 的概念伴随 SAML(2005)和 OIDC(2014)成熟
  • 商业 IDP 代表:Okta、Azure AD、Auth0
  • 开源 IDP 代表:Keycloak、Authentik、Frappe 内置 OAuth Provider

🔗 关联 / 经常一起出现的概念

  • SSO 概述:IDP 是 SSO 三要素之一(IDP + SP + 协议)
  • SP:IDP 的另一半,负责信任 IDP 的令牌并放行
  • OIDC:IDP 和 SP 之间通信的主流协议
  • Access Token:IDP 签发的”房卡”,用来调用 API

⚠️ 注意事项 / 常见误区

  • IDP 不是应用本身,它只管”你是谁”,不管”你能干什么”
  • 不要把 IDP 和用户目录混为一谈——IDP 包含了认证逻辑,不只是存用户

📎 记忆锚点

IDP = 公安局。你只去公安局办一次身份证,然后拿着身份证走遍天下。


📝 更新日志

日期改动原因
2026-07-09首次创建Frappe SSO/OIDC 集成准备