問題
- OpenIDアクセストークンにはいくつかのものが格納されていますが、ユーザーがログインしようとすると、トークンのサイズがOPENIDCONNECTSESSIONテーブルの ACCESSTOKENカラムで指定された3000文字の制限を超えるため、ログインに失敗します。
Environment
- Liferay DXP 7.2+
- オラクル・データベース
解決策
- 文字数の制限は、業界標準を考慮して設定された。 例えば、idTokenカラムにはvarchar(3999)のサイズ制限が設定されています。これはLiferayサービスビルダのvarcharの最大サイズだからです。 サイズが3999を超えると、テキストまたはブロブ型になり、エントリーの検索が遅くなる。
- 制限は、プロキシ、tomcat、nginxなど、さまざまなHTTPサブシステムがサポートするHTTPヘッダーの関数になる。 仕様で定義された最大サイズはないが、業界の平均サイズは8KBである。 これはヘッダーの合計サイズであることに注意してほしい。 このため、準拠したOIDC(JWT)トークンに格納されているさまざまなフィールド/署名/ハッシュのための余地を残しておく必要があり、平均して約4KBの余白が残る。 トークンのサイズが7KBであれば、それはほぼヘッダー全サイズである。
- これらのトークンはHTTPヘッダーによってのみサイズが制限され、OAuthとOIDCの仕様はサイズを規制しない。 OIDCトークンはHTTPヘッダーを使って共有されるため、インフラがそのサイズをサポートできることを保証する必要がある。
- したがって、これはLiferay側からの必要な制限であり、3KBの制限を作るためにトークン・サイズを小さくすることをお勧めします。
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン