spring-boot - Spring Boot 和 Kerberos - KrbException:不支持 default_tkt_enctypes 的默认 etypes
问题描述
我正在使用Spring Boot 1.5.6.RELEASE应用程序使用 Kerberos 身份验证将消息发送到Kafka 0.11 。这是我的kafka-jaas.conf
:
KafkaClient{
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
useTicketCache=true
keyTab="/home/tomi/user-matXp.com.keytab"
principal="user/matXp.com@COM";
};
并且application.yml
:
spring:
kafka:
bootstrap-servers: "kafka-server.com:9092"
producer:
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
properties:
security.protocol: SASL_SSL
sasl.mechanism: GSSAPI
sasl.kerberos.service.name: kafka
我正在启动这样的应用程序:
-java -jar -Djava.security.auth.login.config=/home/tomi/kafka-jaas.conf
-Djava.security.krb5.conf=/home/tomi/krb5.conf
kafka-0.0.1-SNAPSHOT.jar &> output.log&
尝试发送消息时,我得到sun.security.krb5.KrbException: no supported default etypes for default_tkt_enctypes
.
在我krb5.conf
default_tkt_enctypes
的定义为aes256-cts-hmac-sha1-96
. 我试图在 krb5.conf 中注释掉该行,但后来我得到了sun.security.krb5.Asn1Exception: Identifier doesn't match expected value (906)
.
任何想法如何解决这一问题?
解决方案
问题是不包括 JCE 无限力量政策。默认情况下禁用。
解决方案是取消注释crypto.policy=unlimited
。$JAVA_HOME/jre/lib/security/java.security
这也可以在应用程序中完成Security.setProperty("crypto.policy", "unlimited");
。
推荐阅读
- php - HasMany 关系在 Laravel 中不起作用
- javascript - 尝试在另一个文件 nodejs 文件中导入导出的变量时出错
- macos - 在 Homebrew 中使用本地依赖项
- ios - 无法连接到 Hasura PostGreSQL docker 容器的 Web 套接字
- unity3d - 为什么我的统一应用程序在我启动另一个应用程序时崩溃?
- java - 将 Stream 包装到 Flux 时的事务处理
- javascript - 如何处理双夏令时浏览器兼容性问题
- python - 如何在 FEED_URI (Scrapy) Python 中传递多个参数
- r - 单击时闪亮仪表板的 dropdownMenu 事件
- python - 从 python 中找不到 Travis 环境变量