🔐
完整的 SAML 2.0
完整的 SSO 和 SLO 流程实现,支持所有主要绑定
了解绑定方式
import { ServiceProvider, IdentityProvider } from 'samlesa'
import { readFileSync } from 'fs'
const sp = ServiceProvider({
metadata: readFileSync('./sp-metadata.xml'),
privateKey: readFileSync('./sp-key.pem'),
signingCert: readFileSync('./sp-cert.cer'),
})
const idp = IdentityProvider({
metadata: readFileSync('./idp-metadata.xml'),
})
// 创建登录请求
const { context, entityEndpoint } = sp.createLoginRequest(idp, 'redirect')
// 重定向用户到 IdP
res.redirect(`${entityEndpoint}?SAMLRequest=${encodeURIComponent(context)}`)import { IdentityProvider, ServiceProvider } from 'samlesa'
import { readFileSync } from 'fs'
const idp = IdentityProvider({
metadata: readFileSync('./idp-metadata.xml'),
privateKey: readFileSync('./idp-key.pem'),
})
// 创建登录响应
const { context } = await idp.createLoginResponse({
sp,
requestInfo: { extract },
binding: 'post',
user: { NameID: 'user@example.com' },
})
// 发送响应到 SP
res.send(`
<form method="POST" action="${acsUrl}">
<input type="hidden" name="SAMLResponse" value="${context}"/>
</form>
`)| 算法 | 安全性 | 推荐度 |
|---|---|---|
| RSA-SHA256 | 高 | ⭐ 推荐 |
| ECDSA-SHA256 | 高 | ⭐ 推荐 |
| EdDSA-Ed25519 | 很高 | ⭐ 推荐 |
| RSA-SHA384/512 | 高 | ✅ 支持 |
| 低 | 🚫 已弃用 |
| 算法 | 模式 | 推荐度 |
|---|---|---|
| AES-256-GCM | GCM | ⭐ 推荐 |
| AES-128-GCM | GCM | ✅ 支持 |
| AES-256-CBC | CBC | ✅ 支持 |
| CBC | 🚫 已弃用 |
npm install samlesasamlify 支持与主流身份提供商集成:
| 提供商 | 类型 | 难度 |
|---|---|---|
| OneLogin | 企业 IdP | 🟢 简单 |
| Okta | 身份平台 | 🟢 简单 |
| Azure AD | Microsoft Entra ID | 🟡 中等 |
| AWS SSO | AWS IAM Identity Center | 🟡 中等 |
| Keycloak | 开源 IAM | 🟡 中等 |
| GitLab | DevOps 平台 | 🟢 简单 |
| 火山云 | 中国云服务 | 🟡 中等 |
基于 MIT 许可证 发布