在IIS中使用Windows身份验证托管WCF服务,无需匿名访问
发布时间:2020-12-14 01:54:47 所属栏目:Windows 来源:网络整理
导读:我想使用IIS(5/6)中托管的WCF服务,启用集成的 Windows身份验证并禁用匿名访问.我尝试按照 http://msdn.microsoft.com/en-us/library/ff648431.aspx执行此操作,但收到错误,说明未安装证书.但我不需要SSL.我没有任何客户期望较旧的ASMX服务,所以我不需要使用ba
我想使用IIS(5/6)中托管的WCF服务,启用集成的
Windows身份验证并禁用匿名访问.我尝试按照
http://msdn.microsoft.com/en-us/library/ff648431.aspx执行此操作,但收到错误,说明未安装证书.但我不需要SSL.我没有任何客户期望较旧的ASMX服务,所以我不需要使用basicHttpBinding(并且它也不安全),所以我尝试使用wsHttpBinding.
如何在没有SSL的情况下使用Windows身份验证的wsHttpBinding工作?这是一个常见的要求,但我找不到任何解决方案.有人可以发布客户端和服务器的配置吗?我正在使用ASP.NET客户端. 我的配置如下.确切的错误信息是:
我使用“svcUtil”实用程序为客户端生成代理类和配置. server: <system.serviceModel> <bindings> <wsHttpBinding> <binding name="wsHttpEndpointBinding"> <security mode="Transport"/> </binding> </wsHttpBinding> </bindings> <services> <service behaviorConfiguration="WCFTest.Service1Behavior" name="WCFTest.Service1"> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding" name="wsHttpEndpoint" contract="WCFTest.IService1"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="WCFTest.Service1Behavior"> <!-- To avoid disclosing metadata information,set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes,set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> client: <system.serviceModel> <bindings> <wsHttpBinding> <binding name="wsHttpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> <security mode="Transport"> <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> <message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="true" /> </security> </binding> </wsHttpBinding> </bindings> <client> <endpoint address="https://mymachine/WCFTest/Service1.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpEndpoint" contract="IService1" name="wsHttpEndpoint"> <identity> <userPrincipalName value="mymachineASPNET" /> </identity> </endpoint> </client> </system.serviceModel> 解决方法
我最终使用了basicHttpBinding,如文章
http://msdn.microsoft.com/en-us/library/ff648505.aspx中所述.如果有人感兴趣,请在下面发布客户端和服务器的配置.客户端配置使用“svcutil”生成.
server config: <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpEndpointBinding"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding> </basicHttpBinding> </bindings> <services> <service behaviorConfiguration="WCFTest.Service1Behavior" name="WCFTest.Service1"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpEndpointBinding" name="BasicHttpEndpoint" contract="WCFTest.IService1"> </endpoint> </service> </services> <behaviors> <serviceBehaviors> <behavior name="WCFTest.Service1Behavior"> <!-- To avoid disclosing metadata information,set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes,set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> client config: <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://machinename/WCFTest/Service1.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpEndpoint" contract="IService1" name="BasicHttpEndpoint" /> </client> </system.serviceModel> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在Windows 7 64上安装IPython 0.12
- 通过Powershell或Batch将文件从Windows转换为UNIX
- 使用Windows XP和两个单独的Linux安装对双启动进行分区建议
- windows-installer – 安装程序不会覆盖为客户端分支的旧DL
- xaml – 如何在Windows Phone 8.1通用应用程序中使用Window
- Windows Service Plus GUI / C#
- windows-10 – Windows 10移动设备错误:DEP6200
- Clickonce App不以Windows 1803开头
- Windows版本的GDB前端DDD
- windows-installer – InnoSetup MsiQueryProductState