Active Directory和SSO - 任何有此经验的人?

时间:2009-08-30 12:07:50

标签: sharepoint authentication active-directory single-sign-on

我们希望在我们的组织中实施SSO功能,但我们不确定我们的选项是什么,以及不同解决方案的优点/缺点可能是什么。

- 我们有多个旧的ASP(Active Server Pages)站点,应该使用SSO
- 我们有多个ASP.net web-Applications,应该使用SSO
- 我们希望Sharepoint使用SSO -CRM(Biztalk?)集成(有关用户的其他信息,如地址,公司等)

由于我们主要是.net,c#,面向Microsoft,我的第一个想法是使用Active Directory 我还注意到有一些叫ADAM(Active Directory应用程序模式)和ADFS(Active Directory联合身份验证服务)的东西,但我真的不能说我理解应该使用它们的时间/地点。

以下是不同网络应用程序的简要概述 - “我的个人页面”:用户登录到一个应用程序,他们可以在其中修改他们的个人信息以及他们的公司信息和他们的员工。 (Asp.Net)
-E-learning application(ASP)
-CMS系统用于网络发布(ASP.Net)
- 分享网站

我真的找不到任何可以告诉我的文章“AD是一个很好的选择!,你可以在任何地方使用它”,所以如果有人有任何经验/反馈给我这个,它会真的很有帮助。

另外:如何管理权利/角色?应将每个应用程序的所有访问/权限/角色存储在AD中,还是应将其存储在应用程序本身中。

IE:AD存储角色:
“Cms”< -allowed登录cms系统
“Cms.Article.AddAllowed”< -allowed添加文章
“Cms.Article.DeleteAllowed”< -allowed删除文章

或者应该拆分此信息,以便AD保存有关允许用户登录的应用程序的信息,而应用程序本身保存有关用户在登录时允许在应用程序中执行的操作的信息

AD权利: “Cms”< -Allowed登录cms系统

Cms权利:
“Article.AddAllowed”< -allowed添加文章
“Article.DeleteAllowed”< -allowed删除文章

因此,当用户登录时,它们首先针对AD进行身份验证,如果可以,则从cms系统中的权限表中获取Cms应用程序的权限?

我有什么选择?我还有除AD以外的其他解决方案吗?

感谢您的任何反馈,非常感谢!

2 个答案:

答案 0 :(得分:2)

我们在组织中做了类似的事情。以下是整体流程:

  • 用户请求网页
  • 用户重定向到登录屏幕以及SAML请求
  • 用户针对Active Directory进行身份验证
  • 用户通过SAML回复传递回请求网页
  • 从数据库中检索用户组/权限信息
  • 如果用户从其他网站请求页面发生相同的过程,但是如果用户仍有会话或选择“记住我”功能,则用户没有进行身份验证并直接登录。

我们使用Sharepoint,但还没有设置SSO。我相信Sharepoint从其自己的后端数据库/系统获得用户的权利。我们还有一个本地系统来更新用户的组/权限。我知道Sharepoint可以使用Web服务,因此您可以在使用集中式用户管理系统时更新Sharepoint(当然您必须构建它)。主要的是找出Sharepoint获取用户信息的位置以及如何将现有系统与其绑定...

我不会依赖Active Directory来存储组/权限信息。与数据库相比,它很难处理,并且不灵活。对于身份验证和密码管理来说,只需将Active Directory上的用户绑定到数据库系统即可。

答案 1 :(得分:0)

据我所知,Active Directory仅适用于您域中的用户。您需要管理员来管理所有这些用户并添加新用户。

我自己一直致力于一个项目,我想让用户登录,只是为了了解他们的身份。我甚至不关心他们的访问权限,只是希望每个访问者都有一个身份,比IP地址,cookie,会话密钥或其他任何东西更可靠。所以我首先询问我的管理员是否可以将Active Directory用于此项目。当然,我可以。但是webhost没有连接到我们公司的域名,所以我最终只会有一个用户。是的,我的管理员有时候会有点讽刺。

所以我开始探索SSO选项。像这个网站这样的OpenID是一个不错的选择,您甚至可以实现自己的OpenID服务器,并要求所有访问者首先在那里签名。这是一种非常强大的技术,您可以减少对项目中用户管理的担忧。 (因为OpenID提供商会处理这个问题。)

然而,我最终使用了CardSpace。 :-)使用CardSpace,每个用户都可以创建自己的用户令牌并将其存储在自己的系统上。要登录,网站只需要卡,用户只需点击它即可。这些卡可以迁移到其他系统,但大多数情况下往往绑定到一台计算机和用户。 (虽然用户可以共享一张卡!)

权利和角色与身份验证不同。人们总是认为他们是相互联系的,而实际上,这是两件不同的事情。首先,使用OpenID或CardSpace或其他身份验证技术来验证用户的身份。无论如何识别它们,您只需要一个标识符。 接下来,您需要权利和角色。角色基本上只是用户组,您可以将身份连接到组。或者到多个组。权利将与角色相关联,而不是与用户相关联。但是你如何划分这些角色只取决于应用程序。请记住,您的版本控制系统中的管理员不应该是您的客户数据库中的管理员。角色往往是应用程序定义的,因此每个应用程序都可以管理自己的权限和角色,只需要一种方法将这些与身份相关联。

我自己只需要身份,所以我知道当事情搞砸的时候应该责怪谁。再说一次,当只有5个用户时,事情往往变得非常简单。