iGRPIGRP 3.0Documentation

Variáveis de ambiente

Variáveis de ambiente necessárias em cada componente do sistema de gestão de acessos.

4. Configuração — Variáveis de ambiente

Quatro intervenientes, quatro superfícies de configuração distintas. Esta secção é a referência canónica para a configuração do framework.

4.1 Access Management (AM)

Caminho: access-management/backend/access-management-api/src/main/resources/application.properties.

4.1.1 Base de dados (obrigatório)
Variável de ambientePropriedadeValor por omissãoNotas
DATABASE_URLspring.datasource.url—Alternativamente, use as três variáveis POSTGRES_* abaixo.
POSTGRES_HOST(composto)—Usado quando DATABASE_URL não está definida.
POSTGRES_PORT(composto)5432
POSTGRES_DATABASE(composto)—
DATABASE_USERNAME / POSTGRES_USERspring.datasource.username—
DATABASE_PASSWORD / POSTGRES_PASSWORDspring.datasource.password—Segredo.

O Flyway é executado automaticamente durante o arranque da aplicação. Não desative este comportamento, exceto se o ciclo de vida das migrações for gerido externamente.

4.1.2 Cache de sessão (opcional mas recomendado)
Variável de ambientePropriedadeValor por omissãoNotas
REDIS_HOSTspring.data.redis.host—Se não definida, a cache de sessão recorre a memória interna (apenas para deployments de um único pod).
REDIS_PORTspring.data.redis.port6379
REDIS_PASSWORDspring.data.redis.password—Segredo.
4.1.3 Servidor de autorização OAuth2 — chaves e emissor (obrigatório)
Variável de ambientePropriedadeValor por omissãoNotas
IGRP_OAUTH_ISSUERigrp.oauth.issuerhttp://localhost:8080Correspondência ao carácter com a claim iss do JWT. Inclua o prefixo do proxy inverso, se existir (https://api.example.com/igrp-access-management).
IGRP_OAUTH_PUBLIC_KEYigrp.oauth.keys.publicvalor por omissão do classpathCaminho para a chave pública RSA primária.
IGRP_OAUTH_PRIVATE_KEYigrp.oauth.keys.privatevalor por omissão do classpathCaminho para a chave privada RSA primária. Segredo.
IGRP_OAUTH_KEY_IDigrp.oauth.keys.kidigrp-oauth-keyAnunciado como kid no JWKS e nos JWTs emitidos.
IGRP_OAUTH_SECONDARY_*igrp.oauth.keys.secondary.*—Slot opcional de rotação de chaves sem período de indisponibilidade (pública, privada, kid).
AUTH_JWT_ISSUERspring.security.oauth2.resourceserver.jwt.issuer-uri—Emissor que o próprio AM usa para validar os JWTs recebidos que não emitiu (raro — normalmente igual a IGRP_OAUTH_ISSUER).

Quando o emissor (issuer) tiver de ser ajustado: se o AM estiver atrás de um proxy que reescreve o URL, IGRP_OAUTH_ISSUER deve corresponder ao URL público utilizado pela SPA e pelos backends das aplicações, e não ao URL interno do serviço. Caso contrário, os resource servers rejeitarão os tokens devido a uma incompatibilidade no valor da claim iss.

4.1.4 Cliente OAuth2 por omissão (semeado automaticamente)
Variável de ambientePropriedadeNotas
IGRP_OAUTH_DEFAULT_CLIENT_IDigrp.oauth.default-client.client-idDeixar em branco → sem semear.
IGRP_OAUTH_DEFAULT_CLIENT_SECRETigrp.oauth.default-client.secretSegredo.

Utilizado para inicializar o primeiro cliente OAuth2 numa base de dados vazia, permitindo que o Application Center comunique com o AM.

Na prática, este cliente é configurado apenas uma vez. Após a inicialização, os restantes clientes OAuth2 devem ser geridos através da interface do Application Center (ver Gestão de Aplicações); no workspace local esse registo é automático — ver Registo de clientes OAuth.

4.1.5 Federação com o IdP a montante (opcional — ativa o SSO)
Variável de ambientePropriedadeValor por omissãoNotas
IGRP_OAUTH_EXTERNAL_IDP_ENABLEDigrp.oauth.external-idp.enabledtrueDefina como false para executar o AM como emissor de identidade autónomo, sem federação a montante.
IGRP_OAUTH_EXTERNAL_IDP_ISSUER_URIigrp.oauth.external-idp.issuer-uri—URL do emissor OIDC do IdP a montante.
IGRP_OAUTH_EXTERNAL_IDP_CLIENT_IDigrp.oauth.external-idp.client-id—Cliente do AM no IdP a montante.
IGRP_OAUTH_EXTERNAL_IDP_CLIENT_SECRETigrp.oauth.external-idp.client-secret—Segredo.
IGRP_OAUTH_LOGOUT_CASCADEigrp.oauth.external-idp.logout-cascadetrueO RP-Initiated Logout propaga-se ao IdP a montante em /connect/logout.
IGRP_OAUTH_REQUIRE_EMAIL_VERIFIEDigrp.oauth.external-idp.require-email-verifiedtrueRecusa logins em que o IdP a montante não tenha verificado a claim de email. OWASP A07.
IGRP_OAUTH_ALLOWED_EMAIL_DOMAINSigrp.oauth.allowed-email-domains—Separados por vírgula. P. ex. nosi.cv,gov.cv. Vazio = qualquer domínio.
IGRP_OAUTH_REQUIRED_ACR_VALUESigrp.oauth.required-acr-values—Aplica autenticação reforçada (step-up). P. ex. mfa exige um ACR com capacidade MFA no IdP a montante.
4.1.6 CORS
Variável de ambientePropriedadeValor por omissãoNotas
IGRP_CORS_ALLOWED_ORIGINSigrp.security.cors.allowed-originshttp://localhost:3000,http://localhost:8080Separados por vírgula. O wildcard * é proibido, porque o AM envia Access-Control-Allow-Credentials: true. Liste as origens exatas das SPAs.
4.1.7 Inicialização do superadministrador
Variável de ambientePropriedadeNotas
IGRP_SUPERADMIN_EMAILigrp.superadmin.emailEmail do superadministrador de inicialização.
IGRP_SUPERADMIN_USER_EXTERNAL_IDigrp.superadmin.user-external-idO sub da mesma pessoa no IdP a montante. Só é usado no primeiro arranque para semear o registo; as pesquisas em runtime são agora baseadas em perfil (DEPT_IGRP.superadmin) — ver o histórico do refactor(users).
4.1.8 Armazenamento (MinIO ou S3)
Variável de ambientePropriedadeValor por omissãoNotas
IGRP_STORAGE_PROVIDERigrp.storage-providerminiominio ou s3.
IGRP_STORAGE_ENDPOINTigrp.minio.endpoint—Anfitrião (host).
IGRP_STORAGE_PORTigrp.minio.port—Porta.
IGRP_STORAGE_ACCESS_KEYigrp.minio.access-key—Segredo.
IGRP_STORAGE_SECRET_KEYigrp.minio.secret-key—Segredo.
IGRP_STORAGE_BUCKET_NAMEigrp.minio.bucket-nameigrp
IGRP_STORAGE_PRESIGNED_URL_EXPIRATION_TIMEigrp.minio.url-expiration-time300
4.1.9 SMTP + notificações
Variável de ambientePropriedadeValor por omissãoNotas
IGRP_NOTIFICATIONS_ENABLEDigrp.notifications.enablednonenone desativa todo o correio de saída. Defina smtp em produção.
SMTP_HOSTigrp.mail.host—
SMTP_PORTigrp.mail.port587
SMTP_USERNAMEigrp.mail.username—
SMTP_PASSWORDigrp.mail.password—Segredo.
IGRP_MAIL_SMTP_AUTHigrp.mail.authtrue
IGRP_MAIL_SMTP_STARTTLS_ENABLEigrp.mail.starttls.enabletrue
IGRP_MAIL_INVITE_TEMPLATEigrp.mail.invite.template—Modelo HTML para o email de convite.
4.1.10 Aplicação de sessão
Variável de ambientePropriedadeValor por omissãoNotas
IGRP_SESSION_ABSOLUTE_TIMEOUT_SECONDSigrp.session.absolute-timeout-seconds288008 h. Limite máximo absoluto da sessão, independentemente da atividade.
IGRP_SESSION_MAX_PER_USERigrp.session.max-per-user5Sessões ativas simultâneas por utilizador. A mais antiga é terminada quando excedido.
IGRP_SESSION_HEARTBEAT_DEBOUNCE_SECONDSigrp.session.heartbeat-debounce-seconds30Intervalo mínimo entre escritas na base de dados do heartbeat de sessão.
IGRP_SESSION_ENFORCEMENT_ENABLEDigrp.session.enforcement-enabledtruefalse desativa as verificações de vivacidade da sessão (o JWT bearer continua a ser validado).
4.1.11 Observabilidade + sistema
Variável de ambientePropriedadeValor por omissãoNotas
SERVICE_PORTserver.port8080
IGRP_APP_CENTER_URLigrp.app-center.url—URL público do Application Center; usado nos emails de saída (os convites remetem para aqui).
OTEL_COLLECTOR_ENDPOINTotel.exporter.otlp.endpoint—Se definido, os traces e métricas OTEL são enviados para o coletor.
OTEL_DISABLEDotel.sdk.disabledtrueDesativado por omissão; defina false para ativar em produção.
server.forward-headers-strategy(propriedade)frameworkNão altere sem compreender o bug de ciclo que já encontrámos; os matchers em AuthorizationServerConfig dependem da configuração atual.
How is this guide?

Última atualização: