IP-STSを信頼する紺碧のACSサービスがあります。
アクティブなシナリオでは、最初にユーザー名とパスワードのクレデンシャルを使用してIP-STSからJWTトークンを取得します。Oauth2エンドポイントがあり、すべてが非常にうまく機能します。このIP-STSトークンをAzureACSによって発行されたJWTトークンと「交換」することは可能ですか?もしそうなら、これを行うコードの例はありますか?(さらに悪いことに、私のコードはすべてJavaScript(実際にはTypeScript)ですが、それは実際には問題ではありません)。
更新:ACSOAuth2ドラフト13エンドポイントでヒントに取り組んでいます。
次のように進めます。カスタムSTS(ThinkTecture STS)に、「ACSOAuth2ドラフト13エンドポイント」レルムのJWTトークンを提供するように依頼します。これには、TT STSでグローバルなoAuthクライアントIDとシークレットが必要であり、これらは無関係であると思います。TT STS管理では、このレルム用に構成された対称鍵:key1があります。3部構成のJWTトークンを受け取ります。トークンの署名は確かにkey1で作成されています。次に、このトークンを、指定されたサービスIDとパラメーターからのクライアントIDとシークレットを使用してACSに渡します。
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トークンが無効です。\ r \ nトレースID:b107cda5-393b-4b50-b14a-ebaa0ac41913 \ r \ nタイムスタンプ:2012-12-05 08:58:10Z "}
JWTはベータ版であるため、ACS50027はまだ文書化されていないことを理解しています。難しいのは、これをデバッグする既知の方法がないことです。いや助けてくれてありがとう。