[英]How do I authenticate user between ASP.NET and WCF?
我们正在开发基于浏览器的Intranet应用程序。 所有用户都有活动目录帐户,因此显而易见的选择是使用集成Windows身份验证。 但是将有多个用户访问同一台客户端计算机,因此我们决定使用基于表单的身份验证(但针对AD进行身份验证)。
在这种情况下,什么是在我的ASP.NET应用程序(IIS)和WCF服务(另一个服务器IIS 7)之间进行身份验证的最佳方法。 我不想使用asp.Net兼容模式或证书。
我正在考虑创建另一个域帐户来验证ASP.NET和WCF。 我还将有关当前ASP.NET用户的信息传递给WCF作为标题信息。 这是正确的方法吗? 下面的代码将从ASP.NET调用以访问并获取每个服务方法。
// Call WCF service from ASP.NET Application using a new domain account for each call.
proxy.ClientCredentials.Windows.ClientCredential.Domain = "mydomain";
ServiceReference.HelloWorldClient proxy = new ServiceReference.HelloWorldClient();
proxy.ClientCredentials.Windows.ClientCredential.UserName = "new_domain_account";
proxy.ClientCredentials.Windows.ClientCredential.Password = "password";
有没有更好的方法从ASP.NET验证WCF?
谢谢,阿什。
向WCF服务验证ASP.NET应用没有什么特别的。 所有常规身份验证选项均可用(用户名,X.509,Windows)。
有趣的是,您还希望传递基于浏览器的客户端凭据。 这是一种称为可信子系统的已知模式。 是的,只要邮件受到保护(加密),就可以在标头中传递这些密码。
听起来这不是WCF问题,而是浏览器透明身份验证的问题。
尝试在IIS中为ASP.NET应用程序禁用Windows集成的身份验证,然后切换为基本身份验证或摘要身份验证。 这两个都仍将针对AD进行身份验证,但是浏览器将不会透明地对登录的用户进行身份验证。
然后在您的ASP.NET应用程序中,让它使用模拟并将IIS知道的所有凭据传递给您正在调用的WCF服务。
嗯...如果您有AD并且他们使用其凭据登录,则无论他们使用的是哪种计算机,都只需使用AD。 那么,如果他们使用同一台计算机呢?
无论如何,Microsoft在此都有很多有关此问题的信息:
http://wcfsecurity.codeplex.com/wikipage?title=Application%20Scenarios&referringTitle=首页
看看这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.