2015-05-21 75 views
-1

我有一個使用Kerberos身份驗證的WCF REST Web服務。 OperationContext包含我期望從ADFS接收的所有內容。但是,如何提取實際的Kerberos票證?我需要此票證來生成KerberosReceiverSecurityToken,以便我可以與ADFS通信。
使用WireShark我能夠在HTTP級別看到票證。我是否需要實現自定義HTTP處理程序來提取票證?從WCF方法提取Kerberos票據OperationContext

感謝您的幫助!

回答

0
foreach(var header in HttpContext.Current.Request.Headers) 
{ 
    string headerVal = HttpContext.Current.Request.Headers[header]; 
    if(headerVal.StartsWith("Negotiate")) 
    { 
    string parts[] = headerValStr.Split(' '); 
    string kerberosStr = parts[1]; 

    //if a header token begins with "YII" its kerberos 
    //otherwise its likely NTLM (or other) 
    if(kerberosStr.StartsWith("YII")) 
    { 
     retVal = Convert.FromBase64String(kerberosStr); 
     break; 
    } 
    } 
}