通过MVC5中的ADFS支持单个用户帐户和内部组织帐户

时间:2014-09-17 17:17:36

标签: asp.net asp.net-mvc authentication

我们构建了一个新的(即将命中的试用版).NET Web应用程序,它使用个人帐户。所有的身份管理工作正常。该应用程序仅适用于公司员工,但需要在外部提供。身份角色(安全级别)和声明(用户属性)在应用程序中进行管理。

如果用户在Windows计算机上(并登录到域),并且能够登录到应用程序并对Active Directory进行身份验证(如果尚未通过Windows登录)(或非windows设备)。通过外部帐户登录,如facebook未激活(虽然安装了OWIN)。

要明确目标: 应用程序中存在用户帐户,角色和声明由应用程序所有者从应用程序内部而不是由IT部门管理。 如果用户已在其Windows计算机上,则应用程序将识别凭据,并且不需要登录页面。 如果用户不在Windows上(vpn不可用,或在非Windows设备上),则会将其定向到针对Active Directory进行身份验证的登录页面。

该应用程序正在使用所有最新版本的MVC 5.2,EF 6.1和Identity 2.1。

我找到了有关配置Azure以及使用ADFS和代理使用内部部署的信息,但我仍然无法全面了解如何在仍然使用本地的情况下将用户凭据和声明组合在一起用户帐户角色和声明。

如何配置身份验证? 个人用户帐户与AD帐户的关系是什么?

赞赏任何有关如何配置的链接和具体步骤。

2 个答案:

答案 0 :(得分:1)

使用ADFS,它取代了您的登录页面。可以把它想象成facebook登录。当用户来自外部时,ADFS服务器将无法获得Windows身份验证,因此它将显示自己的登录页面。你不必实现任何东西。

唯一重要的部分: adfs服务器Web前端必须发布到互联网,您的应用和adfs登录Web都需要SSL。

您的所有应用都会重定向到adfs服务器并返回。就像默认的facebook登录一样。

另请参阅联合登录的新owin中间件。它比项目模板使用的旧web.config怪物方式更容易。中间件的工作方式与社交登录非常相似。

答案 1 :(得分:0)

顺便说一下: 你也可以使用auth0,如果你想实现一些更复杂的登录场景,而不必担心它带来的麻烦。

他们提供非常酷的服务。虽然我不喜欢依赖第三方Web服务来完成我软件的这么重要的部分。如果Web服务不可用,我的应用程序什么都不做。所以也许最好加倍努力并自己实施。