FessのOIDCプラグインに、IDトークンの対象クライアントと有効期限を確認する修正がマージされました。15.9への移行では、プラグイン導入に加え、プロバイダーの設定が新しい検証条件を満たすか確認します。
issuerを明示する
新しい oic.issuer は任意設定で、初期値は空文字です。未設定では iss の検証を省略し、最初のログイン時に警告を出します。プロバイダーのDiscovery文書の issuer をそのまま system.properties に指定してください。末尾のスラッシュも区別されます。この項目は管理画面の全般設定にはありません。
sso.type=oic
oic.issuer=https://op.example.com
oic.token.server.url=https://op.example.com/token
oic.client.id=your-client-id
上記URLは例です。既存の認可URL、クライアントシークレット、スコープなどもプロバイダーに合わせて設定し、修正を含む fess-sso-oidc を導入したFessでログインを確認します。
IDトークンの検証条件
aud に設定した oic.client.id が含まれる必要があります。クライアントIDが空では受け付けません。azp があればクライアントIDと一致する必要があり、複数のaudienceを持つトークンにはazpが必須です。
exp は数値で必須です。現在時刻が exp + 300秒 より前なら受け付けます。300秒は固定の許容差で設定項目ではありません。issuerを指定した場合はissが完全一致する必要があります。ログイン失敗時は画面に一般的なSSOエラー、ログに検証理由が記録されます。設定照合と時刻同期で原因を切り分けます。
HTTPSと残る制限
トークンエンドポイントはHTTPSが必須です。HTTPは localhost、127.0.0.0/8のリテラルIPv4アドレス、::1 に限ります。社内ホスト名や別ホストへのHTTP接続を許可するスイッチはありません。従来その構成を使っていた環境では、HTTPSへの変更が必要です。
JWT署名の暗号的な検証、nonce、PKCEは今回も実装されていません。IDトークンをブラウザから受け取るのではなく、Fessがプロバイダーのトークンエンドポイントから直接取得する設計で、TLSのサーバー検証に依存します。クレーム検証の追加を、署名検証まで実装された変更と混同しないでください。