iGRPIGRP 3.0Documentation

Resolução de problemas

Resolução de problemas, localização de ficheiros e documentos relacionados com a integração de Access Management.

6. Resolução de problemas

SintomaCausa provávelOnde procurar
PermissionsRegistry não geradoProcessador de anotações em falta em annotationProcessorPathspom.xml — secção 2.4 do Permissions Integration Guide
[Authorization Sync] Failed… em todos os arranquesCredenciais M2M erradas / em falta no backendAmbiente do backend: igrp.access.m2m.client-id, igrp.access.m2m.client-secret
[startup-sync] failed em todos os arranques da SPAO mesmo, mas no frontendAmbiente do frontend: IGRP_SERVICE_ID, IGRP_M2M_CLIENT_ID, IGRP_M2M_CLIENT_SECRET, IGRP_ACCESS_MANAGEMENT_API. O framework apresenta isto como IgrpConfigError(IGRP_ACCESS_MANAGEMENT_CONFIG_MISSING) em global-error.tsx.
Ciclo de login com uma cadeia ?callbackUrl=…?callbackUrl=… cada vez maior na barra de endereçoNEXTAUTH_URL não inclui /api/auth (e/ou NEXT_PUBLIC_BASE_PATH quando definido). O NextAuth v4 não acrescenta automaticamente.Corrija NEXTAUTH_URL segundo as regras do ponto 4.2. Reinicie o pod da SPA (os cookies delimitados ao caminho errado mantêm-se até expirarem — limpe os cookies do browser para o domínio para desbloquear a sessão de desenvolvimento).
PKCE_ERROR ou OAUTH_CALLBACK_ERROR no callbackNEXTAUTH_SECRET mudou a meio do fluxo entre /authorize e /callback, OU o caminho do proxy mudouConfirme que o segredo é estável entre pods, que NEXTAUTH_URL corresponde à origem da SPA onde o browser iniciou o fluxo, e que os cookies do caminho de callback estão de facto a ser enviados (problemas de SameSite / cross-origin).
O framework lança um erro no arranque em produção: "NEXTAUTH_SECRET must be set"É exatamente o que diz — o NextAuth falha de forma irrecuperável em produção quando NEXTAUTH_SECRET não está definidoDefina-o. Gere com openssl rand -base64 32.
Pedido do scope email mas o token não inclui a claimScope não registado no cliente do AM (o valor por omissão do framework para scopes_supported é apenas ["openid"])Adicione email ao scopes do cliente no AM, e confirme IGRP_AUTH_SCOPES=openid email na SPA.
403 numa página mesmo com o utilizador a ter o perfil corretoigrpAssertAuthorize foi chamado com um nome de permissão simples, mas o JWT não tem claim org (fail-closed)Confirme que o departamento ativo do utilizador está definido. Use a forma totalmente qualificada "DEPT_X.suffix" ao chamar fora do contexto de departamento atual do utilizador.
Componente com controlo de permissão continua a renderizar-se após a remoção de um perfilO controlo por claim do token fica em cache até o TTL do token expirar — ver ponto 3.6 "Latência de revogação"Aguarde pelo ciclo de renovação, ou force um novo login. A revogação em tempo real tem de ser aplicada na camada de API, não na UI.
A UI em modo de pré-visualização funciona mas a produção nãoO modo de pré-visualização concede superadministrador — todos os controlos passam silenciosamenteTeste com IGRP_PREVIEW_MODE=false + AUTH_PROVIDER=igrp-auth contra um AM real com um utilizador que não seja superadministrador, antes de lançar.
A barra lateral da SPA aparece vaziaO utilizador não tem perfil ativo, OU o perfil não tem itens de menuAC → Users → confirme o perfil ativo; AC → Menus → confirme roles[] nos itens de menu
A API devolve 401 em todos os pedidosIncompatibilidade do iss do JWT — o issuer-uri do resource server não é igual ao IGRP_OAUTH_ISSUER do AMCompare a claim iss do payload do JWT com o spring.security.oauth2.resourceserver.jwt.issuer-uri do backend da aplicação, ao carácter
A API devolve 403 apesar de o perfil ter a permissãoJWT desatualizado; JWT sem a permissão; ou erro de escrita no @PreAuthorizeDescodifique o bearer, verifique o array permissions; confirme que T(Permission).* corresponde a uma constante existente
Itens de menu aparecem brevemente e depois desaparecemsyncOnCodeMenus=true mas o administrador do AC tem estado a editar os menus manualmenteOu desative a sincronização por código (IGRP_SYNC_ON_CODE_MENUS=false), ou opte pelo modo code-first e deixe de editar no AC
Explosão silenciosa de perfis no AMErros de escrita em roles[].roleCode em menus.ts + syncRoles=trueProcure perfis criados com conjunto de permissões vazio; corrija o erro de escrita ou defina syncRoles=false e pré-crie os perfis manualmente
Ciclo de redirecionamento após alteração de uma variável de ambiente do AMQuase de certeza o padrão de incompatibilidade de AUTH_JWT_ISSUER documentado em análises no estilo ANALISE-E-TASKSVerifique os registos do pod à procura da linha WARN do OidcLoginFailureHandler (ver o commit recente) — indica o errorCode exato
Após um redeploy do backend, os utilizadores veem ACCESS_DENIED em /api/users/meO bug de "ressurreição" de utilizador ELIMINADO — corrigido nos commits recentesRenove o JWT do utilizador (novo login) e confirme na build mais recente do AM

Para o que não estiver aqui coberto, ative o registo TRACE (org.springframework.security=TRACE) no pod com falha — a linha de registo indica o filtro exato e a decisão tomada.

7. Referência — localização de ficheiros

AssuntoFicheiro
Exemplo de declaração de permissõesaccess-management/backend/access-management-api/src/main/java/cv/igrp/platform/access_management/shared/infrastructure/authorization/permission/ApplicationPermissions.java
Processador de anotaçõesaccess-management/backend/modules/core/src/main/java/cv/igrp/framework/auth/core/processor/PermissionSourceGenerator.java
Sincronização de arranque do backendaccess-management/backend/modules/core-spring-boot/src/main/java/cv/igrp/framework/auth/core/autoconfig/AuthorizationSyncRunner.java
Sincronização de arranque do frontendshared/frontend/nextjs/packages/framework/next/src/lib/startup-sync.ts
Layout raiz do frontend (gatilho de sincronização)shared/frontend/nextjs/packages/framework/next/src/layouts/igrp-root-layout.tsx
Exemplo de fonte de menus (target)shared/frontend/nextjs/templates/demo-v1/src/temp/menus/menus.ts
Fonte de menus (AC)access-management/frontend/application-center/src/temp/menus/menus.ts
Cliente M2M (TS)access-management/frontend/packages/packages/client/src/client/m2m-client.ts
API M2M (Java)access-management/backend/modules/client/src/main/java/cv/igrp/platform/access/client/api/M2MApi.java
Propriedades do AMaccess-management/backend/access-management-api/src/main/resources/application.properties
Configuração do ACaccess-management/frontend/application-center/src/igrp.template.config.ts

8. Documentos relacionados

8.1 Workspace do iGRP AM

8.2 Documentação oficial do framework (ramo dev)

Estes documentos residem dentro dos próprios repositórios do framework e são distribuídos de forma idêntica ao demo-v1 e ao Application Center. Quando este guia e a documentação do framework divergirem, a documentação do framework prevalece — abra uma issue de documentação neste workspace para corrigir a discrepância.

FicheiroConteúdo
demo-v1/docs/ENVIRONMENT.mdReferência completa de variáveis de ambiente, forma de validação, tabela de registo de URIs de callback/logout.
demo-v1/docs/AUTHENTICATION.mdwithIGRPAuth, o modelo de bypass AUTH_PROVIDER=none / IGRP_PREVIEW_MODE=true, sanitizeCallbackUrl, o fluxo autenticado em seis passos.
demo-v1/docs/ACCESS_MANAGEMENT.mdO "aperto de mão" OAuth2 client_credentials com o AM, as três fases de sincronização, e a superfície de falha do IgrpConfigError.
demo-v1/docs/PERMISSIONS.mdO modelo completo de controlo por claims do JWT: igrpAssertAuthorize, <IGRPAuthorization>, usePermissions, a tabela de camadas de aplicação, a latência de revogação, a checklist de "sem recusa por omissão".
demo-v1/docs/TOKENS.mdO fluxo de access-token / refresh-token / id-token entre o NextAuth e o AM.
demo-v1/docs/ARCHITECTURE.mdA forma do modelo em quatro camadas (middleware → layout raiz → (igrp)/layout.tsx → construtor de configuração).
demo-v1/docs/MIGRATION_GUIDE.mdAtualizações do framework de versão para versão.

Os mesmos ficheiros são distribuídos dentro do Application Center em application-center/docs/*.md.

How is this guide?

Última atualização: