代码之家  ›  专栏  ›  技术社区  ›  barneytron

如何获取DFS Kerberos身份验证所需的令牌?

  •  0
  • barneytron  · 技术社区  · 14 年前

    字节[]票证=。。。

    我不知道该怎么做 实际获取二进制令牌

    以下是Java和C的示例:

    Java:使用Kerberos身份验证调用服务

    KerberosTokenHandler handler = new KerberosTokenHandler();
    IObjectService service = ServiceFactory
    .getInstance().getRemoteService(..., contextRoot, Arrays.asList((Handler) handler));
    byte[] ticket = ...;
    handler.setBinarySecurityToken(
    new KerberosBinarySecurityToken(ticket, KerberosValueType.KERBEROSV5_AP_REQ));
    service.create(...)
    

    C#:使用Kerberos身份验证调用服务

    KerberosTokenHandler handler = new KerberosTokenHandler();
    List<IEndpointBehavior> handlers = new List<IEndpointBehavior>();
    handlers.Add(handler);
    IObjectService service = ServiceFactory
    .Instance.GetRemoteService<IObjectService>(..., contextRoot, handlers);
    byte[] ticket = ...;
    handler.SetBinarySecurityToken(
    new KerberosBinarySecurityToken(ticket, KerberosValueType.GSS_KERBEROSV5_AP_REQ));
    service.create(...);
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   barneytron    14 年前

    我刚刚为.NET想出了这个办法,想和那些可能感兴趣的人分享。我们需要的是WSE3库。确保为Kerberos委派配置DFS服务帐户。

    所以需要做的是用Kerberos令牌设置KerberosTokenHandler。KerberosBinarySecurityToken来自WSE3。代码如下所示:

    KerberosTokenHandler kerberosTokenHandler = new KerberosTokenHandler();
    
    String servicePrincipalName = “DFS/example66”;  // this is the service principal name for your DFS service account in Active Directory.
    using (KerberosClientContext kerberosClientContext = new KerberosClientContext(servicePrincipalName, true, ImpersonationLevel.Delegation))
    {
          KerberosBinarySecurityToken token = new KerberosBinarySecurityToken(kerberosClientContext.InitializeContext(), KerberosValueType.KERBEROSV5_AP_REQ);
          kerberosTokenHandlerandler.SetBinarySecurityToken(token);
    }