跨程序发送自定义ACS声明的最佳方式是什么

本文关键字:最佳 方式 是什么 声明 ACS 程序 自定义 | 更新日期: 2023-09-27 18:25:38

我有两个程序,一个"登录"程序使用外部STS(谷歌、脸书等)登录用户,并返回用户拥有的安全访问类型。然后,我想将该信息发送到一个单独的程序,该程序接受该安全访问,并在此基础上授予用户权限。

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

我读过一些关于自定义授权管理器服务的内容,但我不确定这是否是我在这里需要的。是否可以只通过POST发送安全信息,然后web.config将其转换为声明?我应该制作一个新的代币并发送吗?

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

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

谢谢!

编辑:我正在努力避免将登录系统变成STS。但我开始觉得我有必要这么做了。STS和依赖方之间有什么中间点吗?就像一个可以产生自己主张的依赖方?

跨程序发送自定义ACS声明的最佳方式是什么

您有几个选项:

  1. 最简单的是ClaimsAuthorizationManager,它可能就是您想要的。http://msdn.microsoft.com/en-us/library/ee748497.aspxCAM是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紧密集成,并且具有强大的声明转换功能。