2015-05-21 3 views
-1

У меня есть веб-служба с поддержкой REST WCF с использованием проверки подлинности Kerberos. В OperationContext содержится все, что я ожидаю получить от ADFS. Однако, как я могу извлечь фактический билет Kerberos? Мне нужен этот билет для создания KerberosReceiverSecurityToken, чтобы я мог общаться с ADFS.
Использование WireShark Я могу видеть билет на уровне HTTP. Нужно ли мне реализовать пользовательский обработчик HTTP для извлечения билета?Извлечение Kerberos Билет из метода WCF 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; 
    } 
    } 
}