2

我正在尝试在 ACS ( http://msdn.microsoft.com/en-us/library/ee706734.aspx )的纯文本和签名令牌请求方法之间进行选择。

我想出区分这两种方法的唯一方法是,当有人试图解密 HTTPS 流量以获取我的密码时,Signed 方法提供了针对窃听者的额外缓解措施。在签名的情况下,它会更加困难,因为除了解密 HTTPS 之外,它还需要破坏签名(以便学习签名密钥)。

我认为 HTTPS 被认为足够强大并且不需要任何额外的东西来确保没有人可以阅读我的消息是对的吗?

在纯文本和签名之间为 ACS 选择令牌请求方法时,我的论点可能是什么?

4

1 回答 1

2

明文和签名请求都受 HTTPS 传输保护。ACS 颁发的令牌将符合已为依赖方(范围)配置的 Web 令牌格式,并且颁发的 ACS 令牌中的声明将包含转换规则引擎生成的声明的结果。

明文请求涉及向 ACS 发送服务身份的用户名和密码,范围指示您希望为其接收访问令牌的依赖方。在这种情况下,调用者只需知道服务身份凭证即可接收令牌。在明文请求中,声明转换引擎唯一可用的声明是名称标识符声明。

另一方面,签名请求是当服务消费者想要向声明转换引擎提供更丰富的声明集时。服务消费者通过创建使用指定断言格式(通常是 SWT 或 JWT)编码的断言并使用对称或非对称签名密钥对断言进行数字签名来断言一组声明。

SWT 仅支持使用 HMAC SHA-256 算法的对称签名,而 JWT 同时支持对称和非对称签名算法。在这种情况下,服务消费者需要拥有用于对断言进行数字签名的签名密钥。ACS 将验证断言的数字签名以确保调用者是可信的(他们拥有签名密钥)并且断言没有被篡改。然后,声明转换引擎将应用依赖方规则来生成访问令牌。

当您不需要向声明转换引擎提供一组丰富的声明(名称标识符就足够了)或服务使用者不支持声明的加密签名时,请使用纯文本请求。

当您的声明转换规则需要多个声明以执行输出声明计算时,或者当您的服务使用者已经有一个它希望使用的 SAML 断言时,请使用签名请求。

如果您想更完整地描述 OAUTH WRAP 协议,请参阅OAuth WRAP 。

于 2013-02-23T07:10:05.550 回答