具有多个数据库或提供者的MVC4简单成员身份验证

时间:2013-05-10 09:09:31

标签: asp.net-mvc asp.net-mvc-4 asp.net-membership simplemembership

我正在使用SimpleMembership处理MVC4站点来处理用户帐户和基于角色的身份验证。我们有另一个站点,我们希望在系统上实现单点登录,允许现有站点的用户登录我正在构建的站点。什么是实现这一目标的最佳方式,并希望利用我在MVC4站点上使用的现有基于角色的授权。是否有可能拥有多个成员资格提供者(即使用内置的成员资格提供者,如果找不到用户,则尝试通过我将编写的自定义提供程序进行身份验证(一旦我弄清楚如何!)。或者它会更好放弃内置的会员/角色并自己滚动?

我还想过让WebSecurity检查本地数据库,如果找不到用户,查询第二个数据库,如果用户凭据有效,请为它们创建一个本地帐户。这种方法的一个问题是,如果用户调用Fred在MVC站点上注册,然后来自另一个名为Fred的站点的用户登录,我们就无法创建具有相同用户名的本地帐户。我们可以使用一些文本为用户名添加前缀/后缀,以表明它们来自其他网站但是我们失去了单点登录功能。

我们还希望将来为员工整合AD身份验证。

基本上我正在寻找从多个数据库验证用户身份并继续使用基于角色的身份验证的最佳方法?

我还做了一点挖掘,想知道ADFS是否对此有用。

非常感谢任何帮助或建议!

1 个答案:

答案 0 :(得分:1)

如果可以的话,我建议您使用Identity server来处理所有登录请求并切换到claim based authentication而不是role based authentication

我亲自去了Thinktecture IdentityServer

pluralsight.com有一个很好的课程。

Thinktecture IdentityServer建立在简单的成员资格之上,它支持多种协议,例如

  1. WS联合
  2. WS-信任
  3. OpenID Connect
  4. 的OAuth2
  5. ADFS集成
  6. 简单HTTP
  7. 我建议检查

    祝你好运