集成 SAML 单点登录

SAML SSO (10.0+ 版本)
此文档适用于 Seafile 10.0 及之后的版本。
在本文档中,我们使用 Azure SAML 来展示将 Seafile 与 SAML 连接的步骤。其他 SAML 提供商应该类似。
1. 安装 xmlsec1
            
                
                
$ apt update
$ apt install xmlsec1
2. 准备证书文件
创建证书目录
            
                
                
$ mkdir -p /opt/seafile/seahub-data/certs
您可以通过以下命令生成它们:
            
                
                
$ cd /opt/seafile/seahub-data/certs
$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout sp.key -out sp.crt
3. 配置 Seafile
将以下配置添加到 seahub_settings.py 中,然后重启 Seafile:
            
                
                
ENABLE_ADFS_LOGIN = True
LOGIN_REDIRECT_URL = '/saml2/complete/'
SAML_REMOTE_METADATA_URL = 'https://login.microsoftonline.com/xxx/federationmetadata/2007-06/federationmetadata.xml?appid=xxx'
SAML_ATTRIBUTE_MAPPING = {
    'name': ('display_name', ),
    'mail': ('contact_email', ),
}
注意 :如果 xmlsec1 二进制文件的位置 不是 /usr/bin/xmlsec1 ,需要在seahub_settings.py中添加如下配置:
            
                
                
SAML_XMLSEC_BINARY_PATH = '/path/to/xmlsec1'
查看 xmlsec1 二进制文件的位置:
            
                
                
$ which xmlsec1
注意 :如果证书 没有 放在 /opt/seafile/seahub-data/certs 目录下,需要在seahub_settings.py中添加如下配置:
            
                
                
SAML_CERTS_DIR = '/path/to/certs'
4. 配置 Azure SAML
为 SAML 应用设置 SSO:
5. 上传 Azure AD 证书
下载base64格式的签名证书,重命名为 idp.crt ,然后放到certs目录下。
6. 登录Seafile主页,点击单点登录,使用分配给Azure SAML的用户进行SAML登录测试。