【问题标题】:Spring Boot MSSQL Kerberos AuthenticationSpring Boot MSSQL Kerberos 身份验证
【发布时间】:2018-10-09 00:06:53
【问题描述】:

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

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

spring.datasource.username=sa

spring.datasource.password=Projects@123

我想使用 kerberos 对用户进行身份验证,而不是提供用户名和密码,我必须进行所有更改。

我尝试在 JPA 官方文档中搜索,但找不到任何内容。这里的线索表示赞赏。

【问题讨论】:

标签: java sql-server spring-boot jpa kerberos


【解决方案1】:

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

kinit <user-name>

此外,请确保您有一个 JDBC URL,例如:

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

详情请见Microsoft JDBC driver documentation

编辑:

忘了提及启动参数。添加以下 JVM 参数:

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

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

【讨论】:

  • 谢谢,JDBC URL 需要 userName=user@REALM;password=**** 吗?
  • 我认为没有必要,但并不完全确定。 spring.datasource.usernamespring.datasource.password 属性应该可以解决这个问题。
  • 添加配置“spring.datasource.username=sa”和“spring.datasource.password=Projects@123”是没有意义的,因为这是我们试图通过使用 kerberos 来防止的。我奖励了你一笔赏金,因为它会在接下来的 24 小时内过期,并且在那之后不会有用。我总结一下,我仍然没有得到任何令人满意的答案,在我看来,即使我们使用 kerberos,您也认为“用户名”和“密码”是必需的。
  • 据我了解添加“spring.datasource.url=jdbc:sqlserver://servername=server_name;integratedSecurity=true;authenticationScheme=JavaKerberos;”应该管用。但这需要我进行测试。
  • usernamepassword 当 (i) 应用程序在未配置 Kerberos 登录的操作系统中运行或 (ii) 您想要使用与用户不同凭据的数据库连接时需要登录信息。这最终取决于您的用例。
猜你喜欢
  • 2015-06-22
  • 2018-02-27
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 2020-01-02
  • 2019-02-13
相关资源
最近更新 更多