Uma interface administrativa simples para ory/kratos. Feito com React e Microsoft/fluentui.
Seguindo uma visão geral dos recursos do kratos-admin-ui:
Você obtém uma visão geral pesquisável e classificável de todas as identidades:
Quando você seleciona uma identidade, a barra de ferramentas é expandida com ações como
Você também pode executar uma ação de exclusão e/ou recuperação em múltiplas identidades simultaneamente
Se quiser ver todos os atributos de uma identidade, você pode abri-la na visualização detalhada.
Para criar uma nova identidade você deve primeiro selecionar o esquema de identidade que você configurou no kratos. Todos os traços de identidade são renderizados dinamicamente.
Você pode editar todas as características de identidade na página de edição.
Para executar a imagem, você deve fornecer duas variáveis de ambiente:
KRATOS_ADMIN_URL
: o URL do administrador da sua instância do KratosKRATOS_PUBLIC_URL
: a URL pública da sua instância do KratosVocê deve seguir as melhores práticas do Kratos, que recomenda nunca exportar a API do administrador para a internet, pois não há autenticação.
Para executar o admin-ui, que obviamente precisa de acesso à admin-api, você deve executar o admin-ui na mesma rede que o kratos.
No recorte a seguir, o admin-ui é implantado na mesma rede docker ( kratos_intranet
) que o kratos - através da resolução Docker-Compose-DNS, o proxy reverso nginx pode chamar o administrador
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 como aqui, inclua-o em um arquivo 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
: o servidor de nomes a ser usado para resolução de DNS para URLs do Kratos. Por padrão, ele lê valores de /etc/resolv.conf, portanto funciona bem sem definir esse valor em muitos tempos de execução. Se não houver /etc/resolv.conf, ele será definido como 127.0.0.11
(Docker dns). É necessário que uma instância local do ory kratos esteja em execução. a última versão testada é 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 .