WCF - > ILM - >网络服务 - > SQL Server

时间:2009-10-11 04:56:30

标签: c# sql-server wcf web-services ldap

我的雇主目前通过Web服务服务器上的C#sqlDataAdapters和sqlCommands或应用程序中的组件访问数据库的大部分内容。这些应用程序主要是在Intranet和Internet上运行的Windows窗体应用程序,具体取决于它们的功能。

我一直在研究WCF,我觉得这对我们来说非常合适。我的经理也有一份ILM(MS身份生命周期管理服务器),他希望用它来为我们所有的应用程序提供SSO支持以进行身份​​验证和授权。

我们的应用程序从数据库请求数据,主要在dataTables中返回。我知道收藏品更好,它只是使用的既定做法。因此,我试图找到一个安全的解决方案,通过ILM进行身份验证,并在数据集中将数据返回到客户端(首先,稍后迁移到集合)从webServices服务器。

我的问题是这项工作还是太慢了?

  1. 客户端调用WCF请求数据的例程
  2. WCF服务器检查ILM以查看是否可以这样做
  3. WCF调用webServices服务器以获取数据
  4. 数据集或集合将传回客户端。
  5. 如果可行,我将如何连接到ILM进行身份验证。是否有一种灵活的方式在Web.Config文件中执行它或我是否必须在我自己的消息级别上执行此操作?

    提前致谢。

2 个答案:

答案 0 :(得分:2)

我熟悉ILM。它不是身份验证服务。 ILM意味着Identity Lifecule Manager,它可以很好地描述它可以做什么。它可以配置新用户,取消配置旧用户,并允许您在身份存储之间复制身份数据。它还提供密码同步服务。您仍然使用Active Directory或AD LDS(ex-ADAM)或AuthN和AuthZ的其他目录。

虽然ILM会存储大量有关您用户的数据,但我们强烈建议您不要直接访问这些数据。

[编辑]

ILM不提供LDAP服务。把它想象成一个经理:它本身不做任何工作,它只是定期重新划分事物。当您的经理以电子邮件的形式移动数据时,它会以帐户详细信息的形式移动数据。

ILM是一种用于管理目录和数据库之间身份的工具。在单个商店,SQL,AD或任何其他商店的上下文中考虑ILM是没有意义的 - 它的工作是在商店之间编组数据。如果只有一家商店,那就无所事事了。

这是一个典型的场景:您创建一个名为People的SQL表,其中包含firstName,lastName,jobTitle,department,uniqueID,startDate和endDate的列。 ILM被挂在这个表中。它每天导入,并有一个新行。 ILM使用此行中的数据在AD中创建用户ID,在Domino中创建另一个用户ID,在另一个SQL数据库中创建另一个用户ID。它使用jobTitle和department字段分配AD中的组成员身份,Domino中的邮件列表和SQL中的权限。

用户启动并工作几周后再辞职。您在表中设置了endDate,ILM会在下次导入时注意到此更改。它会将AD帐户更新为在该日期到期,并存储延迟操作以在90天后将其删除。 90天后,它会删除该帐户。与其他账户一样。

您可以使用您的人事系统而不是SQL表,但(a)它通常不是正确的格式或足够及时维护,(b)他们经常发痒让您可以访问他们的数据。

答案 1 :(得分:0)

我对ILM并不是很熟悉,但我猜测它对于特定的数据查询非常精细。使用WCF,您可以通过实施IAuthorizationPolicylike so)并提供您自己的“主体”来挂钩您自己的身份提供者。我怀疑编写一个与ILM有效的主体很容易,但这可能是针对非常广泛的检查 - “我是否有CustomerAudit访问权限”,而不是“我能否为客户访问CustomerAudit”在东北“。

使用委托人的一个好处是你也可以对方法使用[PrincipalPermission]检查,因此你不需要在你的代码中添加广泛的安全检查(CLR强制执行)直接[PrincipalPermission]