2010-08-31 127 views
0

我正在尝试编写客户端以使用DFS(Documentum Foundation Services)并尝试使用Kerberos进行单一登录。 Java和C文档中#示例代码(生产力层)提供了以下线,得到的Kerberos二进制令牌:如何获得DFS Kerberos身份验证所需的令牌?

的byte []票= ...

我不知道怎么样到实际上得到了二进制令牌,而“...”对我没有帮助。有谁知道如何使用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

我刚刚想出了.NET,希望分享fo那些可能感兴趣的人。所需要的是WSE3库。确保为您的DFS服务帐户配置Kerberos委派。

所以需要做的是使用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); 
}