Spring Boot MSSQL Kerberos认证

9

目前在我的Spring Boot application.properties文件中,我正在指定以下行来连接到MSSql服务器。

spring.datasource.url=jdbc:sqlserver://localhost;databaseName=springbootd

spring.datasource.username=sa

spring.datasource.password=Projects@123

我想使用Kerberos进行用户认证,而不是提供用户名和密码,我需要作出哪些更改?

我尝试在JPA官方文档中搜索,但没有找到。感激任何线索。


1
你尝试过使用https://docs.spring.io/spring-security-kerberos/docs/1.0.2.BUILD-SNAPSHOT/reference/htmlsingle/#ssk-spnego吗? - Naveen
这个细节太多了。 - ThinkGeek
@Naveen,那份文档只是为了通过Kerberos在Spring应用中启用身份验证。 - MuratOzkan
1个回答

11

基本上,您需要正确设置krb5.conf文件。您可以通过以下命令验证配置,并输入密码:

基本上,您需要正确设置krb5.conf文件。您可以通过以下命令验证配置,并输入密码:

kinit <user-name>

此外,请确保您有一个类似于 JDBC URL 的URL:

jdbc:sqlserver://servername=server_name;integratedSecurity=true;authenticationScheme=JavaKerberos;userName=user@REALM;password=****

详情请参见Microsoft JDBC驱动程序文档

编辑:

忘记提到启动参数。请添加以下JVM参数:

-Djava.security.krb5.conf=<PATH_TO>/krb5.conf

我相信如果您使用默认的krb5.conf,则这不是必需的,但并不完全确定。


谢谢,JDBC URL需要userName=user@REALM;password=****吗? - ThinkGeek
我不认为那是必要的,但也不能完全确定。spring.datasource.usernamespring.datasource.password属性应该会处理那个问题。 - MuratOzkan
添加配置"spring.datasource.username=sa"和"spring.datasource.password=Projects@123"没有意义,因为这正是我们试图通过使用kerberos来防止的。我授予您赏金,因为它将在接下来的24小时内过期,并且在此之后将没有用处。总之,我仍然没有得到任何令人满意的答案,对我来说,看起来您认为即使我们使用kerberos,"username"和"password"也是必需的。 - ThinkGeek
根据我的理解,添加“spring.datasource.url=jdbc:sqlserver://servername=server_name;integratedSecurity=true;authenticationScheme=JavaKerberos;”应该可行。但这需要我进行测试。 - ThinkGeek
2
当应用程序在未配置Kerberos登录的操作系统中运行时,或者您需要使用不同于用户登录凭据的凭据进行数据库连接时,应要求输入“用户名”和“密码”。这最终取决于您的使用情况。 - MuratOzkan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接