Une interface d'administration simple pour ory/kratos. Réalisé avec React et Microsoft/fluentui.
Suite à un aperçu des fonctionnalités de kratos-admin-ui :
Vous obtenez un aperçu consultable et triable de toutes les identités :
Lorsque vous sélectionnez une identité, la barre d'outils s'agrandit avec des actions telles que
Vous pouvez également effectuer une action de suppression et/ou de récupération sur plusieurs identités simultanément
Si vous souhaitez voir tous les attributs d'une identité, vous pouvez l'ouvrir en vue détaillée.
Pour créer une nouvelle identité, vous devez d'abord sélectionner le schéma d'identité que vous avez configuré dans Kratos. Tous les traits d'identité sont rendus dynamiquement.
Vous pouvez modifier tous les traits d'identité sur la page de modification.
Pour exécuter l'image, vous devez fournir deux variables d'environnement :
KRATOS_ADMIN_URL
: l'url d'administration de votre instance kratosKRATOS_PUBLIC_URL
: l'url publique de votre instance kratosVous devez suivre les meilleures pratiques de Kratos, qui recommandent de ne jamais exporter l'API admin sur Internet, car il n'y a pas d'authentification.
Pour exécuter l'interface utilisateur d'administration, qui nécessite bien sûr l'accès à l'API d'administration, vous devez exécuter l'interface utilisateur d'administration sur le même réseau que Kratos.
Dans l'extrait suivant, l'interface utilisateur de l'administrateur est déployée dans le même réseau Docker ( kratos_intranet
) que Kratos - sur la résolution Docker-Compose-DNS, le proxy inverse nginx peut appeler l'administrateur
docker run -it
--rm -p 5173:8080
-e KRATOS_ADMIN_URL=http://kratos:4434
-e KRATOS_PUBLIC_URL=http://kratos:4433
--network kratos_intranet
ghcr.io/dfoxg/kratos-admin-ui
ou comme ici, incluez-le dans un fichier docker-compose.yml
:
services:
kratos-migrate:
image: oryd/kratos:v1.0.0
environment:
- DSN=sqlite:///var/lib/sqlite/db.sqlite?_fk=true&mode=rwc
volumes:
- type: volume
source: kratos-sqlite
target: /var/lib/sqlite
read_only: false
- type: bind
source: ./contrib/quickstart/kratos/email-password
target: /etc/config/kratos
command: -c /etc/config/kratos/kratos.yml migrate sql -e --yes
restart: on-failure
networks:
- intranet
kratos:
image: oryd/kratos:v1.0.0
depends_on:
- kratos-migrate
ports:
- '4433:4433' # public
# - '4434:4434' # admin, do not expose!
restart: unless-stopped
environment:
- DSN=sqlite:///var/lib/sqlite/db.sqlite?_fk=true
- LOG_LEVEL=trace
command: serve -c /etc/config/kratos/kratos.yml --dev --watch-courier
volumes:
- type: volume
source: kratos-sqlite
target: /var/lib/sqlite
read_only: false
- type: bind
source: ./contrib/quickstart/kratos/email-password
target: /etc/config/kratos
networks:
- intranet
admin_ui:
image: ghcr.io/dfoxg/kratos-admin-ui:v2.5.0
ports:
- '80:8080'
restart: unless-stopped
environment:
- KRATOS_ADMIN_URL=http://kratos:4434
- KRATOS_PUBLIC_URL=http://kratos:4433
networks:
- intranet
networks:
intranet:
volumes:
kratos-sqlite:
NAMESERVER
: le serveur de noms à utiliser pour la résolution DNS des URL Kratos. Par défaut, il lit les valeurs de /etc/resolv.conf, il fonctionne donc bien sans définir cette valeur dans de nombreux environnements d'exécution. S'il n'y a pas de /etc/resolv.conf, il sera défini sur 127.0.0.11
(Docker DNS). Il est nécessaire qu'une instance locale d'ory kratos soit en cours d'exécution. la dernière version testée est v1.1.0
.
cd kratos-admin-ui
npm install
node cors-proxy.js // starts a cors-proxy for the admin-api, so the browser can make requests
npm run start
cd kratos-admin-ui
docker build -t kratos-admin-ui .