我正在尝试在ACS(http://msdn.microsoft.com/en-us/library/ee706734.aspx)的明文和签名令牌请求方法之间进行选择。
我唯一想要区分这两种方法的方法是,当有人试图解密HTTPS流量以获取我的密码时,签名方法可以对窃听者进行额外的缓解。在签名的情况下,这将更加困难,因为除了解密HTTPS之外,它还需要打破签名(以便学习签名密钥)。
我是否认为HTTPS足够强大,不需要任何额外的东西来确保没有人可以阅读我的消息?
我的论点可能是在纯文本和签名之间选择ACS的令牌请求方法吗?
答案 0 :(得分:2)
纯文本和已签名的请求都受HTTPS传输的保护。 ACS发布的令牌将符合为依赖方(范围)配置的Web令牌格式,并且已颁发的ACS令牌中的声明将包含转换规则引擎生成的声明的结果。
明文请求涉及向ACS发送服务标识的用户名和密码,范围指示您希望接收的访问令牌的依赖方。在这种情况下,调用者只需知道服务身份凭证即可接收令牌。在明文请求中,声明转换引擎可用的唯一声明是名称标识符声明。
另一方面,签名请求是服务消费者希望向索赔转换引擎提供更丰富的声明集。服务使用者通过创建使用指定的断言格式(通常是SWT或JWT)编码的断言来断言一组声明,并使用对称或非对称签名密钥对断言进行数字签名。
SWT仅支持使用HMAC SHA-256算法进行对称签名,而JWT仅支持对称和非对称签名算法。在这种情况下,服务使用者需要拥有用于对断言进行数字签名的签名密钥。 ACS将验证断言的数字签名,以确保调用者受信任(他们在签名密钥的位置)并且断言未被篡改。然后,声明转换引擎将应用依赖方规则来生成访问令牌。
当您不需要向声明转换引擎提供丰富的声明集(名称标识符足够)或服务使用者不支持断言的加密签名时,请使用明文请求。
当您的声明转换规则需要多个声明以执行输出声明计算时,或者当您的服务使用者已经拥有其希望使用的SAML声明时,请使用已签名的请求。
如果您想要更完整的OAUTH WRAP协议说明,请参阅OAuth WRAP。