【问题标题】:What is the best way to send custom ACS Claims across programs?跨程序发送自定义 ACS 声明的最佳方式是什么?
【发布时间】:2012-02-22 16:57:50
【问题描述】:

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

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

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

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

具体的代码 sn-ps 会让我很开心。

谢谢!

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

【问题讨论】:

  • 你有什么理由在两个不同的应用程序中有这个?
  • 基本上,出于代码清晰的原因,我们正在尝试将登录服务与应用程序的实际批量分开。

标签: c# azure claims-based-identity acs


【解决方案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-07-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 2017-01-03
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多