Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要通过连接到数据库的WCF服务对用户进行身份验证_Wcf_Asp.net Mvc 3_Authentication_Asp.net Membership - Fatal编程技术网

需要通过连接到数据库的WCF服务对用户进行身份验证

需要通过连接到数据库的WCF服务对用户进行身份验证,wcf,asp.net-mvc-3,authentication,asp.net-membership,Wcf,Asp.net Mvc 3,Authentication,Asp.net Membership,我对正确地进行身份验证越来越感到沮丧。通常我使用的术语我不熟悉,所以回答者会误解我的问题。事实上,许多实现都是如此,这一点没有帮助 因此,现在我将尝试解释围绕我的项目的事实和需求,以便我能够找到一个好的解决方案 我将有一个数据库,其中包括我需要的信息。此信息中包括用户名和密码的附加哈希。该数据库将连接到WCF web服务,该服务将数据提供给其他前端项目 其中一个前端项目是一个asp.net MVC 3网站,用户将使用该网站登录等等。现在,此类项目中的默认值是某种SQlMembership,在本例

我对正确地进行身份验证越来越感到沮丧。通常我使用的术语我不熟悉,所以回答者会误解我的问题。事实上,许多实现都是如此,这一点没有帮助

因此,现在我将尝试解释围绕我的项目的事实和需求,以便我能够找到一个好的解决方案

我将有一个数据库,其中包括我需要的信息。此信息中包括用户名和密码的附加哈希。该数据库将连接到WCF web服务,该服务将数据提供给其他前端项目

其中一个前端项目是一个asp.net MVC 3网站,用户将使用该网站登录等等。现在,此类项目中的默认值是某种SQlMembership,在本例中不正确,因为此站点未连接到数据库(它甚至可能不是MSQL数据库)

下面是我看过的一些实现,但我不太清楚如何正确使用

1) 在MVC项目中编写我自己的MembershipProvider,它将查询Web服务以进行验证。这里我的意思是,它只需要调用一些方法来满足它的所有需求。不喜欢它的安全问题,客户端解决方案

2) 使用服务端成员身份提供程序验证,但由于安全原因,我必须在每个操作中发送用户名密码,并且无法存储密码

3) 然后我发现了一个名为WCF authenticationService的东西,它似乎就是我所需要的,但我很难理解它是如何工作的。我不想让它成为我服务的一部分,但它似乎是一项专门的服务。此外,它并没有真正解释它如何进行身份验证(我需要基于我的表进行自定义身份验证,而不是为我创建一些默认表)。这里有一个帖子也有同样的问题,我不知道是怎么解决的

WCF身份验证服务是否适合我

你能为不懂asp.net、web或服务术语的人回答这个问题吗

编辑

这里有一个解决方案,我希望,但不确定是否存在

WCF服务公开服务中定义的成员资格提供程序、RoleProvider和ProfileProvider

在MVC web.config的membership\providers\add下,将添加MembershipProvider以及指向服务的端点。与RoleManager等相同

因此,当我在MVC项目中调用MembershipProvider来验证用户时,它会自动调用服务并在那里进行检查,当发生授权属性时,它还会自动检查服务中的RoleProvider


然而,我也希望限制服务调用本身,即使它们在[Authorized]属性方法中,但在引用web服务的其他客户端中可能不是这样。如果来自网站的呼叫能够自动访问forms.authentication cookie,我会很高兴。

如果用户登录,或者用户访问您的服务,我不清楚您到底想要验证什么。另外,我不知道您不使用服务术语来回答WCF安全问题的意思,也不知道您希望在不了解asp.net的情况下如何解决这个问题。不过我会尽力的


  • 如果您正在验证用户登录,则可以实现自己的MembershipProvider并具有服务请求凭据,然后返回经过验证的用户
  • 经过身份验证后,您可以为每个用户分配一个GUID。此GUID是一个ID,它将随每条消息(编码在消息头中)一起传输,并验证用户调用服务方法
  • 这不涉及传输安全性,如果您希望消息在网络上安全,您应该配置传输安全性,但这是另一回事,不涉及身份验证

希望这能对你有所帮助。我尽量使它尽可能少的技术和遗漏了任何太复杂的。希望这能有所帮助……

您可以使用术语,您可能还需要解释它的含义。我不是哑巴,只是对一些技术术语一无所知:)现在我不确定在网络安全中通常是怎么做的。因此,首先我需要对用户进行身份验证,然后当他请求一些信息时,我需要确保允许他访问这些信息。例如,只有他才能访问他的个人资料信息。所以当我看到这个WCF身份验证服务时,我想:也许我可以针对MembershipProvider存储的服务端进行身份验证,当[授权]MVC端时,它会自动查找rolse“如果您正在验证用户登录,则可以实现您自己的MembershipProvider并具有服务请求凭据,然后返回经过验证的用户。”好的,我知道抽象MembershipProvider并可以实现它。但是我不理解您所说的“服务请求凭据”是什么意思“.这些证件是什么?这是储存的饼干吗?“返回经过身份验证的用户”好的,现在我完全失去了你。我猜你指的是某种存储用户名相关信息的用户对象/password@Ing奥瓦尔,我不是想暗示你是笨蛋,安全从来都不是一个简单的问题。我所说的凭证基本上是指用户名和密码。返回经过身份验证的用户,我的意思是会员资格提供商将返回经过身份验证的用户,并将其设置在cookie中,但是您还需要返回用户GUID,以便在稍后调用服务时能够识别他。我不认为您有暗示,只是开玩笑而已。那么会员资格提供者将是服务方?这是否会使我无法在网站项目中使用[Authorize]属性?令牌/GUID也是您必须手动执行的操作。难道没有一种自动的功能或方式来使用它吗?我希望这就是WCF AuthenticationService。@IngóVals否,会员资格提供商将在y上