Java アプリケーションでpac4jを使用して、Tomcat フィルターまたは Tomcat バルブを作成したいと考えています。フィルターまたはバルブは、標準の OAUTH2 認証コード フローを使用して OpenID Connect をサポートする必要があります。これを行うには、 j2e-pac4jの上に構築する方がよいでしょうが、 j2e- pac4j で OAUTH2 フィルターを使用することはできません。フィルターまたはバルブは、HTTP ヘッダーを追加してリクエスト オブジェクトを変更する必要があります。フィルター/バルブの背後にある Web アプリには HTTP ヘッダーが必要ですが、これはサード パーティであるため、これを変更することはできません。
JWT を取得できるように Open ID Connect を使用しますが、JWT とそのコンテンツ、およびおそらく Open ID Connect の userinfo エンドポイントを使用する以外は、標準の OAUTH2 フローを実行しているだけです。複雑な点は次のとおりです。承認のためにリダイレクトするサーバーは、複数のテナントをサポートしています。これは、リダイレクト先の URL の URL にテナント名が含まれることを意味します。これは、次のような URL の代わりに
https://authorization.server.com/oauth/authorize
(?response_type=code&scope=openid&client_id=myclientname&state=nonce&redirect_uri=...
わかりやすくするために省略しています。) 次のいずれかのような URL にリダイレクトする必要があります。
https://authorization.server.com/tenantname/oauth/authorize
https://authorization.server.com/oauth/tenantname/authorize
https://authorization.server.com/oauth/authorize?realm=tenantname
pac4j でこれを行うにはどうすればよいですか? すべてのクライアントが承認のために異なるリダイレクト URL を使用する可能性があるため、pac4j はこれをサポートしないと言われています。