跳到内容

身份验证

您可以根据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文件。

下面的命令创建一个新文件,用于添加用户icingaadminhtpasswd将提示您输入密码。如果您想向文件中添加更多用户,则必须省略- c切换到不覆盖文件。

Sudo htpasswd -c /etc/icingaweb2/。http用户icingaadmin

Apache配置

将以下配置添加到& lt; Directory>指令的icingaweb2.confWeb服务器配置文件。

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组

选项 描述
后端 必需的。后端类型。可以设置为ldapmsldap
资源 必需的。中定义的LDAP资源的名称resources.ini
可选的。LDAP服务器所负责的域。看到Domain-aware身份验证
user_class 可选的。LDAP用户类。默认为inetOrgPersonmsldap而且用户ldap
user_name_attribute 可选的。包含用户名的LDAP属性。默认为sAMAccountNamemsldap而且uidldap
user_base_dn 可选的。在LDAP服务器上可以找到用户的路径。
base_dn 可选的。组的LDAP基准dn。如果不设置为空,将选择使用指定资源的所有可用组。
group_class 可选的。LDAP组类。默认为集团
group_member_attribute 可选的。存储组成员的LDAP属性。默认为成员
group_name_attribute 可选的。包含组名的LDAP属性。默认为sAMAccountNamemsldap而且gidldap
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”对用户进行身份验证。