使用openGauss jdbc 3.0测试国密SM3用户认证

使用 openGauss jdbc 3.0 测试国密 SM3 用户认证

本文出处:https://www.modb.pro/db/393728

openGauss 现在支持四种用户认证方式,通过 postgresql.conf 文件中的参数 password_encryption_type 确定,认证方式与该参数的对应关系如下表所示:

认证方式参数
md5password_encryption_type=0
sha256+md5password_encryption_type=1
sha256password_encryption_type=2
sm3password_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 方式

<groupId>org.opengauss</groupId>
<artifactId>opengauss-jdbc</artifactId>

<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.70</version>

使用下面的 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();
	}

运行结果测试正常

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值