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

时间:2010-08-31 22:09:25

标签: kerberos documentum documentum-dfs

我正在尝试编写一个客户端来使用DFS(Documentum Foundation Services)并尝试使用Kerberos进行单点登录。文档中的Java和C#示例代码(生产力层)都提供了以下获取Kerberos二进制令牌的行:

  

byte [] ticket = ...

我不确定如何实际获取二进制令牌,而“...”对我没有帮助。有谁知道如何使用Java或C#获取实际票证(Kerberos令牌)?

以下是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 个答案:

答案 0 :(得分:0)

我只是想出了.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);
}