我正在尝试通过使用来获取客户端的服务凭据 ServiceSecurityContext.Current.WindowsIdentity.Name。 但是,ServiceSecurityContext.Current将显示为null。
服务和客户端正在使用Windows身份验证,消息安全模式和wsHttpBinding。你的帮助非常高。谢谢。
答案 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;
修改强>
使用此类可获取有关远程安全上下文的信息 在运行时。客户端创建安全上下文 已成功通过身份验证并授权其访问方法。当一个 消息已成功通过身份验证和授权,具有安全性 来自客户端和当前服务实例的信息可以 从这个类的实例中获取