我有一个 azure ACS 服务,它信任 IP-STS。
对于活动场景,我首先使用用户名、密码凭据从我的 IP-STS 获取 JWT 令牌。有 Oauth2 端点,一切正常。是否可以将此 IP-STS 令牌“交换”为我的 azure ACS 颁发的 JWT 令牌?如果是这样,是否有执行此操作的代码示例。(更糟糕的是,我所有的代码都在 JavaScript 中(实际上是 TypeScript),但这并不重要)。
更新:我正在使用 ACS OAuth2 草案 13 端点处理您的提示。
我进行如下操作:我要求我的自定义 STS(ThinkTecture STS)给我一个用于“ACS OAuth2 Draft 13 endpoint”领域的 JWT 令牌。这需要 TT STS 中全局的 oAuth 客户端 ID 和机密,我认为它们无关紧要。在 TT STS 管理中,我为此领域配置了一个对称密钥:key1。我收到了 3 部分的 JWT 令牌。令牌上的签名确实是用 key1 进行的。然后,我将这个令牌传递给 ACS,其中客户端 ID 和密钥来自指定的服务标识和参数
var form = new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "grant_type", "http://oauth.net/grant_type/jwt/1.0/bearer" },
{ "assertion", rawtoken (the header dot body dot signature form TT STS },
{ "scope", "http://localhost"}
});
不幸的是,我现在得到 {"error":"invalid_client","error_description":"ACS50027: JWT token is invalid. \r\nTrace ID: b107cda5-393b-4b50-b14a-ebaa0ac41913\r\nTimestamp: 2012-12-05 08:58:10Z"}
我了解 JWT 处于测试阶段,因此 ACS50027 尚未记录。困难的部分是没有已知的调试方法。谢谢你的帮助。