Open source

PMQ.Identity

nível aplicado-em-producao

538 downloads · 28 arquivos, 1.488 linhas · repositório

Módulo de identidade agnóstico de provedor. Dois modos: externo, com token de um provedor central por OIDC, e local, com JWT emitido pela própria aplicação.

O problema

A aplicação pequena começa emitindo o próprio token, porque é o caminho mais curto. Quando a empresa padroniza num provedor de identidade central, cada aplicação precisa ser reescrita na parte de autenticação, e essa parte está espalhada por todo lugar que lê usuário.

Eu vivi os dois lados dessa migração num parque com centenas de aplicações em estágios diferentes, e é de lá que vem o desenho.

A decisão

O modo é configuração, não arquitetura. A aplicação trabalha com uma abstração de identidade, e se o token vem de um provedor externo ou é emitido localmente fica num IdentityMode com dois caminhos de configuração isolados, ExternalSettings e LocalSettings, cada um com o seu IdentitySetup. Trocar um pelo outro deixa de ser reescrita e passa a ser uma linha.

O que isso resolve na prática: uma aplicação nova nasce em modo local, sem depender de ninguém provisionar cliente no provedor central; quando a padronização chega, ela troca de modo sem que nenhum código que lê usuário mude.

Mapeamento de claim configurável. Provedor de identidade não concorda sobre o nome da claim que carrega papel, identificador ou tenant, e cada um resolve de um jeito. Deixar esse mapa em configuração, o ClaimsMappingOptions, evita que trocar de provedor obrigue a caçar string mágica espalhada pelo código.

O limite

O modo local existe para o caminho curto e para desenvolvimento, não para ser um provedor de identidade. Ele emite e valida JWT; não faz federação, não gerencia consentimento, não rotaciona chave sozinho. Aplicação que precisa disso deve usar um provedor de verdade, que é exatamente o que o modo externo espera.

Pablo Mickael Quevedo Senior Software Engineer · Novo Hamburgo, RS