oAuth2 と OpenID を使用したフェデレーション認証/承認を提供するために、IdentityServer3を使用することを検討しています。私たちのプロトタイプは有望であり、基本的なフレームワークが稼働しています。
しかし、問題が発生しました...
ユーザーが認証されると、フレームワークは ID トークンとアクセス トークンをリダイレクト URI のパラメーターとしてクライアント アプリケーションに返します。保護しようとしているアプリケーションの性質上、非常に複雑なクレーム/ロールが必要です。これにより、トークンがかなり大きくなります*。ブラウザーがサポートする最大 URI の長さを超えるほど大きいため、壊れます。
私の質問は、GET ではなく POST トークンを返すように Identity Server を構成できるかどうか知っている人はいますか? または、標準/仕様から逸脱しない別のソリューションはありますか?
*ここで話している主張は、実際にはそれほど大きくありません。例として、IdentityServer3 コード サンプルからのクレームを次に示します。
Claims = new Claim[]
{
new Claim(Constants.ClaimTypes.Name, "Alice Smith"),
new Claim(Constants.ClaimTypes.GivenName, "Alice"),
new Claim(Constants.ClaimTypes.FamilyName, "Smith"),
new Claim(Constants.ClaimTypes.Email, "AliceSmith@email.com"),
new Claim(Constants.ClaimTypes.Role, "Admin"),
new Claim(Constants.ClaimTypes.Role, "Geek"),
new Claim(Constants.ClaimTypes.WebSite, "http://alice.com"),
new Claim(Constants.ClaimTypes.Address, "{ \"street_address\": \"One Hacker Way\", \"locality\": \"Heidelberg\", \"postal_code\": 69118, \"country\": \"Germany\" }")
}
これに、アドレス クレームと同じサイズの別のクレームを追加すると、URI の長さの問題が発生します。