Samly: Elixir插件库实现SAML 2.0 SP SSO在Phoenix/Plug应用中的指南
Samly是一个Elixir语言编写的Plug库,旨在让Phoenix或Plug架构的应用轻松支持SAML 2.0服务端单点登录(SSO)。本指南将带您深入了解Samly项目的目录结构、启动文件以及配置文件,帮助您快速上手并集成到您的应用程序中。
1. 项目目录结构及介绍
Samly的项目结构清晰有序,便于维护和扩展:
.
├── README.md # 主要的项目说明文件,包含了快速入门和基本使用指南。
├── LICENSE # 项目的MIT许可证文件。
├── config # 配置目录,包含应用所需的配置文件。
│ └── config.exs # 主配置文件,用于设置Samly的相关参数。
├── lib # 核心库代码所在目录。
│ ├── samly # 包含了Samly主模块和其他相关模块。
│ │ └── ...
│ └── ...
├── test # 测试代码目录,确保功能完整性的测试用例存放于此。
├── mix.exs # Mix项目定义文件,描述项目的依赖、版本等信息。
└── mix.lock # 锁定文件,记录项目具体依赖的版本。
README.md
提供了关于如何使用Samly的基本信息。config/config.exs
是关键,它允许你配置Samly以适应你的环境和需求。lib/samly
目录包含处理SAML认证的核心逻辑。
2. 项目的启动文件介绍
Samly的启动并不直接通过一个特定的“启动文件”进行,而是通过Elixir的Mix任务或者在你的Phoenix应用的config/runtime.exs
(如果是集群部署)来配置和启用。你通常会在应用的配置文件中添加对Samly的支持,例如,在config/config.exs
中加入必要的配置片段。这并非传统意义上的“启动文件”,但重要的是理解配置过程是应用启动流程的一部分。
3. 项目的配置文件介绍
配置文件:config/config.exs
在Samly的上下文中,配置主要集中在config.exs
文件。你需要配置的内容包括:
- Identity Provider (IdP)元数据: 指向IdP的XML元数据文件路径或URL。
- 证书: 设置签名和解密所用的私钥和公钥证书路径。
- 状态存储: 可选择性地指定用于保存SAML断言的状态存储方式,如ETS或基于Plug Sessions的存储。
示例配置片段:
config :samly,
idp_metadata_file: "path/to/idp_metadata.xml",
saml_cert_path: "path/to/saml_cert.pem",
private_key_path: "path/to/private_key.pem",
state_store: Samly.State.Session, # 如果使用session存储
state_opts: [key: :custom_assertion_key] # 自定义session键名
请注意,实际配置会依据你的具体需求和环境有所不同。务必参考README.md
文件中的详细说明来正确配置Samly,尤其是当涉及到生产环境部署时的安全性和细节配置。
这个概览为你提供了接入和使用Samly的基础知识。深入阅读官方的README.md
文档和实际操作将帮助你更好地理解和运用这一工具。