完整 .NET 和 .NET Core 之间的 WCF 基本身份验证
Posted
技术标签:
【中文标题】完整 .NET 和 .NET Core 之间的 WCF 基本身份验证【英文标题】:WCF Basic authentication between Full .NET and .NET Core 【发布时间】:2019-01-28 21:40:17 【问题描述】:我想通过基本身份验证在 .NET 核心应用程序和完整的 .NET Web 服务(托管在 IIS 中)之间建立 WCF https 连接。
在 .NET Core 方面,我有一个 ChannelFactory 设置如下:
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
factory = new ChannelFactory<T>(binding, new EndpointAddress(endpointAddress));
factory.Credentials.UserName.UserName = "abc";
factory.Credentials.UserName.Password = "xyz";
在 web 服务上,我有一个使用这样配置的绑定的端点:
<basicHttpBinding>
<binding name="BasicHttpBinding" maxReceivedMessageSize="10485760">
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None" realm=""/>
</security>
</binding>
</basicHttpBinding>
但在运行时我收到此错误消息:
System.ServiceModel.Security.MessageSecurityException: 'HTTP 请求未经客户端身份验证方案'Basic' 的授权。从服务器收到的身份验证标头是'Basic realm="localhost"'。'
我希望双方都说身份验证方案“基本”,并且可以毫无问题地连接。 我不知道领域是从哪里来的,但我无法摆脱它。我认为这是造成问题的原因。
【问题讨论】:
确保您的密码正确,当凭据出现问题时可能会出现此问题。 看来我什至没有达到这一点。未调用服务器端自定义 UsernamePasswordValidator。 查看这个答案***.com/a/52696777/5077196 【参考方案1】:您已经设置了基本的凭证类型,那么您应该使用 HTTPS , https://localhost/....
【讨论】:
以上是关于完整 .NET 和 .NET Core 之间的 WCF 基本身份验证的主要内容,如果未能解决你的问题,请参考以下文章
无法从完整的 .NET 项目项目引用 .NET Core 类库
面向具有 EF6 和 Identity 的完整框架的 ASP.NET Core
System.Web 可以与具有完整框架的 ASP.Net Core 一起使用吗
.Net Core 2.0 appsettings 与 .net 完整框架使用 ConfigurationManager