从 WCF 方法 OperationContext 中提取 Kerberos 票证
Extracting Kerberos Ticket from WCF method OperationContext
我有一个使用 Kerberos 身份验证的支持 WCF REST 的 Web 服务。 OperationContext 包含我希望从 ADFS 收到的所有内容。但是,如何提取实际的 Kerberos 票证?我需要这张票来生成 KerberosReceiverSecurityToken,以便我可以与 ADFS 通信。
使用 WireShark,我能够在 HTTP 级别看到票证。我是否需要实施自定义 HTTP 处理程序来提取票证?
感谢帮助!!
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;
}
}
}
我有一个使用 Kerberos 身份验证的支持 WCF REST 的 Web 服务。 OperationContext 包含我希望从 ADFS 收到的所有内容。但是,如何提取实际的 Kerberos 票证?我需要这张票来生成 KerberosReceiverSecurityToken,以便我可以与 ADFS 通信。
使用 WireShark,我能够在 HTTP 级别看到票证。我是否需要实施自定义 HTTP 处理程序来提取票证?
感谢帮助!!
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;
}
}
}