|
| 1 | +--- |
| 2 | +title: "单点登录(SSO)" |
| 3 | +description: "夜莺监控(Nightingale)支持单点登录(SSO)功能,可以通过 SSO 方式登录夜莺监控。SSO 支持多种协议,如 OAuth2、OIDC 等。" |
| 4 | +date: 2025-06-20T08:16:11.095+08:00 |
| 5 | +lastmod: 2025-06-20T08:16:11.095+08:00 |
| 6 | +draft: false |
| 7 | +images: [] |
| 8 | +menu: |
| 9 | + docs: |
| 10 | + parent: "usecase" |
| 11 | +weight: 10200 |
| 12 | +toc: true |
| 13 | +--- |
| 14 | + |
| 15 | +夜莺监控(Nightingale)支持单点登录(SSO)功能,支持 LDAP、CAS、OAuth2、OIDC 等多种协议。SSO 功能可以让用户通过统一的身份认证系统登录夜莺监控,简化用户管理和登录流程,也降低了安全风险。 |
| 16 | + |
| 17 | +对于 CAS、OAuth2、OIDC 三种方式,用户通过 SSO 登录夜莺之后,夜莺会判断当前登录的用户是否存在于夜莺的用户表中,如果不存在,则会自动创建一个用户,如果存在,夜莺会用 SSO 中的用户信息覆盖夜莺中已有用户的信息(前提是配置项 `CoverAttributes = true`,后文会介绍),这样的好处是用户只需要在 SSO 那里维护手机号、邮箱即可,夜莺会在用户登录时自动同步(当然,仅是在登录时同步,所以用户至少要通过 SSO 登录过一次夜莺,否则夜莺中没有这个用户的信息)。 |
| 18 | + |
| 19 | +## 配置 OIDC |
| 20 | + |
| 21 | +这是最推荐的方式,如果你的 SSO 同时支持 OIDC 和 OAuth2,建议使用 OIDC。 |
| 22 | + |
| 23 | +### 配置项说明 |
| 24 | + |
| 25 | +下面是 OIDC 各个配置项的说明: |
| 26 | + |
| 27 | +```toml |
| 28 | +# 是否开启 OIDC 单点登录,夜莺可以同时开启多个 SSO 方式 |
| 29 | +Enable = false |
| 30 | + |
| 31 | +# 登录页面会展示 SSO 登录地址的超链接,DisplayName 用于配置超链接的文本内容 |
| 32 | +DisplayName = 'OIDC' |
| 33 | + |
| 34 | +# IDC 登录验证通过后,需要跳转到夜莺,下面是配置夜莺用于 OIDC 的回调地址 |
| 35 | +# 您需要把 n9e.com 替换为您的夜莺地址,/callback 是固定的路径 |
| 36 | +RedirectURL = 'http://n9e.com/callback' |
| 37 | + |
| 38 | +# OIDC SSO 服务器根地址,换成您的 OIDC 服务器地址 |
| 39 | +SsoAddr = 'http://sso.example.org' |
| 40 | + |
| 41 | +# OIDC SSO 服务器的登出地址,用户在夜莺中点击登出时会跳转到这个地址,即可完成夜莺和 SSO 的同步登出 |
| 42 | +SsoLogoutAddr = 'http://sso.example.org/session/end' |
| 43 | + |
| 44 | +# OIDC 给夜莺分配的 ClientId 和 ClientSecret,必须要配置,一般是在 SSO 服务器上注册应用时获取的 |
| 45 | +ClientId = '' |
| 46 | +ClientSecret = '' |
| 47 | + |
| 48 | +# 用户通过 SSO 登录夜莺,夜莺发现用户在夜莺的用户表中不存在时,会自动创建一个用户 |
| 49 | +# 创建用户的时候,需要给这个用户一个角色,下面是配置默认角色的列表 |
| 50 | +DefaultRoles = ['Standard'] |
| 51 | + |
| 52 | +# 用户通过 SSO 登录夜莺时,夜莺会向 SSO 服务器请求用户信息,并将用户信息写入夜莺的用户表中 |
| 53 | +# 如果 CoverAttributes = true 则会覆盖夜莺中已有的用户信息,比如手机号、邮箱等。通常这里就是配置为 true 即可 |
| 54 | +CoverAttributes = true |
| 55 | + |
| 56 | +# Scope 是 OIDC 协议中的一个概念,表示请求获取的用户信息字段列表,通常就是下面的这些字段 |
| 57 | +Scopes = ['openid', 'profile', 'email', 'phone'] |
| 58 | + |
| 59 | +# 用户在 OIDC 中信息字段和夜莺中的用户信息字段不是 100% 一一对应的 |
| 60 | +# 所以在下面配置:夜莺的各个字段对应 OIDC 中的哪些字段 |
| 61 | +# Username、Nickname、Phone、Email 就是夜莺中的用户信息字段 |
| 62 | +# 后面的 sub、nickname、phone_number、email 就是 OIDC 中的用户字段名 |
| 63 | +# 请根据您的 OIDC 服务器的用户信息字段进行调整 |
| 64 | +[Attributes] |
| 65 | +Username = 'sub' |
| 66 | +Nickname = 'nickname' |
| 67 | +Phone = 'phone_number' |
| 68 | +Email = 'email' |
| 69 | +``` |
| 70 | + |
| 71 | +### 配置项 FAQ |
| 72 | + |
| 73 | +**1. 用户使用 OIDC 可以登录成功,但是用户名、手机号等获取不到** |
| 74 | + |
| 75 | +可以调整夜莺的日志级别为 DEBUG(在 config.toml 中调整),然后重启夜莺,过滤日志关键字:`sso_exchange_user: oidc info`,再测试一遍登录,可以查看从单点登录系统获取到的用户信息有哪些,然后根据实际情况调整 `Attributes` 中的字段映射。 |
| 76 | + |
| 77 | +### 对接 Authing 演示 |
| 78 | + |
| 79 | +下面使用 [Authing](https://www.authing.com/) 作为 OIDC 的 SSO 服务器进行演示。首先,要在 Authing 上创建一个应用,获取 ClientId 和 ClientSecret。 |
| 80 | + |
| 81 | +<img src="/img/usecase/sso/authing-oidc.png" alt="Authing OIDC" /> |
| 82 | + |
| 83 | +然后在夜莺中配置 OIDC 的相关信息: |
| 84 | + |
| 85 | +```toml |
| 86 | +Enable = true |
| 87 | +DisplayName = 'OIDC' |
| 88 | +RedirectURL = 'http://192.168.127.151:17000/callback' |
| 89 | +SsoAddr = 'https://n9e.authing.cn/oidc' |
| 90 | +SsoLoginOutAddr = 'https://n9e.authing.cn/oidc/session/end' |
| 91 | +ClientId = '65befb5b452d4854f9731b9b' |
| 92 | +ClientSecret = '0af4...' |
| 93 | +CoverAttributes = true |
| 94 | +DefaultRoles = ['Standard'] |
| 95 | +Scopes = ['openid', 'profile', 'username', 'email', 'phone'] |
| 96 | + |
| 97 | +[Attributes] |
| 98 | +Username = 'username' |
| 99 | +Nickname = 'nickname' |
| 100 | +Phone = 'phone_number' |
| 101 | +Email = 'email' |
| 102 | +``` |
| 103 | + |
| 104 | +上面的 `192.168.127.151:17000` 是我这个测试环境的夜莺地址,您需要替换为自己的夜莺地址。 |
| 105 | + |
| 106 | +### 对接飞书演示 |
| 107 | + |
| 108 | +飞书也支持 OIDC 协议,我们对这种方式也做一个说明。参考飞书的官方文档创建应用:[配置应用单点登录](https://anycross.feishu.cn/documentation/platform/configure-sso),相关配置: |
| 109 | + |
| 110 | +- 授权模式:可以把 authorization_code 和 refresh_token 都选上 |
| 111 | +- Scope:可以把 openid profile email phone offline_access 都选上 |
| 112 | +- 回调地址:填写 `http://n9e.com/callback`,注意把 `n9e.com` 替换为您的夜莺地址,需要公网可达,除非您的飞书也是私有化内网部署的 |
| 113 | + |
| 114 | +配置完成之后即可拿到 Issuer(即 SSO Server 地址)、ClientId 和 ClientSecret,配置到夜莺中。另外,也可以拿到 SSO Logout 地址,是一个类似这样的地址: |
| 115 | + |
| 116 | +``` |
| 117 | +https://anycross.feishu.cn/sso/....../oidc/revoke |
| 118 | +``` |
| 119 | + |
| 120 | +这个地址也配置到夜莺的 `SsoLogoutAddr` 中,虽然配置了这个地址,但是无法联动登出,下面是飞书文档的 [官方解释说明](https://anycross.feishu.cn/documentation/platform/configure-sso): |
| 121 | + |
| 122 | +> 由于 SSO 应用的登录态是从飞书登录态派生出的,因此不支持单点登出,即在 SSO 应用登出的时候,不能同时登出飞书。虽然平台提供了单点登出的地址,但这个地址是为了防止三方系统将其设置为必填项,地址本身并不生效。 |
| 123 | +
|
| 124 | +最终夜莺中的配置如下: |
| 125 | + |
| 126 | +```toml |
| 127 | +Enable = true |
| 128 | +DisplayName = 'OIDC' |
| 129 | +RedirectURL = 'http://n9e.com/callback' |
| 130 | +SsoAddr = 'https://anycross.feishu.cn/sso/XXXXX' |
| 131 | +SsoLoginOutAddr = 'https://anycross.feishu.cn/sso/XXXXX/oidc/revoke' |
| 132 | +ClientId = 'xxx' |
| 133 | +ClientSecret = 'xxx' |
| 134 | +CoverAttributes = true |
| 135 | +DefaultRoles = ['Standard'] |
| 136 | +Scopes = ['openid', 'profile', 'email', 'phone'] |
| 137 | + |
| 138 | +[Attributes] |
| 139 | +Username = 'name' |
| 140 | +Nickname = 'name' |
| 141 | +Phone = 'phone_number' |
| 142 | +Email = 'email' |
| 143 | +``` |
| 144 | + |
| 145 | +> 上面的 `n9e.com` 需要替换为您自己的夜莺地址,需要公网可达,除非您的飞书也是私有化内网部署的。 |
| 146 | +
|
| 147 | +## 配置 OAuth2 |
| 148 | + |
| 149 | +如果您的 SSO 既支持 OIDC 又支持 OAuth2,建议使用 OIDC,实在没办法再使用 OAuth2,OAuth2 坑多。 |
| 150 | + |
| 151 | +### 配置项说明 |
| 152 | + |
| 153 | +```toml |
| 154 | +# 是否开启 OAuth2 单点登录,夜莺可以同时开启多个 SSO 方式 |
| 155 | +Enable = false |
| 156 | + |
| 157 | +# 登录页面会展示 SSO 登录地址的超链接,DisplayName 用于配置超链接的文本内容 |
| 158 | +DisplayName = 'OAuth2' |
| 159 | + |
| 160 | +# SSO 登录验证通过后,需要跳转到夜莺,下面是配置夜莺用于 OAuth2 的回调地址 |
| 161 | +# 您需要把 n9e.com 替换为您的夜莺地址,/callback/oauth 是固定的路径 |
| 162 | +RedirectURL = 'http://n9e.com/callback/oauth' |
| 163 | + |
| 164 | +# OAuth2 SSO 服务器根地址,换成您的 OAuth2 服务器地址 |
| 165 | +SsoAddr = 'https://sso.example.com/oauth2/authorize' |
| 166 | + |
| 167 | +# OAuth2 SSO 服务器的登出地址,用户在夜莺中点击登出时会跳转到这个地址,即可完成夜莺和 SSO 的同步登出 |
| 168 | +SsoLogoutAddr = 'https://sso.example.com/oauth2/authorize/session/end' |
| 169 | + |
| 170 | +# 获取 OAuth2 token 的地址 |
| 171 | +TokenAddr = 'https://sso.example.com/oauth2/token' |
| 172 | + |
| 173 | +# OAuth2 提供的用户信息地址,夜莺会通过这个地址获取用户信息 |
| 174 | +UserInfoAddr = 'https://sso.example.com/api/v1/user/info' |
| 175 | + |
| 176 | +# 从 OAuth2 或许用户信息时,需要把上一步获取到的 token 放到请求头中 |
| 177 | +# token 可以放在 header 中,也可以放在 formdata 或 querystring 中,需要根据您的 OAuth2 服务器的要求进行配置 |
| 178 | +TranTokenMethod = 'header' |
| 179 | + |
| 180 | +# OAuth2 给夜莺分配的 ClientId 和 ClientSecret,必须要配置,一般是在 SSO 服务器上注册应用时获取的 |
| 181 | +ClientId = '' |
| 182 | +ClientSecret = '' |
| 183 | + |
| 184 | +# 用户通过 SSO 登录夜莺,夜莺发现用户在夜莺的用户表中不存在时,会自动创建一个用户 |
| 185 | +# 创建用户的时候,需要给这个用户一个角色,下面是配置默认角色的列表 |
| 186 | +DefaultRoles = ['Standard'] |
| 187 | + |
| 188 | +# 用户通过 SSO 登录夜莺时,夜莺会向 SSO 服务器请求用户信息,并将用户信息写入夜莺的用户表中 |
| 189 | +# 如果 CoverAttributes = true 则会覆盖夜莺中已有的用户信息,比如手机号、邮箱等。通常这里就是配置为 true 即可 |
| 190 | +CoverAttributes = true |
| 191 | + |
| 192 | +# 从 OAuth2 中获取用户数据时,返回的 JSON 格式数据是否为数组,根据你们的 OAuth2 服务器的返回格式进行配置 |
| 193 | +# 如果是数组,夜莺会取第一个元素作为用户信息 |
| 194 | +UserinfoIsArray = false |
| 195 | + |
| 196 | +# OAuth2 用户信息的前缀,通常是 'data',即返回的 JSON 数据中会有一个 'data' 字段,里面是用户信息 |
| 197 | +UserinfoPrefix = 'data' |
| 198 | + |
| 199 | +# Scope 是 OAuth2 协议中的一个概念,表示请求获取的用户信息字段列表,通常就是下面的这些字段 |
| 200 | +Scopes = ['profile', 'email', 'phone'] |
| 201 | + |
| 202 | +# 用户在 OAuth2 中信息字段和夜莺中的用户信息字段不是 100% 一一对应的 |
| 203 | +# 所以在下面配置:夜莺的各个字段对应 OAuth2 中的哪些字段 |
| 204 | +# Username、Nickname、Phone、Email 就是夜莺中的用户信息字段 |
| 205 | +# 后面的 sub、nickname、phone_number、email 就是 OAuth2 中的用户字段名 |
| 206 | +# 请根据您的 OAuth2 服务器的用户信息字段进行调整 |
| 207 | +[Attributes] |
| 208 | +Username = 'sub' |
| 209 | +Nickname = 'nickname' |
| 210 | +Phone = 'phone_number' |
| 211 | +Email = 'email' |
| 212 | +``` |
| 213 | + |
| 214 | +### 对接 Authing 演示 |
| 215 | + |
| 216 | +使用 [Authing](https://www.authing.com/) 作为 OAuth2 的 SSO 服务器进行演示。首先,要在 Authing 上启用 OAuth2。配置样例如下: |
| 217 | + |
| 218 | +<img src="/img/usecase/sso/authing-oauth2.png" alt="Authing OAuth2" /> |
| 219 | + |
| 220 | +然后在夜莺中配置 OAuth2 的相关信息: |
| 221 | + |
| 222 | +```toml |
| 223 | +Enable = true |
| 224 | +DisplayName = 'OAuth2' |
| 225 | +RedirectURL = 'http://192.168.127.151:17000/callback/oauth' |
| 226 | +SsoAddr = 'https://n9e.authing.cn/oauth/auth' |
| 227 | +SsoLogoutAddr = 'https://n9e.authing.cn/oauth/session/end' |
| 228 | +TokenAddr = 'https://n9e.authing.cn/oauth/token' |
| 229 | +UserInfoAddr = 'https://n9e.authing.cn/oauth/me' |
| 230 | +TranTokenMethod = 'header' |
| 231 | +ClientId = '65befb5b452d4854f9731b9b' |
| 232 | +ClientSecret = '0af4...' |
| 233 | +CoverAttributes = true |
| 234 | +DefaultRoles = ['Standard'] |
| 235 | +UserinfoIsArray = false |
| 236 | +UserinfoPrefix = '' |
| 237 | +Scopes = ['profile', 'username', 'email', 'phone'] |
| 238 | + |
| 239 | +[Attributes] |
| 240 | +Username = 'username' |
| 241 | +Nickname = 'nickname' |
| 242 | +Phone = 'phone' |
| 243 | +Email = 'email' |
| 244 | +``` |
| 245 | + |
| 246 | +上面的 `192.168.127.151:17000` 是我这个测试环境的夜莺地址,您需要替换为自己的夜莺地址。 |
| 247 | + |
| 248 | +## 配置 CAS |
| 249 | + |
| 250 | +夜莺监控(Nightingale)也支持 CAS 协议的单点登录。相比 OIDC,坑更多,慎用。 |
| 251 | + |
| 252 | +### 配置项说明 |
| 253 | + |
| 254 | +```toml |
| 255 | +# 是否开启 CAS 单点登录,夜莺可以同时开启多个 SSO 方式 |
| 256 | +Enable = false |
| 257 | + |
| 258 | +# 登录页面会展示 SSO 登录地址的超链接,DisplayName 用于配置超链接的文本内容 |
| 259 | +DisplayName = 'CAS' |
| 260 | + |
| 261 | +# CAS 登录验证通过后,需要跳转到夜莺,下面是配置夜莺用于 CAS 的回调地址 |
| 262 | +# 您需要把 n9e.com 替换为您的夜莺地址,/callback/cas 是固定的路径 |
| 263 | +RedirectURL = 'http://n9e.com/callback/cas' |
| 264 | + |
| 265 | +# CAS SSO 服务器根地址,换成您的 CAS 服务器地址 |
| 266 | +SsoAddr = 'https://cas.example.com/cas' |
| 267 | + |
| 268 | +# CAS SSO 服务器的登出地址,用户在夜莺中点击登出时会跳转到这个地址,即可完成夜莺和 SSO 的同步登出 |
| 269 | +SsoLogoutAddr = 'https://cas.example.com/cas/session/end' |
| 270 | + |
| 271 | +# LoginPath 这个配置项,是为了兼容不同的 CAS 版本,因为不同的 CAS 版本登录地址可能不同 |
| 272 | +# 如果您配置了 LoginPath,则夜莺会在 SsoAddr 的基础上拼接 LoginPath 作为登录地址 |
| 273 | +# 如果您没有配置 LoginPath,夜莺的逻辑是: |
| 274 | +# 1. 如果发现 SsoAddr 中包含 p3 关键字,就设置 LoginPath = '/login' |
| 275 | +# 2. 如果没有包含 p3 关键字,就设置 LoginPath = '/cas/login' |
| 276 | +LoginPath = '' |
| 277 | + |
| 278 | +# 用户通过 SSO 登录夜莺,夜莺发现用户在夜莺的用户表中不存在时,会自动创建一个用户 |
| 279 | +# 创建用户的时候,需要给这个用户一个角色,下面是配置默认角色的列表 |
| 280 | +DefaultRoles = ['Standard'] |
| 281 | + |
| 282 | +# 用户通过 SSO 登录夜莺时,夜莺会向 SSO 服务器请求用户信息,并将用户信息写入夜莺的用户表中 |
| 283 | +# 如果 CoverAttributes = true 则会覆盖夜莺中已有的用户信息,比如手机号、邮箱等。通常这里就是配置为 true 即可 |
| 284 | +CoverAttributes = true |
| 285 | + |
| 286 | +# 用户在 CAS 中信息字段和夜莺中的用户信息字段不是 100% 一一对应的 |
| 287 | +# 所以在下面配置:夜莺的各个字段对应 CAS 中的哪些字段 |
| 288 | +# Username、Nickname、Phone、Email 就是夜莺中的用户信息字段 |
| 289 | +# 后面的 sub、nickname、phone_number、email 就是 CAS 中的用户字段名 |
| 290 | +# 请根据您的 CAS 服务器的用户信息字段进行调整 |
| 291 | +[Attributes] |
| 292 | +Username = 'sub' |
| 293 | +Nickname = 'nickname' |
| 294 | +Phone = 'phone_number' |
| 295 | +Email = 'email' |
| 296 | +``` |
| 297 | + |
| 298 | +### 对接 Authing 演示 |
| 299 | + |
| 300 | +使用 [Authing](https://www.authing.com/) 作为 CAS 的 SSO 服务器进行演示。首先,要在 Authing 上启用 CAS。配置样例如下: |
| 301 | + |
| 302 | +<img src="/img/usecase/sso/authing-cas.png" alt="Authing CAS" /> |
| 303 | + |
| 304 | +然后在夜莺中配置 CAS 的相关信息: |
| 305 | + |
| 306 | +```toml |
| 307 | +Enable = true |
| 308 | +DisplayName = 'CAS' |
| 309 | +RedirectURL = 'http://192.168.127.151:17000/callback/cas' |
| 310 | +SsoAddr = 'https://n9e.authing.cn/cas-idp/65befb5b452d4854f9731b9b' |
| 311 | +SsoLogoutAddr = 'https://n9e.authing.cn/cas-idp/65befb5b452d4854f9731b9b/logout' |
| 312 | +LoginPath = '/login' |
| 313 | +CoverAttributes = true |
| 314 | +DefaultRoles = ['Standard'] |
| 315 | + |
| 316 | +[Attributes] |
| 317 | +Username = 'username' |
| 318 | +Nickname = 'nickname' |
| 319 | +Phone = 'phone_number' |
| 320 | +Email = 'email' |
| 321 | +``` |
| 322 | + |
| 323 | +上面的 `192.168.127.151:17000` 是我这个测试环境的夜莺地址,您需要替换为自己的夜莺地址。 |
| 324 | + |
| 325 | +## 配置 LDAP |
| 326 | + |
| 327 | +夜莺监控(Nightingale)也支持 LDAP 协议的认证登录。LDAP 是一种轻量级目录访问协议,通常用于企业内部的用户认证和授权。前面讲到的 SSO 机制(OIDC、OAuth2、CAS)都没法把用户信息周期性全量同步到夜莺中,而 LDAP 则可以做到这一点。 |
| 328 | + |
| 329 | +LDAP 在页面上也没有单独的登录超链接入口,用户在输入用户名和密码登录夜莺时,夜莺首先去 DB 中查询用户信息,如果没有找到,则自动检查 LDAP 是否启用,如果启用了,就直接使用 LDAP 进行认证登录。 |
| 330 | + |
| 331 | +### 配置项说明 |
| 332 | + |
| 333 | +```toml |
| 334 | +# 是否开启 LDAP 单点登录,夜莺可以同时开启多个 SSO 方式 |
| 335 | +Enable = false |
| 336 | + |
| 337 | +# LDAP 服务器地址和端口、TLS、StartTLS 等配置 |
| 338 | +# 请根据您自己的环境进行配置 |
| 339 | +Host = 'ldap.example.org' |
| 340 | +Port = 389 |
| 341 | +TLS = false |
| 342 | +StartTLS = true |
| 343 | + |
| 344 | +# LDAP 服务器的根 DN,可以 Google、GPT 获取更多信息 |
| 345 | +BaseDn = 'dc=example,dc=org' |
| 346 | + |
| 347 | +# 管理员信息,这个账号需要具备查询所有用户信息的权限 |
| 348 | +BindUser = 'cn=manager,dc=example,dc=org' |
| 349 | +BindPass = '*******' |
| 350 | + |
| 351 | +# 是否同步 LDAP 中的创建用户至夜莺 |
| 352 | +SyncAddUsers = false |
| 353 | + |
| 354 | +# 是否同步 LDAP 中的删除用户操作至夜莺 |
| 355 | +SyncDelUsers = false |
| 356 | + |
| 357 | +# 同步频率,单位:秒 |
| 358 | +SyncInterval = 86400 |
| 359 | + |
| 360 | +# 用户登录时,检查用户是否存在于 LDAp 中的筛选条件 |
| 361 | +# openldap 和 AD 通常有不同的筛选格式 |
| 362 | +# openldap 的格式可能为: (&(uid=%s)) |
| 363 | +# AD 的格式可能为 (&(sAMAccountName=%s)) |
| 364 | +# 您需要根据您的 LDAP 服务器类型进行调整 |
| 365 | +AuthFilter = '(&(uid=%s))' |
| 366 | + |
| 367 | +# 查询 LDAP 中全量用户的筛选条件 |
| 368 | +# 根据您的 LDAP 服务器类型进行调整 |
| 369 | +UserFilter = '(&(uid=*))' |
| 370 | + |
| 371 | +# 用户通过 LDAP 登录夜莺,夜莺发现用户在夜莺的用户表中不存在时,会自动创建一个用户 |
| 372 | +# 创建用户的时候,需要给这个用户一个角色,下面是配置默认角色的列表 |
| 373 | +DefaultRoles = ['Standard'] |
| 374 | + |
| 375 | +# 用户通过 LDAP 登录夜莺时,夜莺会向 LDAP 服务器请求用户信息,并将用户信息写入夜莺的用户表中 |
| 376 | +# 如果 CoverAttributes = true 则会覆盖夜莺中已有的用户信息,比如手机号、邮箱等。通常这里就是配置为 true 即可 |
| 377 | +CoverAttributes = true |
| 378 | + |
| 379 | +# 用户在 LDAP 中信息字段和夜莺中的用户信息字段不是 100% 一一对应的 |
| 380 | +# 所以在下面配置:夜莺的各个字段对应 LDAP 中的哪些字段 |
| 381 | +# Username、Nickname、Phone、Email 就是夜莺中的用户信息字段 |
| 382 | +# 后面的 uid、cn、mobile、mail 就是 LDAP 中的用户字段名 |
| 383 | +# 请根据您的 LDAP 服务器的用户信息字段进行调整 |
| 384 | +[Attributes] |
| 385 | +Username = 'uid' |
| 386 | +Nickname = 'cn' |
| 387 | +Phone = 'mobile' |
| 388 | +Email = 'mail' |
| 389 | +``` |
| 390 | + |
| 391 | +上面的配置信息如果您看完注释还是不清楚如何配置,可以咨询贵司的 LDAP 管理员,他大概率是比较清楚的。 |
| 392 | + |
0 commit comments