使用 kerberos 身份验证的 LDAP 连接池
LDAP connections pooling with kerberos authentication
我试图解决的问题是,当使用 kerberos 连接 LDAP
时,我们每次都请求一个新的 TGT
和会话密钥。这会给 KDC
和网络带来不必要的负载。
我们想使用 LDAP
连接池但带有自定义身份验证,或者以某种方式重用 TGT
.
请协助。
谢谢
有几种方法可以解决这个问题:
- 如果您不打算使用连接池,请使用
LoginContext
获取带有您的 TGT 的 Subject
,只要该 TGT 有效就将其保存在内存中并用acquire/release 实施。一旦你的 Subject
将 new InitialDirContext()
调用包装在 PriviledgedAction
和 Subject#doAs()
中。
- 使用池(这是我在 Spring 中所做的):为此调整 Commons Pool 2 解决方案 implemented by Spring LDAP. Though, Spring's
ContextSource
does not support SASL GSSAPI
mechanism. Luckily, you can use my library。
无论哪种方式,我都使用这两种方法。第一种方法适用于自定义 authenticator/realm 并且在这里非常快。我想知道为什么您的实施如此缓慢 - 不管对您来说慢意味着什么。
我试图解决的问题是,当使用 kerberos 连接 LDAP
时,我们每次都请求一个新的 TGT
和会话密钥。这会给 KDC
和网络带来不必要的负载。
我们想使用 LDAP
连接池但带有自定义身份验证,或者以某种方式重用 TGT
.
请协助。
谢谢
有几种方法可以解决这个问题:
- 如果您不打算使用连接池,请使用
LoginContext
获取带有您的 TGT 的Subject
,只要该 TGT 有效就将其保存在内存中并用acquire/release 实施。一旦你的Subject
将new InitialDirContext()
调用包装在PriviledgedAction
和Subject#doAs()
中。 - 使用池(这是我在 Spring 中所做的):为此调整 Commons Pool 2 解决方案 implemented by Spring LDAP. Though, Spring's
ContextSource
does not support SASLGSSAPI
mechanism. Luckily, you can use my library。
无论哪种方式,我都使用这两种方法。第一种方法适用于自定义 authenticator/realm 并且在这里非常快。我想知道为什么您的实施如此缓慢 - 不管对您来说慢意味着什么。