Skip to content

Latest commit

 

History

History
121 lines (86 loc) · 3.85 KB

README.md

File metadata and controls

121 lines (86 loc) · 3.85 KB

Entra client

Objectifs

Le but de ce client entra (ecli) est multiple :

  • Explorer les API Entra
  • Fournir des modules go permettant de manipuler les objets IAM (utilisateurs, applications, groupes...) Avec pour objectif de pouvoir faire du provisionning complexe d'application, ou des opérations de synchronisations.
  • Fournir un outil ligne de commande éventuellement utilisable pour les opérations simples

Organisation du code

Le client s'appuie sur cobra (github.com/spf13/cobra) et donc main.go ne fait qu'appeler les commandes définies dans /cmd

Les commandes utilisaient les packages httpClient et sdkClient qui sont des implémentations de client.Service. Ces 2 packages httpClient et sdkClient sont les deux "moteurs" que l'application peut utiliser pour accéder aux API Entra.

  • httpClient est un moteur bas niveau qui s'appuie sur net/http pour faire des requêtes REST.
  • sdkClient s'appuyait sur le sdk microsoft qui est de plus haut niveau

Ces deux moteurs utilisent les models qui sont dans internal/models Et httpClient utilise une fine surcouche de net/http qui est définie dans pkg/rest

L'utilisation du noteur sdkClient est deprecated et du coup le flag de selection --engine est lui aussi supprimé

Build

make build

Si les make tools ne sont pas installés:

go build -o ecli

Tests

make test

Si les make tools ne sont pas installés:

go test  ./...

Utilisation

mv env.sample .env

Ensuite modifier .env en renseignant les bonnes valeurs:

  • ENTRA_ACCESS_TOKEN peut rester vide (le client va le négocier)
  • ENTRA_CLIENTID conserver la valeur qui est correcte pour md-entra-client
  • ENTRA_TENANT conserver la valeur qui est correcte pour md-entra-client
  • La valeur d'ENTRA_SECRET doit être créee dans App regitration -> md-entra-client -> Certificats & secrets

L'aide intégrée :

./ecli --help

constitue un bon point d'entrée, mais les commandes son assez simples.

Quelques utilisations possibles :

Afficher l'id et le displayName des 50 premiers groupes

./ecli group list --select id,displayname --top 50

Afficher tous les utilisateurs (en contournant la pagination server side d'Entra). Qui sont nombreux...

./ecli user list

Afficher les informations d'une application spécifique sélectionnée par son ID

./ecli application get --id 4338fbfb-83b6-44be-ab56-7bb5e1f91b86

Afficher les informations des applicatoins matchant certains critères

./ecli application list --search displayname:Portal

Créer une application OIDC

./ecli application oidc create --displayname "Mon appli" --redirect_uri "https://mon.domaine.com/auth"

Supprimer une application par son id

./ecli application delete --id 5128baa5-03b7-49f8-9f06-d1f1464eff1e

Ressources

Golang Modules

Liste des autorisations