我有一个应用程序,该应用程序需要使用GSSAPI连接到MariaDB DB 10.1版。 我已经在数据库端启用了GSSAPI插件,并通过-
创建了一个用户 create user 'user'@'%' IDENTIFIED via 'gssapi' as 'user';
现在,我正在尝试以-
的身份从应用程序进行连接 Class.forName("org.mariadb.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mariadb://localhost:3305/schema?user='user'&gssapi-principal-name='user@localhost'");
stmt = con.createStatement();
当我尝试从数据库获取连接时出现异常-
java.sql.SQLInvalidAuthorizationSpecException: GSS-API authentication exception
at org.mariadb.jdbc.internal.util.ExceptionMapper.get(ExceptionMapper.java:121)
at org.mariadb.jdbc.internal.util.ExceptionMapper.throwException(ExceptionMapper.java:69)
at org.mariadb.jdbc.Driver.connect(Driver.java:110)
at java.sql.DriverManager.getConnection(Unknown Source)
Caused by: javax.security.auth.login.LoginException: Unable to obtain Principal Name for authentication
at com.sun.security.auth.module.Krb5LoginModule.promptForName(Unknown Source)
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Unknown Source)
at com.sun.security.auth.module.Krb5LoginModule.login(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.access$000(Unknown Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(Unknown Source)
at javax.security.auth.login.LoginContext.login(Unknown Source)
at org.mariadb.jdbc.internal.packet.send.SendGssApiAuthPacket.send(SendGssApiAuthPacket.java:115)
... 46 more
任何想法如何解决?