2011-09-26 31 views
2

我越来越沮丧地进行身份验证。通常我会使用我不熟悉的术语,所以回答者会误解我的问题。它没有帮助事实,这是许多实现的情况。需要通过连接到数据库的WCF服务对用户进行身份验证

所以,现在我将尝试解释围绕我的项目的事实和要求,以便我可以找到一个好的解决方案的指针。

我将有一个包含我需要的信息的数据库。包含在这个信息中的将是密码的用户名和盐味散列。该数据库将连接到将数据提供给其他前端项目的WCF Web服务。

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

下面是我看到的实现,但无法完全确定如何正确使用。

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

2)使用服务端MembershipProvider的Validata,但然后我必须发送userName密码与每个操作,并且出于安全原因我不能存储密码。

3)然后我发现了一个名为WCF authenticationService http://msdn.microsoft.com/en-us/library/system.web.applicationservices.authenticationservice.aspx的东西,它似乎是我需要的,但我在理解它的工作原理时遇到了问题。我不想成为我的服务的一部分,但它似乎是一个专门的服务。也没有真正解释它如何进行身份验证(我需要基于我的表进行自定义身份验证,而不是为我创建的某个默认表)。这里有一个文章Should authentication be in a separate service for wcf?,我也不知道如何解决。

WCF身份验证服务可以为我提供正确的工具吗?

对于不懂asp.net,web或服务术语的人,你能回答吗?

编辑

这里是一个解决方案,我所期待的,但不能肯定是否存在。

WCF服务公开了在服务中定义的MembershipProvider,RoleProvider,ProfileProvider。

在隶属\提供商\下的MVC web.config中添加MembershipProvider与端点一起添加到服务。与RoleManager等相同

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

然而,我也想限制服务调用本身,即使它们在[Authorized]属性方法中,它可能不会在引用Web服务的其他客户端中如此。如果当一个来自网站的呼叫服务会自动访问forms.authentication cookie,会很喜欢。

+0

你有没有想出一个解决这个问题?我正走向相同的轨道...... –

回答

1

我并不清楚你要准确验证,如果用户登录时,或者当用户访问你的服务是什么。另外,我不确定你对WCF安全解决方案的意义是不是使用服务术语,也不知道你希望如何在不知道asp.net的情况下解决这个问题。尽管我会尽我所能。

  • 如果您在验证用户登录,就可以实现自己的MembershipProvider,并有一个服务请求的凭据,并返回身份验证的用户。
  • 验证通过后,您可以为每个用户分配一个GUID。这个GUID是与每条消息一起传递的ID(在消息头中编码)并验证用户调用服务方法。
  • 这并不涉及运输安全,如果你希望你的消息是通过线路的安全,然而,这是一个不同的问题,不涉及身份验证,你应该配置。

希望这能以某种方式帮助你。我试图使其成为最不可能的技术,并排除任何过于复杂的事情。希望这有助于在某种程度上...

+0

你可以使用术语,你可能只需要解释它的含义。我不是哑巴只是无知的一些技术术语:) 现在我不知道事情是如何在网络安全通常完成。所以起初我需要验证一个用户,然后当他请求一些信息时,我需要确保他被允许访问这个信息。例如,他只能访问他的个人资料信息。 所以,当我看到这个WCF身份验证服务啄我想:也许我可以对抗的MembershipProvider存储服务端进行身份验证,它会自动查找rolse当[授权] MVC侧 –

+0

“如果您在验证用户登录,就可以实现您自己的MembershipProvider并拥有服务请求凭据并返回经过身份验证的用户。“好吧,我知道抽象MembershipProvider,并可以实现。不过,我不明白“服务请求证书”是什么意思。这些证书是什么?它是否存储了cookie? “返回认证用户”好吧,我已经完全失去了你。我想你的意思是某种用户对象,它存储与用户名/密码相关的信息 –

+0

@IngóVals我不是故意暗示你是愚蠢的,安全从来不是一个简单的问题。通过凭据我的意思是基本的用户名和密码并且,通过返回经过身份验证的用户,我的意思是MembershipProvider将返回经过身份验证的用户并将其设置为Cookie,但您还需要返回用户GUID,以便在以后调用该服务时识别他。 – AJC

相关问题