繁体   English   中英

如何在ASP.NET和WCF之间对用户进行身份验证?

[英]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服务。

我根本不了解ASP.NET,但是我已经做了一些WCF,我认为您需要做的是获取“表单登录名”,然后在当前线程中模拟用户,然后启动WCF连接。到另一台服务器。 看看msdn上的这篇文章,可以简单地在WCF中快速了解其中的一些内容。 我不知道如何将其集成到ASP.NET端(就像我说的那样,我对该技术了解为零),但是从概念上讲,我认为这是您必须要做的。

嗯...如果您有AD并且他们使用其凭据登录,则无论他们使用的是哪种计算机,都只需使用AD。 那么,如果他们使用同一台计算机呢?

无论如何,Microsoft在此都有很多有关此问题的信息:

http://wcfsecurity.codeplex.com/wikipage?title=Application%20Scenarios&referringTitle=首页

看看这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM