6.4 Users, Groups, Roles
此页面管理用户/用户组以及角色服务的配置选项,由三个选项卡组成(Services、Users/Groups和Roles),共同完成了对用户,用户组和角色添加,编辑或删除工作。
6.4.1User Group Services
Services是对服务的基本参数的配置,如服务配置信息的存储形式、密码加密方式等。
在此页面中,可以添加,删除或编辑用户/组服务配置。默认情况下,GeoServer中有一个基于XML的用户/组服务,它使用弱PBE加密并使用默认密码策略。
点击“Add new”或者在Services列表中点击想要修改的Service,跳转到服务配置页面。在“Add new”页面中可以选择配置信息的存储形式,其中XML是默认选择的:
- XML
以XML形式存储服务配置信息,是GeoServer默认采用的方式。XML存储有以下配置项:
-
命名:即Service的名称,不能重复;
-
Password
encryption:密码加密方式。这里说的密码有两种,即用户账户密码和外部数据源密码,由于这些密码需要存储在磁盘上,因此强烈建议将它们加密,而不是存储为人类可读的文本。GeoServer提供了Empty、Plain
text、Weak PBE、Strong
PBE和Digest五种加密方式。外部数据源密码用于访问外部资源,要求加密方式必须是可逆的(因此在6.1.2节中只能使用三种方式),而用户账户密码可以使用任何方式。 -
- Empty:任何密码都编码为空字符串,因此是不可逆的。该方案需与后端系统的认证机制相结合,例如基于LDAP或JDBC数据库的用户名/密码身份验证(参考6.2.5)。在这些情况下,将密码存储到本地对于GeoServer没有任何意义;
-
- Plain text:纯文本密码,表示不对密码进行加密。在这种情况下,任何有权访问文件系统的人都可以读取密码,因此,不推荐使用;
-
- Weak PBE:PBE使用用户提供的密码生成加密密钥,此方法是可逆的。Weak PBE使用很基础的加密方法(即DES,其有效密钥长度只有56位),所以相对容易破解。此方法是GeoServer默认使用的;
-
- Strong PBE:Strong PBE使用基于AES 256位算法和CBC的加密方法,密钥长度有256位,在要求使用可逆加密方法时,建议使用Strong PBE。但原生Java可能不支持某些加密方法,导致Strong PBE不可用,需要安装额外的jar包(参见6.1.2);
-
- Digest:摘要加密是不可逆的。它通过迭代100000次SHA-256 加密哈希算法加密密码,而且是单向的,因为几乎不可能被破解,在允许使用不可逆加密方法时,建议使用Digest;
-
Recode existing passwords:是否重新编码已有密码;
-
Password policy:设置密码策略(参考6.3.2)。添加用户/组服务时指定密码策略,在创建新用户时和更改现有用户的密码时起作用;
-
XML
filename:XML文件名,该文件将存储在<data_dir>\security\usergroup\<servicename>\<filename>.xml; -
Enable schema
validation:如果勾选,则每次读取XML文件时都会强制验证,当手动编辑XML文件时,需要启用此选项; -
File reload interval in milliseconds (0 disables):
GeoServer检查XML文件更改的频率(以毫秒为单位)。如果发现文件已被修改,GeoServer将根据文件的当前状态重新创建用户/组数据。此值应在XML文件内容在外部修改而不是通过Web管理界面更改的情况下设置。值为0时不对文件做任何检查。
- JDBC
以数据库形式存储服务配置信息,JDBC存储的配置参数中命名和密码部分与XML相同,另外还有其他参数:
-
JNDI:是否使用JNDI,默认不使用;
-
Driver class name:用于连接数据库的JDBC驱动程序,默认支持org.hsqldb.jdbc.JDBCDriver、org.postgresql.Driver、org.h2.Driver和org.sqlite.JDBC四种;
-
Connection URL:用于创建数据库连接的URL,例如jdbc:postgresql://localhost:5432/postgres;
-
User name/Password:用于测试连接的用户名密码。
-
JNDI resource name:JNDI数据源,当使用JNDI时才会有该参数;
-
Create database tables:在数据库初始化时,是否创建所需的表和索引,这些表和索引在Data
Definition Language文件中定义;
-
Data Definition Language (DDL) file:定义在数据库初始化时,创建表和索引的自定义DDL文件。如果留空,则使用内部默认值usersddl.xml;
-
Data Manipulation Language (DML) file:指定用于访问数据库表的自定义DML文件。如果留空,则使用内部默认值usersdml.xml。
JDBC用户/组服务通过JDBC保存到用户/组数据库,使用多个表管理用户/组信息:
- Users:用户表;
字段 | 类型 | 可空 | 主键 |
---|---|---|---|
name | varchar(128) | NO | YES |
password | varchar(254) | YES | |
enabled | char(1) | NO |
- user_props:用户属性表;
字段 | 类型 | 可空 | 主键 |
---|---|---|---|
username | varchar(128) | NO | YES |
propname | varchar(64) | NO | YES |
propvalue | varchar(2048) | YES |
- groups:用户组表
字段 | 类型 | 可空 | 主键 |
---|---|---|---|
name | varchar(128) | NO | YES |
enabled | char(1) | NO |
- groups:用户组表
字段 | 类型 | 可空 | 主键 |
---|---|---|---|
groupname | varchar(128) | NO | YES |
username | varchar(128) | NO | YES |
- LDAP
以LDAP形式存储服务配置信息,LDAP存储的配置参数中命名和密码部分与XML相同,另外还有与LDAP相关的其他参数,可参考6.2.5节,这里就不一一介绍了。这种服务是只读的,只提供对用户信息的访问,但不允许添加或更改用户和组。
6.4.2 Role Services
在此页面中,可以添加,删除或编辑角色服务配置。默认情况下,GeoServer中有一个基于XML的角色服务。
点击“Add new”或者在Services列表中点击想要修改的Service,跳转到服务配置页面。在“Add new”页面中可以选择配置信息存储形式,其中XML是默认选择的:
与User Group Services不同,这里多了一个J2EE,就是从WEB-INF/web.xml的<security-role>、<security-constraint>和<security-role-ref>元素中提取角色,与LDAP相同,也是只读的。
JDBC角色服务通过JDBC保存到数据库,使用多个表管理角色信息:
- roles:角色表;
字段 | 类型 | 可空 | 主键 |
---|---|---|---|
name | varchar(64) | NO | YES |
parent | varchar(64) | YES |
- role_props:角色属性表;
字段 | 类型 | 可空 | 主键 |
---|---|---|---|
rolename | varchar(64) | NO | YES |
propname | varchar(64) | NO | YES |
propvalue | varchar(2048) | YES |
- user_roles:用户角色表
字段 | 类型 | 可空 | 主键 |
---|---|---|---|
username | varchar(128) | NO | YES |
rolename | varchar(64) | NO | YES |
- group_roles:用户组角色表
字段 | 类型 | 可空 | 主键 |
---|---|---|---|
groupname | varchar(128) | NO | YES |
rolename | varchar(64) | NO | YES |
Add new user
在Users/Groups选项卡中,可以给任意User Group Service添加、配置或删除用户和组。
点击某一User Group Services下的Add new user,弹出新用户配置页面,用户配置有如下内容:
-
User name:用户名;
-
Enabled:是否可用;
-
Password/Confirm password:用户密码;
-
User properties:添加/删除用户自定义属性;
-
Groups:选择用户关联的组。点击Add a new group跳转到Groups选项卡;
-
Roles taken from active role
service:选择用户关联的角色,可以从不同的角色列表中选择;
-
Derived Roles:用户拥有的角色列表,包括关联的组的角色和直接关联的角色。
6.4.4 Add new group
Group的配置项比较简单,且都包含在User中。
Add new role
GeoServer角色用来定义与执行某些任务或访问特定资源相关的权限。角色分配给用户和组,授权他们执行与角色关联的操作。
在Roles选项卡中,可以给任意Role Service添加、配置或删除角色。
点击某一Role Services下的Add new role,弹出新角色配置页面,角色配置有如下内容:
-
Name:角色名称;
-
Parent role:此角色继承的角色,子角色可以继承父角色的所有权限;
-
Role properties:角色自定义属性。
以下角色名称是系统角色,不允许以这些名称命名新的GeoServer角色。
-
- ROLE_ADMINISTRATOR:提供对所有操作和资源的访问;
-
- ROLE_GROUP_ADMIN:管理用户组的特殊角色;
-
- ROLE_AUTHENTICATED:分配给每个成功验证的用户;
-
- ROLE_ANONYMOUS:分配给未登录的用户,前提是启用了匿名身份验证。