我有一个基本身份验证的WCF服务,需要用户名和密码。我在胖客户端中使用此服务,用户名和密码存储在应用程序中,因此可以轻松传递。
我现在想要将此服务与ASP.NET应用程序一起使用。我启用了安全性,它运行正常。我想知道将这些凭据发送到我的Web服务的最佳方式。我可以使用this.User.Identity.Name轻松获取用户名,但密码更难。当然我可以将它存储在加密的会话变量中,但这是正确的解决方案吗?下面的代码片段显示当前的硬编码密码: -
MyServiceClient client = new MyServiceClient();
client.ClientCredentials.UserName.UserName = this.User.Identity.Name;
client.ClientCredentials.UserName.Password = "Password";
顺便说一句:这是我在这里找到答案多年后的第一个问题,所以请放轻松我: - )
答案 0 :(得分:0)
启用身份验证服务 如果您还没有ASP.NET Web应用程序,请创建一个。 将服务文件(.svc)添加到包含以下指令的Web站点以引用AuthenticationService类,如以下示例所示: VB
<%@ ServiceHost
Language="VB"
Service="System.Web.ApplicationServices.AuthenticationService"
Factory="System.Web.ApplicationServices.ApplicationServicesHostFactory" %>
C#
<%@ ServiceHost
Language="C#"
Service="System.Web.ApplicationServices.AuthenticationService"
Factory="System.Web.ApplicationServices.ApplicationServicesHostFactory" %>
在Web.config文件中进行以下配置设置以配置服务并要求SSL: 在authenticationService元素中启用身份验证服务。 在services元素中定义端点契约,在behavior元素中定义服务行为。在端点协定中包含bindingNamespace属性,如以下示例所示,以防止某些代理生成工具中出现异常。有关WCF端点的详细信息,请参阅Windows Communication Foundation端点。 为ASP.NET兼容性配置serviceHostingEnvironment元素。有关托管WCF服务的更多信息,请参阅WCF服务和ASP.NET。 在需要SSL的bindings元素中创建绑定。有关WCF中传输安全性的更多信息,请参阅传输安全性。 以下示例显示Web.config文件中的system.serviceModel元素,该文件显示上一个列表中描述的配置设置。
<system.web.extensions>
<scripting>
<webServices>
<authenticationService enabled="true"
requireSSL = "true"/>
</webServices>
</scripting>
</system.web.extensions>
<system.serviceModel>
<services>
<service name="System.Web.ApplicationServices.AuthenticationService"
behaviorConfiguration="AuthenticationServiceTypeBehaviors">
<endpoint contract=
"System.Web.ApplicationServices.AuthenticationService"
binding="basicHttpBinding"
bindingConfiguration="userHttps"
bindingNamespace="http://asp.net/ApplicationServices/v200"/>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="userHttps">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="AuthenticationServiceTypeBehaviors">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment
aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
To configure forms authentication
In the Web.config file, configure the Web application to use forms authentication.
The following example shows the authentication element in a Web.config file that is configured to use forms authentication.
<authentication mode="Forms">
<forms cookieless="UseCookies" />
</authentication>
身份验证服务需要Cookie。因此,在身份验证元素中,将cookieless属性设置为&#34; UseCookies&#34;。有关更多信息,请参阅ASP.NET Forms身份验证概述。 安全 如果要传递敏感用户数据(如身份验证凭据),请始终通过安全套接字层(SSL,使用HTTPS协议)访问身份验证服务。有关如何设置SSL的信息,请参阅配置安全套接字层(IIS 6.0操作指南)。