SAML Identity Provider (IdP) 项目教程
1. 项目介绍
saml-idp
是一个简单的 SAML Identity Provider (IdP) 项目,专为 Node.js 环境设计。该项目的主要目的是为测试 SAML 2.0 Service Providers (SPs) 提供一个轻量级的 IdP 解决方案。它支持 SAML 2.0 Web Browser SSO Profile 和 Single Logout Profile。需要注意的是,该项目不适用于生产环境。
2. 项目快速启动
2.1 安装
全局命令行工具
npm install --global saml-idp
手动安装
git clone https://github.com/mcguinness/saml-idp.git
cd saml-idp
npm install
使用 Docker
docker-compose build
docker-compose up
2.2 生成 IdP 签名证书
你需要为 IdP 生成一个自签名证书。可以使用以下命令生成密钥对(需要 OpenSSL):
openssl req -x509 -new -newkey rsa:2048 -nodes -subj '/C=US/ST=California/L=San Francisco/O=JankyCo/CN=Test Identity Provider' -keyout idp-private-key.pem -out idp-public-cert.pem -days 7300
2.3 启动 IdP 服务器
使用命令行
saml-idp --acsUrl [POST URL] --audience [audience]
使用代码
const [runServer] = require('saml-idp');
runServer({
acsUrl: `https://foo.okta.com/auth/saml20/assertion-consumer`,
audience: `https://foo.okta.com/auth/saml20/metadata`
});
3. 应用案例和最佳实践
3.1 测试 SAML 2.0 Service Providers
saml-idp
主要用于测试 SAML 2.0 Service Providers。你可以通过配置不同的 SP 参数来模拟不同的 SAML 认证场景。例如,你可以测试 SP 的 ACS URL、Audience URI 等参数是否正确配置。
3.2 自定义用户配置
你可以通过自定义用户配置来模拟不同的用户身份。例如,你可以为不同的用户设置不同的 SAML 属性,以便测试 SP 如何处理这些属性。
runServer({
acsUrl: `https://foo.okta.com/auth/saml20/assertion-consumer`,
audience: `https://foo.okta.com/auth/saml20/metadata`,
config: {
user: {
email: 'saml.jackson@example.com'
}
}
});
4. 典型生态项目
4.1 Okta
Okta 是一个广泛使用的身份管理平台,支持 SAML 2.0 协议。你可以使用 saml-idp
来测试 Okta 的 SAML 配置,确保 Okta 能够正确处理来自 IdP 的 SAML 断言。
4.2 OneLogin
OneLogin 是另一个支持 SAML 2.0 的身份管理平台。你可以使用 saml-idp
来测试 OneLogin 的 SAML 配置,确保 OneLogin 能够正确处理来自 IdP 的 SAML 断言。
4.3 Shibboleth
Shibboleth 是一个开源的 SAML 实现,广泛用于学术和研究机构。你可以使用 saml-idp
来测试 Shibboleth 的 SAML 配置,确保 Shibboleth 能够正确处理来自 IdP 的 SAML 断言。
通过以上步骤,你可以快速启动并使用 saml-idp
项目,并了解其在不同生态系统中的应用。