2010-08-31 43 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); 
}