iam

module
v0.0.21 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 27, 2026 License: MIT

README

iam

Servicio central de identidad, sesión SSO y RBAC para todos los proyectos de Velty. Reemplaza el patrón actual — cada app monta su propio tinywasm/auth + tinywasm/rbac contra su propia base — por un servicio único que las apps consumidoras llaman por HTTP.

Motor: usa tinywasm/user + tinywasm/auth + tinywasm/rbac sin modificarlas (son librerías genéricas ya publicadas, compartidas con cualquier otro consumidor del ecosistema). iam es la nueva raíz de composición que hoy vive duplicada — y desincronizada — en cada app: ver docs/ARCHITECTURE.md §1 para la evidencia concreta.

flowchart TD
    U[tinywasm/user] --> A[tinywasm/auth]
    U --> R[tinywasm/rbac]
    A --> I[veltylabs/iam]
    R --> I
    I -->|POST /api/token| M[misitio]
    I -->|POST /api/token| O[futuros proyectos Velty]

Uso desde otro proyecto

import iamclient "github.com/veltylabs/iam/client"

iam, err := iamclient.New(iamclient.ConfigFromEnv(ProjectID))
if err != nil { /* no arrancar */ }

r := edge.NewRouter(edge.Config{
    Authn:     iam.Authn(),
    Authorize: myPolicy(iam),   // política del proyecto, no de iam
})

iam entrega códigos de rol (Scope); el proyecto entrega la política. Consumer.AssignRole concede un rol en el proyecto del Consumer y es idempotente.

Documentación

  • Arquitectura — por qué existe, límites de responsabilidad frente a site_manager, decisiones tomadas y lo que queda deliberadamente abierto.

Estado

Motor de identidad+RBAC portado y con project_id nativo (Etapas 1-2). API Bearer con tokens de autorización por proyecto y cookie SSO entre *.velty.cl (Etapas 3-4) — todo ejecutado. Pendiente: que misitio (u otra app) consuma iam remotamente en vez de montar su propio authority.Module/rbac.Service, y un panel de administración propio — ver docs/ARCHITECTURE.md §8.

Directories

Path Synopsis
Package api holds the wire-facing constants shared by config/, routes/ and any future client, so none of them need to import each other just to agree on a path or binding name (breaks the config↔routes cycle).
Package api holds the wire-facing constants shared by config/, routes/ and any future client, so none of them need to import each other just to agree on a path or binding name (breaks the config↔routes cycle).
Package client is what a project consuming iam remotely imports — a thin server-to-server HTTP client for POST /api/token.
Package client is what a project consuming iam remotely imports — a thin server-to-server HTTP client for POST /api/token.
cmd
migrate command
Command migrate reconciles iam's database schema.
Command migrate reconciles iam's database schema.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL