身份验证¶
您可以根据Active Directory、LDAP、MySQL或PostgreSQL数据库进行身份验证,也可以将身份验证委托给web服务器。
可以对身份验证方法进行链接,以设置回退身份验证方法,或者如果用户分布在多个地方。
配置¶
导航到配置>应用>鉴权.
中配置了认证方法/etc/icingaweb2/authentication.ini
文件。
身份验证配置中的每一部分都代表一种身份验证方法。
认证配置中表项的顺序决定了认证方式的顺序。如果当前认证方式错误,或者当前认证方式不知道正在认证的账户,将采用下一种认证方式。
外部认证¶
对web服务器的身份验证可以委托autologin
节,该节指定外部后端。
选项 | 描述 |
---|---|
后端 | 必需的。后端类型。必须设置为外部 . |
strip_username_regexp | 可选的。正则表达式,用于剥离特定的用户名部分。 |
例子:
# vim /etc/icingaweb2/authentication.ini [autologin] backend = external
如果您的web服务器没有配置为身份验证,那么autologin
节不起作用。
Apache与基本认证配置示例¶
下面的示例将向您展示如何使用基本身份验证在Apache中启用外部身份验证。
创建基本认证用户¶
你可以使用这个工具htpasswd
生成基本身份验证凭据。此示例将用户凭据写入.http-users
文件。
下面的命令创建一个新文件,用于添加用户icingaadmin
.htpasswd
将提示您输入密码。如果您想向文件中添加更多用户,则必须省略- c
切换到不覆盖文件。
Sudo htpasswd -c /etc/icingaweb2/。http用户icingaadmin
Apache配置¶
将以下配置添加到& lt; Directory>
指令的icingaweb2.conf
Web服务器配置文件。
AuthType Basic AuthName "Icinga Web 2" AuthUserFile /etc/icingaweb2/。http用户需要有效的用户
重新启动web服务器以应用更改。
示例(CentOS 7):
systemctl启动httpd
Active Directory或LDAP认证¶
如果希望根据Active Directory或LDAP进行身份验证,则必须定义LDAP资源.它被作为Active Directory或LDAP配置方法的数据源引用。
LDAP¶
选项 | 描述 |
---|---|
后端 | 必需的。后端类型。必须设置为ldap . |
资源 | 必需的。中定义的LDAP资源的名称resources.ini. |
user_class | 可选的。LDAP用户类。默认为inetOrgPerson . |
user_name_attribute | 可选的。包含用户名的LDAP属性。默认为uid . |
过滤器 | 可选的。LDAP搜索筛选器。需要user_class 而且user_name_attribute . |
注意,SELinux
如果您在连接LDAP时遇到问题,并且启用了SELinux,请查看一下在这里.
例子:
# vim /etc/icingaweb2/authentication.ini [auth_ldap] backend = ldap resource = my_ldap user_class = inetOrgPerson user_name_attribute = uid filter = "memberOf=cn=icinga_users,cn=groups,cn=accounts,dc=icinga,dc=org"
如果user_name_attribute
指定多个值,它们必须是唯一的。请记住,用户登录时将使用Icinga Web 2验证时使用的用户id(例如别名),而忽略实际的主用户id。
活动目录¶
选项 | 描述 |
---|---|
后端 | 必需的。后端类型。必须设置为msldap . |
资源 | 必需的。中定义的LDAP资源的名称resources.ini. |
user_class | 可选的。LDAP用户类。默认为用户 . |
user_name_attribute | 可选的。包含用户名的LDAP属性。默认为sAMAccountName . |
过滤器 | 可选的。LDAP搜索筛选器。需要user_class 而且user_name_attribute . |
例子:
# vim /etc/icingaweb2/authentication.ini [auth_ad] backend = msldap resource = my_ad
数据库的身份验证¶
如果您想对MySQL或PostgreSQL数据库进行身份验证,您必须定义一个数据库资源将作为数据库身份验证方法的数据源引用。
选项 | 描述 |
---|---|
后端 | 必需的。后端类型。必须设置为db . |
资源 | 必需的。中定义的数据库资源的名称resources.ini. |
例子:
# vim /etc/icingaweb2/authentication.ini [auth_db] backend = db resource = icingaweb-mysql
请阅读这一章以便在数据库中直接手动创建用户。
组¶
导航到配置>应用>鉴权.
组配置存储在/etc/icingaweb2/groups.ini
文件。
LDAP组¶
选项 | 描述 |
---|---|
后端 | 必需的。后端类型。可以设置为ldap ,msldap . |
资源 | 必需的。中定义的LDAP资源的名称resources.ini. |
域 | 可选的。LDAP服务器所负责的域。看到Domain-aware身份验证. |
user_class | 可选的。LDAP用户类。默认为inetOrgPerson 与msldap 而且用户 与ldap . |
user_name_attribute | 可选的。包含用户名的LDAP属性。默认为sAMAccountName 与msldap 而且uid 与ldap . |
user_base_dn | 可选的。在LDAP服务器上可以找到用户的路径。 |
base_dn | 可选的。组的LDAP基准dn。如果不设置为空,将选择使用指定资源的所有可用组。 |
group_class | 可选的。LDAP组类。默认为集团 . |
group_member_attribute | 可选的。存储组成员的LDAP属性。默认为成员 . |
group_name_attribute | 可选的。包含组名的LDAP属性。默认为sAMAccountName 与msldap 而且gid 与ldap . |
group_filter | 可选的。LDAP组搜索过滤器。需要group_class 而且group_name_attribute . |
nested_group_search | 可选的。根据用户在Active Directory中启用嵌套组搜索。默认为0 .只能用后端 类型msldap . |
Active Directory组示例:
# vim /etc/icingaweb2/groups.ini[活动目录]backend = "msldap" resource = "auth_ad" group_class = "group" user_class = "user" user_name_attribute = "userPrincipalName"
Active Directory使用组后端资源示例ad_company
.它还引用已定义的用户后端资源ad_users_company
.
# vim /etc/icingaweb2/groups.ini [ad_groups_company] backend = "msldap" resource = "ad_company" user_backend = "ad_users_company" nested_group_search = "1" base_dn = "ou=Icinga,ou=Groups,dc=company,dc=com"
数据库组¶
选项 | 描述 |
---|---|
后端 | 必需的。后端类型。必须设置为db . |
资源 | 必需的。中定义的数据库资源的名称resources.ini. |
例子:
# vim /etc/icingaweb2/groups.ini [icingaweb2] backend = "db" resource = "icingaweb_db"
Domain-aware身份验证¶
如果有多个具有不同域的LDAP/AD身份验证后端,您应该让Icinga Web 2知道这些域。从2.5版本开始这是可能的,并且可以通过配置每个LDAP/AD后端的域来完成。您也可以使用GUI实现此目的。这使您能够根据LDAP服务器的配置自动发现一个合适的值。(AD: NetBIOS名称,其他LDAP: dns表示法中的域)
例子:
# vim /etc/icingaweb2/authentication.ini [auth_icinga] backend = ldap resource = icinga_ldap user_class = inetOrgPerson user_name_attribute = uid filter = "memberOf=cn=icinga_users,cn=groups,cn=accounts,dc=icinga,dc=com" domain = "www.directade.com" [auth_example] backend = msldap resource = example_ad domain = EXAMPLE
如果您像上面那样配置域,www.directade.com用户“jdoe”将必须以“jdoe@www.directade.com”登录,EXAMPLE员工“rroe”将必须以“rroe@EXAMPLE”登录。他们也可以以“EXAMPLE\rroe”的身份登录,但是一旦用户登录,这将被转换为“rroe@EXAMPLE”。
谨慎!
在现有的设置中启用域感知或更改域需要迁移Icinga Web 2配置中的用户名。咨询
Icingacli——帮助迁移配置用户
获取详细信息。
默认域¶
为了简单起见,可以配置一个默认域(inconfig.ini
).
例子:
# vim /etc/icingaweb2/config.ini [authentication] default_domain = "www.directade.com"
如果您像上面那样配置默认域,用户“jdoe@www.directade.com”将能够在登录时只输入“jdoe”作为用户名。
它是如何工作的¶
活动目录¶
当用户“jdoe@ICINGA”登录时,Icinga Web 2会遍历所有已配置的认证后端,直到找到一个为该用户负责的认证后端——例如,具有“Icinga”域的Active Directory后端。然后Icinga Web 2要求后端使用sAMAccountName“jdoe”对用户进行身份验证。
SQL数据库¶
当用户“jdoe@www.directade.com”登录时,Icinga Web 2会遍历所有配置的认证后端,直到找到一个为该用户负责的认证后端——例如MySQL后端(SQL数据库后端不是域感知的)。然后,Icinga Web 2要求后端用用户名“jdoe@www.directade.com”对用户进行身份验证。