SAML2 接入
Passport 内置 SAML2 Identity Provider(IdP),企业内部系统(支持 SAML2 Web SSO 的产品,如各类 IAM / 应用网关)可以把 VanCone Passport 作为统一身份源完成单点登录。OAuth2.0 / OIDC 接入见「OAuth2.0 / OIDC 接入」。
前置条件:注册服务提供方(SP)
在 VanCone 管理控制台 「SAML 服务提供方」 页面注册 SP:
| 字段 | 说明 |
|---|---|
| Entity ID | SP 的实体标识,通常是其元数据地址(必须全局唯一) |
| ACS URL | 断言消费服务地址(Assertion Consumer Service),Passport 以 HTTP-POST binding 回送断言 |
| SLO URL | 可选,单点注销地址(当前版本未实现 SLO,字段预留) |
| NameID Format | 缺省 emailAddress(用户邮箱),可选 persistent(用户 ID)或 unspecified |
| 状态 | ENABLED 的 SP 才能发起登录 |
Passport IdP 的签名密钥对(RSA-2048 + 自签名 X.509 证书)在首次启动时自动生成并长期保持不变,方便 SP 固化证书指纹。
IdP 元数据
SP 侧导入以下元数据即可完成信任配置:
https://vancone.com/saml2/metadata
关键信息:
- EntityID:
https://vancone.com/saml2/metadata - SSO 端点:
https://vancone.com/saml2/sso(Redirect / POST binding 均可接收 AuthnRequest) - 签名算法:RSA-SHA256,断言与响应均签名
- NameID Formats:
emailAddress/persistent/unspecified
登录流程(SP 发起)
浏览器 SP(接入方) Passport IdP
│ 1. 访问 SP,未登录 │ │
│─────────────────────────>│ │
│ 2. 302 SSO 端点 │ 3. 校验 SP 已注册 │
│<──────────────────────────│ (未登录→登录页,登录后继续) │
│─────────────────────────────────────────────────────────>│
│ │ 4. 签名断言/响应(POST binding)│
│<─────────────────────────────────────────────────────────│
│ 5. 浏览器自动 POST 到 ACS │ │
│─────────────────────────>│ 6. 验签、建立 SP 会话 │
注意事项:
- SP 必须先注册(EntityID 精确匹配),未注册的 SP 请求返回 404;
- 用户未登录 Passport 时会被带到 Passport 登录页,登录成功后自动继续 SSO 流程;
- AuthnRequest 支持 Redirect 与 POST 两种接收 binding。
断言内容
| 项 | 值 |
|---|---|
| NameID | 按 SP 注册的 NameID Format:emailAddress → 用户邮箱;persistent/缺省其它 → 用户 ID |
| Attributes | uid(用户 ID)、name(姓名)、email(邮箱)、tenantId(租户 ID) |
| 签名 | 断言与 Response 均以 IdP 证书做 RSA-SHA256 签名 |
SP 侧验签时应固化 IdP 证书(来自元数据),并校验断言有效期与 Audience(即 SP 的 EntityID)。
安全要求
- SP 的 ACS URL 必须使用 HTTPS;
- 注册 Entity ID 时请确认来源(建议直接使用 SP 元数据地址),防止误注册第三方;
- 建议在 SP 侧启用断言时效与重放校验(crewjam/saml、OneLogin 等 SDK 默认开启)。