使用openGauss jdbc 3.0测试国密SM3用户认证
使用 openGauss jdbc 3.0 测试国密 SM3 用户认证
本文出处:https://www.modb.pro/db/393728
openGauss 现在支持四种用户认证方式,通过 postgresql.conf 文件中的参数 password_encryption_type 确定,认证方式与该参数的对应关系如下表所示:
认证方式 参数
md5 password_encryption_type=0
sha256+md5 password_encryption_type=1
sha256 password_encryption_type=2
sm3 password_encryption_type=3
配置 SM3 认证方式
在 postgresql.conf 文件中配置 password_encryption_type=3,并重启数据库使该参数生效。
openGauss=# show password_encryption_type; password_encryption_type
3
(1 row)
创建用户
openGauss=# create user user_sm3 password 'Admin@1234';
CREATE ROLE
检查数据库存储的密文
openGauss=# select rolname,rolpassword from pg_authid where rolname='user_sm3';
-[ RECORD 1 ]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
rolname | user_sm3
rolpassword | sm35235899e0406d85e4e086db4db7025d53acddb10b86d9988d7b2a1bc250322365df5fcbffc508287f1ef3205a81f8d63f43b87b16235ce7c582a0b6fa226154d7d038a0a9c2bd85aed2a9273cdd55864a481e967b62c63579441c1b03f6c550becdfecefade
pg_hba.conf 文件中配置认证方式为 SM3
host all user_sm3 0/0 sm3
通过 gsql 进行测试可正常连接
[omm@mogdb ~]$ gsql -Uuser_sm3 -p3000 -h... postgres -r --password='Admin@1234'
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=>
使用 openGauss-jdbc 3.0 进行连接测试
需要先下载 bcprov-jdk15on 依赖包,下载链接如下: https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on 选择最新版本即可。
将 bcprov-jdk15on 和 opengauss-jdbc 3.0jar 包直接导入工程或使用 maven 方式
使用下面的 java 代码进行测试
java
public static void main(String[] args) throws Exception{
Class.forName("org.opengauss.Driver");
Connection conn = DriverManager.getConnection("jdbc:opengauss://...:3000/postgres",
"user_sm3","Admin@1234");
String sql = " insert into t values(?)";
PreparedStatement ps = null;
try{
ps = conn.prepareStatement(sql);
ps.setInt(1, 100);
ps.execute();
} catch (Exception e) {
e.printStackTrace();
}
conn.close();
}
运行结果测试正常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了