问题标签 [jgss]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 令牌交换期间出现 KrbException 错误
我正在测试默认的 oracle 示例客户端和服务器代码:
http://pastebin.com/FjGMGwmN
并在 linux 上遇到了这个奇怪的错误(在 Windows 中这是另一个错误,我将打开另一个问题):
KrbException:无效参数 (400) - 找不到适当类型的密钥来解密 AP REP - 使用 HMAC SHA1-96 的 AES256 CTS 模式
我找不到如何修复它的信息:(
java - 如何正确模拟 GSSManager?
我想使用 Powermock 模拟 GSSManager 进行单元测试。由于这个错误,当我做 mockStatic(GSSManager.class) 时它失败了:
我不明白为什么。GSSManager 中的 getInstance 返回新的 GSSManagerImpl
我认为这可能是链接错误:
java - 用户解锁后未重新生成 Windows 机器上的 Kerberos 缓存票证
我有一个 java 服务器和客户端应用程序。这些应用程序在 Windows 机器上运行。客户端使用 kerberos 身份验证登录服务器。它是使用 jgssapi 实现的。
首先,客户端从系统中检索存储的缓存 tgt 票证以从 kdc 生成令牌。问题是 - 在 Windows 中锁定用户会话(锁定屏幕或更改用户)后,系统中没有缓存的 tgt 票证(由 C:\Windows\System32\klist.exe 检查)。据我了解,我可以通过在计算机上注销/登录用户来获取它们。
这个问题发生在我的客户机器上。锁定后有空的缓存票列表。
它没有在我的办公室复制(使用 Windows 7 的客户端,win server 2008 上的活动目录服务器)。锁定后,我总是在机器上有新的 REGENERATED 缓存 tgt 票(不是锁定前的工作,而是解锁后再次生成)。没有为此行为设置特殊的 GPO(关于使用以前用户会话Kerboros 缓存票证在使用 Windows 锁定屏幕后删除的缓存票证的问题)。
所以我不明白为什么系统在解锁后不重新生成缓存的tgt?怎么做?
我在这里找到了类似的问题https://social.technet.microsoft.com/Forums/ie/en-US/be5ebc3b-d915-4acb-a9ae-67c61ee03b97/service-tickets-kerberos-purged-on-ctrlaltdel?forum= winserverDS&prof=required 答案之一是“首先看看你有什么 klist,然后锁定和解锁你的屏幕。如果你有连接到 DC,你将获得本地主机和 KDC 的服务票证和 TGT ,如果你没有连接,你将一无所有。”
与 AD 的连接成功。我可以ping通。我可以使用 AD-explorer 获取信息连接。还是与DC的连接不一样?
谢谢。
java - Tomcat 在 OpenJDK 11 上找不到类
从 OracleJDK 8 迁移到 OpenJDK 11 后,我们的 Tomcat 8 不再启动,但出现以下异常:
我们的 Spring Boot (Kotlin+Java) 项目是由 Gradle 5.2.1 构建的,我尝试将以下配置添加到我们的 build.gradle:
不幸的是,这并不能解决问题。如果有人有建议,将不胜感激!
java - Java 12 中的“Windows 上的默认原生 GSS-API”是否可以通过使用执行 JVM 的用户的 Krb5 主体来支持带有 JAAS 的 SSO?
Vanilla Krb5LoginModule 正在工作,提示输入凭据
JAAS -> JGSS -> Kerberos -> Windows
到目前为止,在我的适度使用中,我设置了一个Krb5LoginModule
When I do:
... 提示我输入凭据,操作成功。
使用 TGT Session Key hack,可以避免提示输入凭据
如果我还添加useTicketCache=true
到登录模块,并且我忍受了设置的安全隐患HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\AllowTgtSessionKey=1
并且不使用 Windows 10 Credential Guard,那么操作会成功且不会提示输入凭据。
即使在 Windows 上,Java 12 也为我们提供了默认的原生 GSS-API 库
Java 11.0.10引入了在 Windows 上使用本机 GSS-API 实现的可能性,但没有提供默认实现。Java 12添加了桥接到 Windows SSPI的 GSS-API 的本机实现。这避免了冒险的需要AllowTGTSessionKey
。
使用本机 GSS-API 也可以,提示输入凭据
在 Windows 上的 Java 15.0.2(Oracle 和 OpenJDK)上,尽管有文档)仍然(现在错误地)声称“Windows 上没有众所周知的本机 GSS-API 库”,我可以:
- 省略
java.security.krb5.realm
和java.security.krb5.kd
系统属性(我用它来代替成熟的 kr5.conf,因为我的 AD 环境很简单);和 - 仅指定
sun.security.jgss.native=true
.
...并且操作提示输入凭据,但成功。
但是本机总是提示输入凭据
sun.security.jgss.native=true
在使用(在 Windows 上的 JDK 15.0.2 上)JAAS -> JGSS -> Kerberos -> Windows
尝试通过 SSPI 使用 Windows LSASS 来获取执行 JVM 的用户的凭据时,我可以期待吗?或者这不是本机GSS-API -> SSPI
库促进的东西吗?地面信息稀薄!
java - 告诉 Java 从指定位置选择 Kerberos ticketCache
在我的应用程序中,我有一个内存票,我写了一个文件(类似于我们使用的文件kinit -c
)并希望将它传递给 Java 并建立一个 JDBC 连接。
我在网上读到有办法做到这一点;通过设置 env 变量KRB5CCNAME
或ticketCache
在 JAAS conf 文件中设置。
但就我而言,我收到来自不同用户的多个请求,所以我确实有不同的缓存文件,所以我想要的是在运行时将此凭据缓存传递给 Java 并建立连接。具有不同缓存的新请求由一个新的 Java 线程处理,该线程设置凭证缓存并再建立一个连接。
PS:我在网上看到了相关的东西,但不是我想要的。
java - 在 graal 中将 spnego 和 kerberos 与 gss 一起使用
我正在尝试在新的 Quarkus 应用程序中重用一些启用 spnego 身份验证的现有代码。Quarkus 应用程序在编译为标准 JAR 并与 OpenJDK 11 一起运行时可以完美运行。一旦我将它打包为本机可执行文件(在 linux 上),我就会得到以下异常:
我对 Graal 还很陌生,不确定我需要添加什么才能让它工作(或者它是否是当前支持的东西)。
我确实遇到了一些问题,我已经为,启用了反射sun.security.provider.ConfigFile
,这对它们进行了整理,不幸的是我不确定如何处理丢失的键类型。sun.security.jgss.GSSContextImpl
sun.security.jgss.GSSManagerImpl
这是代码示例
java - 我使用 Krb5LoginModule 还是 LdapLoginModule
对不起,如果这是一个愚蠢的问题。当我想检查用户是否存在或授权时,我是否使用 LdapLoginModule?当我想检查用户是否有工作票时,我是否使用 Krb5LoginMoudle?
问候, 杰姆鲁格