Uranus® Design System
Auth

AuthProvider

O provider que hidrata a sessão OIDC e expõe contexto.

<AuthProvider> é o ponto único de integração. Ele aceita config (cria um AuthClient internamente) ou client (use quando precisa compartilhar o cliente fora da árvore React).

Props

PropTipoDescrição
configAuthClientConfigConfiguração — autoridade, client id, URIs. Ver tabela abaixo.
clientAuthClientCliente já construído via createAuthClient(config).
childrenReactNodeConteúdo da app.
parseRoles(profile) => string[]Estratégia de extração de roles. Default: getRoles (lê roles ou realm_access.roles).
fallbackReactNodeRender durante status === 'loading'.
onReady(status, user) => voidDisparado uma única vez quando a sessão é resolvida.

AuthClientConfig

CampoDefaultNotas
authorityURL completa do realm.
clientIdClient public id no IdP.
redirectUriCallback do app (/callback).
postLogoutRedirectUriPara onde voltar após logout.
silentRedirectUriPágina de silent renew.
scope'openid email profile'
automaticSilentRenewtrue
storage'session''session' recomendado. 'local' ou um Storage custom.
extraQueryParamsMesclado em todo signinRedirect.
onSilentRenewErrorCallback para falhas de renovação silenciosa.

API exposta no contexto

const { status, user, error, login, logout, getToken, client } = useAuth();
MembroDescrição
status'loading' | 'authenticated' | 'unauthenticated' | 'error'.
userAuthUser | null — id, email, nome, foto, roles, profile.
errorÚltima falha (sign-in, callback ou silent renew).
login(opts?)signinRedirect. Aceita { returnTo, idpHint, prompt, extraQueryParams }.
logout(opts?)signoutRedirect. { localOnly: true } apenas remove o usuário local.
getToken()Promise<string | null> com o access token atual.
clientO AuthClient subjacente — útil para integrações fora do React.

Padrão SSR

createAuthClient é lazy. No servidor, userManager é null e qualquer chamada que toque o IdP rejeita com mensagem clara. Em runtime client, useEffect instancia o UserManager. Isso permite montar o provider em layouts Server Component do Next.js sem 'use client' no layout — você só precisa do 'use client' no Providers.

Provider de teste

@uranus-workspace/auth exporta um MockAuthProvider em screens/_testing para stories e testes — não importa oidc-client-ts e aceita status, user, onLogin, onLogout como props.