2011-05-19 35 views
3

我正在使用Azure ACS并将其合并到我的.NET 4.0网站的SSO策略中。我在规则组页面看到可以存储一堆不同的声明并将其传回RP(例如国家,街道地址,电话等)。看起来您也可以返回任何要创建的声明类型。这让我想到了很多与存储用户信息有关的问题:Azure ACS并为用户存储信息vs本地?

  • 在ACS vs本地数据库表中存储用户信息(除nameidentifier之外)是否有意义?
  • 这听起来像你可以在他们内部制定无限的规则组和规则。那是对的吗?
  • 我会处理公司内部的不同公司和用户。为每个公司创建一个规则组,然后为每个用户制定规则是明智的选择?
  • 看起来这个API非常强大,并且可以通过注册页面等来自动完成此操作。正确或不正确?
  • 是否可行并建议针对ACS运行查询以返回有关用户的信息(例如,在他们离线时查询其电子邮件地址以向他们发送关于某事的消息)
  • 您是否可以获取批量信息用于ACS的报告目的?

回答

5

简短的回答一般是“是”,但当然有更长的答案:-)。

在ACS和本地数据库表中存储用户信息(除nameidentifier之外)是否有意义? 是的,它可能是有道理的。但出于优化目的,您可能会在其他地方(应用程序本地)保留一些用户配置文件信息的副本。 ACS规则信息将是“主记录”,只要您获取令牌并检查是否有更改,您就会更新本地存储中的值。

它听起来像你可以在他们内部制定无限的规则组和规则。那是对的吗? 不,“无限”是一个很大的数字。命名空间,依赖方和规则的数量是有限的。检查文档。 ACS还支持“级联”转换,这可以帮助您减少规则的数量。

例如:

  • 电子邮件:[email protected] - >公司:Contoso的
  • 公司:Contoso的 - >语言:英语

的第二个规则将被触发每当声明类型为“公司”,价值“Contoso”已发布。

然后,你可以有:

的 “语言”,要求将被自动添加。

我会处理公司内部的不同公司和用户。为每个公司创建一个规则组,然后为每个用户制定规则是明智的选择? 在多租户环境中,最好为每个租户建立一个依赖方。这就是我们在示例7(Federation With Multiple Partners)中所做的工作:http://claimsid.codeplex.com

看起来这个API非常强大,并且可以通过注册页面自动完成此操作。正确或不正确?

难道是可行的,并建议(当他们离线送他们对某事的消息如查询他们的电子邮件地址)来运行针对ACS查询要返回有关用户的信息 它是可能的。但是,ACS中没有“用户”的概念。所以你必须从规则中解码。您不能像“GetUserprofile(字符串用户)”

您可以获取用于报告目的的批量信息脱离ACS吗? 该API支持批量信息,但对于报告,可能会更好地在您自己的数据库上复制信息。

最后一个思想:ACS规则今天引擎非常简单,只相比有什么ADFS可今天,在这里的规则可真复杂做(如数据库查询等)

做简单的转换(加级联),但没有
+0

谢谢你的伟大答案!我有一个问题是关于多租户环境。我会让来自不同公司的多个用户访问我的SaaS。我的印象是,依赖方是一个URL的代名词。看看示例7,我想我会在我的应用程序中启用路由,以便用户可以输入http://www.robsite.com/ {他们的公司名称},这将转化为ACS的方式? – Rob 2011-05-19 18:50:16