在客户端获取服务凭据

时间:2012-06-20 03:31:54

标签: wcf

我正在尝试通过使用来获取客户端的服务凭据 ServiceSecurityContext.Current.WindowsIdentity.Name。 但是,ServiceSecurityContext.Current将显示为null。

服务和客户端正在使用Windows身份验证,消息安全模式和wsHttpBinding。你的帮助非常高。谢谢。

1 个答案:

答案 0 :(得分:0)

如果你试图在客户端获取服务器的凭证,那么你可能做错了。 如果你正在做其他事情,你可以使用以下设置

BasicHttpBinding basicHttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);              
basicHttpBinding.Security.Transport.ClientCredentialType =HttpClientCredentialType.Windows;                
reportService = new ReportingService2005SoapClient(basicHttpBinding, new EndpointAddress(reportServerUrl));
reportService.ClientCredentials.Windows.AllowNtlm = false;
reportService.ClientCredentials.Windows.AllowedImpersonationLevel =          TokenImpersonationLevel.Impersonation;
reportService.ChannelFactory.Credentials.Windows.ClientCredential =
                    CredentialCache.DefaultNetworkCredentials;

修改

MSDN

  

使用此类可获取有关远程安全上下文的信息   在运行时。客户端创建安全上下文   已成功通过身份验证并授权其访问方法。当一个   消息已成功通过身份验证和授权,具有安全性   来自客户端和当前服务实例的信息可以   从这个类的实例中获取