diff --git a/tenants/plataforma/55-cronjobs-financeiro.yaml b/tenants/plataforma/55-cronjobs-financeiro.yaml index 57ccb2a..b4b9bb0 100644 --- a/tenants/plataforma/55-cronjobs-financeiro.yaml +++ b/tenants/plataforma/55-cronjobs-financeiro.yaml @@ -67,6 +67,7 @@ data: : "${KEYCLOAK_URL:?falta KEYCLOAK_URL}" : "${ALVO:?falta ALVO}" : "${CLIENT_SECRET:?falta CLIENT_SECRET}" + : "${ISSUER_HOST:?falta ISSUER_HOST}" echo "[$(date -u +%FT%TZ)] alvo: ${ALVO}" @@ -96,10 +97,21 @@ data: # 1. Token. O segredo vai por STDIN: em `argv` um `ps` dentro deste # container o veria. + # Os tres cabecalhos de proxy NAO sao enfeite: sem eles o Keycloak monta o + # `iss` com o endereco da REQUISICAO — `http://auth-plataforma...:8080` —, e + # o servico recusa o token com 401, porque espera + # `https://auth-plataforma.../realms/athleticmap`. Descoberto em 2026-09-21, + # e e a mesma fronteira de P2.7: o `iss` e o que separa um tenant do outro. + # + # Pedir o token pelo endereco PUBLICO resolveria tambem, mas de dentro do + # cluster esse endereco nao responde (o retorno pelo IP do no nao fecha). RESP="$(printf 'grant_type=client_credentials&client_id=operacao&client_secret=%s' \ "${CLIENT_SECRET}" \ | curl -sS --fail-with-body -X POST "${KEYCLOAK_URL}" \ - -H 'Content-Type: application/x-www-form-urlencoded' -d @-)" + -H 'Content-Type: application/x-www-form-urlencoded' \ + -H 'X-Forwarded-Proto: https' \ + -H 'X-Forwarded-Port: 443' \ + -H "X-Forwarded-Host: ${ISSUER_HOST}" -d @-)" TOKEN="$(printf '%s' "${RESP}" | sed -n 's/.*"access_token":"\([^"]*\)".*/\1/p')" if [ -z "${TOKEN}" ]; then @@ -153,6 +165,8 @@ spec: exec /bin/sh /script/disparar.sh env: - { name: KEYCLOAK_URL, value: "http://keycloak:8080/realms/athleticmap/protocol/openid-connect/token" } + # O host publico do realm: vira `iss` do token (ver disparar.sh). + - { name: ISSUER_HOST, value: "auth-plataforma.athleticmap.influxdigital.com.br" } - name: CLIENT_SECRET valueFrom: secretKeyRef: { name: operacao-credentials, key: client-secret } @@ -190,6 +204,8 @@ spec: command: ["/bin/sh", "/script/disparar.sh"] env: - { name: KEYCLOAK_URL, value: "http://keycloak:8080/realms/athleticmap/protocol/openid-connect/token" } + # O host publico do realm: vira `iss` do token (ver disparar.sh). + - { name: ISSUER_HOST, value: "auth-plataforma.athleticmap.influxdigital.com.br" } - { name: ALVO, value: "http://servico-financeiro/api/financeiro/notas/processar?limite=50" } - name: CLIENT_SECRET valueFrom: @@ -228,6 +244,8 @@ spec: command: ["/bin/sh", "/script/disparar.sh"] env: - { name: KEYCLOAK_URL, value: "http://keycloak:8080/realms/athleticmap/protocol/openid-connect/token" } + # O host publico do realm: vira `iss` do token (ver disparar.sh). + - { name: ISSUER_HOST, value: "auth-plataforma.athleticmap.influxdigital.com.br" } # limiteCobrancas=100: cada uma custa uma chamada ao provedor. - { name: ALVO, value: "http://servico-financeiro/api/financeiro/conciliacao?limiteEventos=100&limiteCobrancas=100" } - name: CLIENT_SECRET