建网站需要什么条件,楚雄自助建站系统,培训网站排名,建站公司最新价格6.4.1. 关于RADIUS身份验证
这种认证方法的操作类似于password#xff0c;不过它使用 RADIUS 作为密码验证方式。RADIUS 只被用于验证用户名/密码。因此#xff0c;在 RADIUS 能被用于认证之前#xff0c;用户必须已经存在于数据库中。其中#xff0c;Freeradius是RADIUS不过它使用 RADIUS 作为密码验证方式。RADIUS 只被用于验证用户名/密码。因此在 RADIUS 能被用于认证之前用户必须已经存在于数据库中。其中Freeradius是RADIUSRemote Authentication Dial-In User Service协议服务器的开源版本,可用来提供RADIUS协议的AAA(认证、授权、记账)服务。
6.4.2. RADIUS身份验证原理
RADIUS服务器和KingbaseES服务器通过网络连接。当数据库应用ksql、jdbc等访问数据库执行登录操作时KingbaseES根据应用提供的登录信息向FreeRADIUS服务器发起认证请求。RADIUS依据提供的登录信息产生认证响应KingbaseES根据认证响应决定是否允许登录到数据库。 当使用 RADIUS 认证时一个访问请求消息将被发送到配置好的 RADIUS 服务器。这一请求将是Authenticate Only类型并且包含参数user name、password加密的和NAS Identifier。该请求将使用一个与服务器共享的密钥加密。RADIUS 服务器将对这个服务器响应Access Accept或者Access Reject。不支持RADIUS accounting。
可以指定多个RADIUS服务器这种情况下将会依次验证。如果从一台服务器接收到否定响应则认证失败。如果没有接收到响应则将会尝试列表中的下一台服务器。要指定多台服务器可将服务器名放在引号内并且用逗号分隔开。如果指定了多台服务器所有其他RADIUS选项也可以以逗号分隔的列表给出用来为每台服务器应用个别的值。也可以把选项指定为一个单一值这样该值将被应用到所有的服务器。
6.4.3. 配置RADIUS身份验证
6.4.3.1. 安装 KingbaseES数据库安装
无特殊要求常用方式安装即可。安装完后initdb初始化数据目录。 FreeRADIUS安装
本文示例使用FreeRADIUS配置RADIUS身份验证安装步骤如下 下载freeradius-server-release_3_0_21.tar.gz源代码包。 解压源代码包:tar xvf freeradius-server-release_3_0_21.tar.gz 进入源代码目录执行
$ ./configure
$ make
$ make installFreeRADIUS 编译依赖额外的软件包如系统缺失configure过程会报错安装缺失软件包即可。如无指定安装后默认配置文件路径为:/usr/local/etc/raddb 服务器程序名为radiusd。
6.4.3.2. 配置 KingbaseES配置
使用RADIUS认证时对数据库对象的权限管理部分还是要依赖数据库本身的管理方式。数据库和用户以及对象的访问权限请事先在数据库内创建好。跟RADIUS相关的配置只需要编辑数据目录的sys_hba.conf 文件即可。
下列被支持的配置选项用于 RADIUS
radiusservers
连接到 RADIUS 服务器的名称或IP地址。此参数是必需的。
radiussecrets
和 RADIUS 服务器秘密交谈时会用到共享密钥。这在 KingbaseES 和 RADIUS 服务器之间必须有完全相同的值。推荐使用至少 16 个字符的字符串。这个参数是必需的。
注意
如果KingbaseES编译为支持OpenSSL所用的加密向量将只是强密码。在其他情况下到 RADIUS 服务器的传输应该被视为应该被视为被混淆的、不安全的。如有必要应采用外部安全措施。
radiusports
用于连接到 RADIUS 服务器的端口号。如果没有指定端口则使用默认端口1812。
radiusidentifiers
在 RADIUS 请求中字符串被用作NAS Identifier。 这个参数可以被用作第二个参数标识。例如该用户试图以哪个数据库用户进行认证它可以被用于 RADIUS 服务器上的策略匹配。如果没有指定标识符默认使用kingbase。
如果需要在RADIUS参数值中使用逗号或空格可以通过在值周围加上要两层双引号。例如将空格放入RADIUS机密字符串的示例如下
host ... radius radiusserversserver1,server2 radiussecretssecret one,secret two例如, 配置下列信息的hba文件
据库实例名字为:radius
用户名为:radius
radius用户对radius库有所有权限。
FreeRADIUS服务器ip地址为:127.0.0.1本地不在本地时请替换为远程服务器的IP地址
FreeRADIUS服务器监听端口为1812 默认端口
通讯密钥为: testing123 通讯密钥是为了保护数据库与FreeRADIUS服务器通讯而存在是预共享密钥的方式。必须与FreeRADIUS服务器的配置是一致的可以为不同的认证路径提供不同的密钥。
sys_hba.conf文件内容如下
host radius all 0.0.0.0/0 radius radiusservers127.0.0.1” radiusports1812 radiussecretstesting123相关sys_hba.conf文件各个参数字段意义如下表所示
注意
为防止使用其他方式认证hba文件中如配置有与radius认证冲突的其他项请删除。参数以逗号分割多个值的方式 。例如radiusservers127.0.0.1,192.168.1.1” FreeRADIUS服务配置 认证数据
radius服务器用来鉴别认证是否成功的数据。例如用户名和密码。 radius支持本地数据、LDAP、数据库等多种方式来获取鉴别数据这是由内置的不同模块支持的。本文以本地数据为例来配置本地数据保存在FreeRADIUS的配置文件中。 编辑配置文件目录的users文件/usr/local/etc/raddb/users增加用户及密码。
如下图所示:
# The canonical testing user which is in most of the
# examples.
#
#bob Cleartext-Password : hello
# Reply-Message : Hello, %{User-Name}
#todd Cleartext-Password : toddpassReply-Message : Hello, %{User-Name}radius Cleartext-Password : radiuspassReply-Message : Hello, %{User-Name}增加用户todd和radius对应密码为toddpass和radiuspass 注意在这里添加的用户只是代表用该用户可以通过RADIUS认证还要数据库内已有这个用户才能登录到数据库。 客户端配置
使用FreeRADIUS的认证服务的一方为客户端。本文中的KingbaseES数据库服务器为其客户端。 编辑客户端配置文件/usr/local/etc/raddb/ clients.conf当KingbaseES服务与FreeRADIUS服务在同一台机器时可直接修改原有的localhost项。也可修改或者增加一个新的客户端项。
client KingbaseES {ipaddr 192.168.4.30proto *secret testing123require_message_authenticator nonas_type other # localhost isnt usually a NAS...limit {max_connections 16lifetime 0idle_timeout 30}
}上图中KingbaseES为客户端指定的别名可任意指定。主要关注ipaddr 和 secret两个参数其他参数可不修改。 ipaddr为KingbaseES服务器所在ip地址。 Secret为预共享密钥要与 sys_hba.conf中的配置参数一致。
注意
FreeRADIUS会对其配置文件的所属用户及读写权限检查请不要修改这些文件的权限否则可能导致服务启动不了。
6.4.3.3. 启动服务 启动KingbaseES 启动FreeRADIUS
直接运行命令radiusd即可启动FreeRADIUS服务器建议以调试模式启动这样方便查看认证请求和响应的信息。调试模式启动命令为
#radiusd –X启动调试模式会一直占用终端。启动成功时会输出如下信息
Ignoring ldap (see raddb/mods-available/README.rst)# Loading preacct {...}# Loading accounting {...}# Loading post-proxy {...}# Loading post-auth {...}
} # server default
server inner-tunnel { # from file /usr/local/etc/raddb/sites-enabled/inner-tunnel# Loading authenticate {...}# Loading authorize {...}# Loading session {...}# Loading post-proxy {...}# Loading post-auth {...}# Skipping contents of if as it is always false -- /usr/local/etc/raddb/sites-enabled/inner-tunnel:336
} # server inner-tunnel
radiusd: #### Opening IP addresses and Ports ####
listen {type authipaddr *port 0limit {max_connections 16lifetime 0idle_timeout 30}
}
listen {type acctipaddr *port 0limit {max_connections 16lifetime 0idle_timeout 30}
}
listen {type authipv6addr ::port 0limit {max_connections 16lifetime 0idle_timeout 30}
}
listen {type acctipv6addr ::port 0limit {max_connections 16lifetime 0idle_timeout 30}
}
listen {type authipaddr 127.0.0.1port 18120
}
Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 43719
Listening on proxy address :: port 55298
Ready to process requests6.4.4. 通过RADIUS身份验证连接Kingbase
RADIUS对数据库应用是透明的正常方式连接数据库即可。 ksql客户端请使用符合sys_hba.conf中的radius认证方式的参数(ip、database、user)登录。例如
ksql -U radius -d radius -W radiuspass -h 127.0.0.1使用JDBC连接。示例代码如下
private String url jdbc:postgresql://192.168.137.171:5432/todd;
private String username radiususer;
private String password radiuspass;
private Connection connection null;public Connection getConn() {try {Class.forName(org.postgresql.Driver).newInstance();connection DriverManager.getConnection(url, username, password);} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return connection;
}使用radius认证的登录方式radiusd服务会有认证成功的输出信息如果登录时没用RADIUS认证则不会有输出。