后端配置 #
配置安全模块的第一步是确定如何验证用户身份。尽管 Easysearch 本身可以充当一个内部用户数据库,但许多人更喜欢集成企业现有的身份认证体系,例如 LDAP 服务器,或两者组合。设置身份验证和授权服务端的主要配置文件位于 config/security/config.yml
。它定义了安全模块如何检索用户凭据、如何验证这些凭据以及如何从后端系统获取其他角色(可选)。
config.yml
主要包含三大部分:
security:
dynamic:
http: ...
authc: ...
authz: ...
HTTP #
配置 http
具有以下格式:
anonymous_auth_enabled: <true|false>
可以选择是否开启匿名访问,如果禁用匿名身份验证,则至少在 authc
里面提供一个认证后端,否则安全模块将不予初始化,默认为 false
。
认证 #
认证配置 authc
具有以下格式:
<name>:
http_enabled: <true|false>
transport_enabled: <true|false>
order: <integer>
http_authenticator:
...
authentication_backend:
...
配置 authc
里面的每一项被称为 身份验证域。它指定来在何处获取用户凭据以及应针对哪个后端对它们进行身份验证。
您可以使用多个身份验证域。每个身份验证域都有一个名称(例如,basic_auth_internal
)、enabled
开关和排序参数 order
。该顺序使将身份验证域链接在一起成为可能。安全模块按您提供的顺序依次使用它们。如果用户成功通过一个域进行了身份验证,安全模块将跳过剩余的验证域。
http_authenticator
指定要在 HTTP 层上使用的身份验证方法。
以下是在 HTTP 层上定义身份验证器的语法:
http_authenticator:
type: <type>
challenge: <true|false>
config: ...
参数 type
支持以下几种类型:
basic
: HTTP 基本身份验证。无需其他配置。clientcert
: 通过客户端 TLS 证书进行身份验证。此证书必须受节点信任库中的根 CA 之一的信任。
设置 HTTP 身份验证器后,必须指定要针对哪个后端系统对用户进行身份验证:
authentication_backend:
type: <type>
config: ...
参数 type
支持以下几种类型:
noop
: 无需进一步的身份验证。设置noop
如果 HTTP 身份验证器已经完全对用户进行身份验证,例如 JWT、Kerberos 或客户端证书身份验证。internal
: 使用本地配置user.yml
里面定义的用户和角色来进行认证。
授权 #
对用户进行身份验证后,安全模块可以选择从后端权限系统收集用户的其他角色。
授权配置 authz
具有以下格式:
authz:
<name>:
http_enabled: <true|false>
transport_enabled: <true|false>
authorization_backend:
type: <type>
config: ...
您可以在本节中定义多个条目,方法与定义身份验证条目的方式相同。在这种情况下,执行顺序不相关,因此没有 order
字段。
参数 type
支持以下几种类型:
noop
: 即跳过这一步操作。