Java 8 Java8Kerberos约束的委托

Java 8 Java8Kerberos约束的委托,java-8,kerberos,Java 8,Kerberos,有没有关于如何使用Java8/7执行受限委派的示例。我试着四处寻找,但运气不好 致以最诚挚的问候以下是Java 8代码片段,它允许为模拟用户生成带有TGS票证的SPNEGO令牌: GSSManager manager = GSSManager.getInstance(); GSSName userName = manager.createName("targetUser", GSSName.NT_USER_NAME); GSSCredential impersonatedUserCreds =

有没有关于如何使用Java8/7执行受限委派的示例。我试着四处寻找,但运气不好


致以最诚挚的问候

以下是Java 8代码片段,它允许为模拟用户生成带有TGS票证的SPNEGO令牌:

GSSManager manager = GSSManager.getInstance();
GSSName userName = manager.createName("targetUser", GSSName.NT_USER_NAME);
GSSCredential impersonatedUserCreds =
  ((ExtendedGSSCredential)serviceCredentials).impersonate(userName);

final Oid KRB5_PRINCIPAL_OID = new Oid("1.2.840.113554.1.2.2.1");
GSSName servicePrincipal =
  manager.createName("HTTP/webservice-host.domain.ltd", KRB5_PRINCIPAL_OID);
ExtendedGSSContext extendedContext =
  (ExtendedGSSContext) manager.createContext(servicePrincipal,
                                             new Oid("1.3.6.1.5.5.2"),
                                             impersonatedUserCreds,
                                             GSSContext.DEFAULT_LIFETIME);
final byte[] token = extendedContext.initSecContext(new byte[0], 0, 0);
注意,尚未建立扩展上下文。可能需要与服务器进行多轮对话

一个简单的演示代码可以在


您也可以参考以下项目代码:

我正在获取-KDC无法容纳所请求的选项(13)任何想法?它只在允许协议转换时工作。选择“仅使用kerberos”选项时失败。这是预期的。ActiveDirectory选项“仅使用kerberos”涉及最终用户TGT标记为可转发的“kerberos V5委派”,这可能会导致安全问题。这正是创建Kerberos约束委派的关键点,最终用户TGT不再需要是可转发的:因此总结一下,“仅使用Kerberos”选项不允许Kerberos约束委派,ActiveDirectory希望您列出服务希望请求TGS的所有资源。我只讨论约束委派的情况。在“仅信任此用户授权给指定服务”下,您可以看到两个选项。“仅使用Kerberos”和“使用任何身份验证协议”(又名协议转换)您的解决方案仅适用于协议转换。对于“仅限Kerberos”设置,您需要使用当前服务的用户TGS获取另一个服务的TGS。这在示例代码中没有涉及。我在这里总结了所有必要的细节: