Skip to content

epfl-si/entra-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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