Configurer la Navin Platform pour la première fois
Cette page mène une nouvelle installation jusqu'à une plateforme utilisable : premier administrateur, tenants,
administrateurs de chaque tenant et authentification unique avec Keycloak (avec LDAP ou Active Directory derrière).
Elle est réalisée par l'administrateur de la plateforme (rôle platform_admin).
Avant de commencer
- L'installation est vérifiée :
GET /readyzrépondready(Vérifier). - Le mot de passe d'installation du premier administrateur :
- paquets OS :
sudo grep '^EAI_BOOTSTRAP_ADMIN_PASSWORD=' /etc/navin-platform/platform.env; - Docker Compose et
make:EAI_BOOTSTRAP_ADMIN_PASSWORDdedeploy/compose/.envou delocal.env; - Kubernetes : placez
EAI_BOOTSTRAP_ADMIN_USERNAMEetEAI_BOOTSTRAP_ADMIN_PASSWORDdans le secret du Control Plane le temps de la première connexion seulement.
- paquets OS :
Étapes
-
Se connecter avec le compte d'installation. L'API crée le compte au démarrage s'il n'existe pas, avec les rôles
platform_adminettenant_adminsur le tenantEAI_BOOTSTRAP_TENANT(default). Ouvrez le portail, onglet Identifiant, et connectez-vous.Résultat attendu : le portail demande un nouveau mot de passe (12 caractères minimum par défaut,
EAI_LOCAL_PASSWORD_MIN_LENGTH). Le mot de passe d'installation cesse de fonctionner.En cas d'échec :
account_lockedaprès 5 mots de passe erronés (EAI_LOCAL_AUTH_MAX_FAILURES), attendez 15 minutes (EAI_LOCAL_AUTH_LOCKOUT_SECONDS).attentionEn production, l'API refuse un mot de passe d'installation faible (
navin, l'identifiant, moins de 12 caractères, sans lettres et chiffres). RetirezEAI_BOOTSTRAP_ADMIN_PASSWORDdes réglages une fois que le premier administrateur a choisi son mot de passe : un démarrage ultérieur ne réinitialise jamais le compte. -
Créer les tenants. Un tenant (organisation) isole les données, les politiques, les budgets et la piste d'audit (sécurité au niveau des lignes dans PostgreSQL). Créez-en un par entité de la banque, dans le portail ou avec l'API :
TOKEN=$(curl -fsS <control-plane-url>/v1/auth/login -H 'Content-Type: application/json' \-d '{"username": "navin", "password": "<mot-de-passe>"}' | jq -r .token)curl -fsS <control-plane-url>/v1/tenants -H "Authorization: Bearer $TOKEN" \-H 'Content-Type: application/json' \-d '{"slug": "retail", "name": "Banque de détail", "data_residency": "eu", "admins": []}'slug: lettres minuscules, chiffres et-, de 2 à 63 caractères.admins: sujets (OIDCsub) qui reçoiventtenant_admin.Résultat attendu :
201avec le tenant ;GET /v1/tenantsle liste.En cas d'échec :
409quand le slug existe ;403sansplatform_admin. -
Raccorder Keycloak. L'API valide les jetons du realm ; le portail y redirige (code d'autorisation avec PKCE, client public
portal, URI de redirection<URL du portail>/auth/callback). Le realmdeploy/keycloak/realm-enterprise-ai.jsondéclare les clientsportal,control-planeetcli, les rôles du realm et les groupesnavin-platform-adminsetnavin-admins-default.Réglages de l'API (paquets :
platform.env; Kubernetes :controlPlane.config) :EAI_OIDC_ISSUER='https://<keycloak-host>/realms/enterprise-ai'EAI_OIDC_AUDIENCE='<audience>'EAI_OIDC_JWKS_URL='https://<keycloak-host>/realms/enterprise-ai/protocol/openid-connect/certs'Réglages du portail :
NEXT_PUBLIC_EAI_OIDC_ISSUER(ouNEXT_PUBLIC_OIDC_ISSUER) etNEXT_PUBLIC_EAI_OIDC_CLIENT_ID(ouNEXT_PUBLIC_OIDC_CLIENT_ID, par défautportal).<audience>: l'audience que portent les jetons de votre realm ; les valeurs Helm utilisentcontrol-plane, le client de l'API dans le realm.Résultat attendu : la page de connexion affiche Connexion SSO et un utilisateur Keycloak arrive sur le portail.
En cas d'échec : un
401avec une session Keycloak valide signifie une audience ou un émetteur erroné ; comparez avec les claimsissetauddu jeton. -
Fédérer l'annuaire. Keycloak lit LDAP ou Active Directory en lecture seule et importe ses groupes ; l'API les reçoit dans les claims
groupsetentra_groupset applique les correspondances à chaque connexion (EAI_OIDC_GROUP_SYNC). Les administrateurs viennent des groupes :Groupe Rôle donné navin-platform-admins(EAI_OIDC_PLATFORM_ADMIN_GROUPS)platform_adminnavin-admins-<slug du tenant>(EAI_OIDC_TENANT_ADMIN_GROUP_PREFIX)tenant_adminde ce tenantLes noms sont comparés sans tenir compte de la casse. Pour garder les noms de votre annuaire, changez les deux réglages.
Résultat attendu : un membre de
navin-admins-retailse connecte entenant_adminderetail. -
Désactiver la connexion locale. Une fois le SSO opérationnel pour au moins deux administrateurs :
EAI_LOCAL_AUTH_ENABLED='false'Résultat attendu :
POST /v1/auth/loginrépond403 local_auth_disabled. -
Activer la licence. Écran Licences du portail, ou
POST /v1/license/activations; les clés publiques de l'éditeur sontEAI_LICENSE_PUBLIC_KEYS. Voir Licences.
Vérifier
curl -fsS <control-plane-url>/v1/identity/whoami -H "Authorization: Bearer <jeton>"
<jeton> : jeton d'accès d'un utilisateur Keycloak. Sortie attendue : le sujet, son tenant et ses rôles.
Étapes suivantes
- Guide de l'administrateur : rôles, tâches courantes
- Intégration de la plateforme : OPA, OpenFGA, Keycloak, worker, métriques
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
tenant_suspended à la connexion | Le status du tenant est suspended | PATCH /v1/tenants/{tenant_id} avec {"status": "active"} |
| Un administrateur de l'annuaire n'a aucun rôle | Le nom du groupe diffère | Renommez le groupe ou changez EAI_OIDC_*_ADMIN_* |
| Un administrateur de plusieurs tenants n'arrive sur aucun | Jeton sans claim de tenant | Fixez l'attribut Keycloak tenant de l'utilisateur |