我想验证由STS发出的SessionSecurityToken。通过验证,我的意思是证明令牌不是精心制作的,并且验证令牌是从STS发出的。
从概念上讲,我知道如果STS用它的私钥加密(或签名)令牌,我可以用公钥解密(或验证签名)。据我所知,我使用的STS (ThinkTecture身份服务器)使用对称签名密钥对令牌进行签名。
我收到的SessionSecurityToken包含一个SecurityKeys属性。代表这个安全密钥的是什么?MSDN文档告诉:"获取与此会话关联的键。这通常是一把钥匙。"
是我的STS使用的对称密钥吗?如果是这样,这意味着对称密钥没有得到很好的保护,如果任何人得到了这个密钥,他就可以伪造一个令牌。
是令牌签名吗?如果是这样,我如何验证签名(假设我有对称密钥)?
还有其他有用的信息来帮助我理解我们验证SessionSecurityToken的方式吗?
所以首先- STSes不会发出会话令牌。它们发出(我猜您使用WS-Fed)一个SAML令牌。这个令牌是用X.509证书签名的。
依赖方然后接受传入的SAML令牌并将其转换为会话令牌并将其写入cookie。
为什么要验证呢?