1

我有两个程序,一个“登录”程序,它使用外部 STS(Google、Facebook 等)登录用户并返回用户拥有的安全访问类型。然后,我想将该信息发送到一个单独的程序,该程序获取该安全访问权限并基于此授予用户权限。

发送该信息的最佳方式是什么?

我已经阅读了一些关于自定义授权管理器服务的内容,但我不确定这是否是我需要的。是否可以只发布安全信息,然后 web.config 将其转化为声明?我应该制作一个新的令牌并发送它吗?

我绝望地迷失了。如果有人可以在网络上的某个地方提供有用的教程,那将不胜感激(因为我的谷歌搜索只发现了冗长的文章,这些文章要么比我需要的多得多,要么少得多)。

特定的代码片段会让我很开心。

谢谢!

编辑:我试图避免将登录系统变成 STS。但我开始觉得我需要这样做。STS 和依赖方之间是否存在中间点?就像可以产生自己的索赔的依赖方?

4

1 回答 1

1

你有几个选择:

  1. 最简单的一个是 ClaimsAuthorizationManager,它可能是您正在寻找的。http://msdn.microsoft.com/en-us/library/ee748497.aspx CAM 是 ASP.NET 身份验证管道中的一个步骤,它在您的应用程序验证从 ACS 传入的安全令牌后立即运行。您可以在此处定义自定义授权逻辑,并且您可以向 IClaimsPrincipal 添加其他声明,以将其传递给您的应用程序。例如,您可以在跨各种依赖方应用程序共享的库中实现 CAM,而不是将授权逻辑集中在服务中。

  2. 如果您的授权规则很简单,即您没有查询任何外部用户属性存储,那么一种选择是使用 ACS 声明转换规则来执行此操作。然后您的应用程序将直接使用 ACS 颁发的令牌。http://msdn.microsoft.com/en-us/library/gg185955.aspx

  3. 但是,如果您的架构绝对需要一个单独的登录服务来使用令牌并使用用户属性等填充新令牌,那么它将需要是一个 STS。构建自己的 STS 可能会很棘手,但是有预制的 STS 可以做到这一点。例如,如果您的应用程序位于 AD 域中,ADFS 2.0 将是一个理想的选择,因为它与 AD 和 ACS 紧密集成,并且具有强大的声明转换功能。

于 2012-02-28T18:06:30.933 回答