を構成ファイルに追加しmatch-claims
ても何も起こらないようです。実際、ゲートキーパーは、リソースを開くときに常に同じエラーをスローします (プロパティの有無にかかわらず)。
私のKeycloakサーバーはdockerコンテナー内にあり、内部ネットワークからはasとしてhttp://keycloak:8080
アクセスでき、外部ネットワークからはasとしてアクセスできますhttp://localhost:8085
。
内部ネットワークの Keycloak サーバーに接続しているGatekeeperがあります。リクエストは外部からのものであるため、'iss'トークン クレームdiscovery-url
と一致しません。
ゲートキーパーはdiscovery-url
as 'iss'クレームを使用しようとしています。これをオーバーライドするために、match-claims
次のようにプロパティを追加しています。
discovery-url: http://keycloak:8080/auth/realms/myRealm
match-claims:
iss: http://localhost:8085/auth/realms/myRealm
ログは次のようになります。
始めるとき
keycloak-gatekeeper_1 | 1.5749342705316222e+09 info token must contain
{"claim": "iss", "value": "http://localhost:8085/auth/realms/myRealm"}
keycloak-gatekeeper_1 | 1.5749342705318246e+09 info keycloak proxy service starting
{"interface": ":3000"}
要求に応じて
keycloak-gatekeeper_1 | 1.5749328645243566e+09 error access token failed verification
{ "client_ip": "172.22.0.1:38128",
"error": "oidc: JWT claims invalid: invalid claim value: 'iss'.
expected=http://keycloak:8080/auth/realms/myRealm,
found=http://localhost:8085/auth/realms/myRealm."}
これは、403 Forbidden応答で終了します。
Keycloak-Gatekeeper 8.0.0および5.0.0で試しましたが、どちらも同じ問題です。
- これは、私が使用しようとしている方法で機能するはずですか?
- そうでない場合、何が欠けていますか? どうすればissを検証するか、この検証をバイパスできますか? (できれば前者)?