我正在尝试编写一个客户端来使用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(...);
答案 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);
}