Aller au contenu principal

Fournisseurs de connexion

Disponible

Fonctionnalité déployée et prise en charge. Les champs et commandes décrits ici sont stables au sein de la version v1alpha1.

Les utilisateurs de vos applications n'ont pas de mot de passe : ils se connectent par l'un des moyens que vous activez. Chaque moyen est un fournisseur de connexion, déclaré par un manifeste IAMProvider ou créé depuis la console (Authentification → Fournisseurs).

TypeConnexionIdentifiants à fournir
Emaillien à usage unique envoyé à l'adresse de la personneaucun
Googlecompte Googleclient-id, client-secret
GitHubcompte GitHubclient-id, client-secret
GitLabgitlab.com, ou votre instance (baseURL)client-id, client-secret
Microsoftcompte Microsoft (azureTenant : common, organizations, consumers ou un identifiant d'annuaire)client-id, client-secret
LinkedIncompte LinkedInclient-id, client-secret
OIDCtout fournisseur OpenID Connect (issuer)client-id, client-secret

Prérequis​

  • Une session sur le tenant : sng tenant use acme.
  • deploy:write (policy readwrite ou admin).
  • Pour un fournisseur externe : une application déclarée chez ce fournisseur, dont l'adresse de retour est celle qu'il vous demande (affichée dans la console à la création du fournisseur), et ses identifiants.

Étapes​

Lien envoyé par e-mail​

Le plus simple : aucun secret, aucune inscription chez un tiers.

email.yml
apiVersion: iam.stackngo.io/v1alpha1
kind: IAMProvider
metadata:
name: email
spec:
category: OAuth
type: Email
displayName: Recevoir un lien par e-mail # facultatif, 40 caractères
sng apply email.yml

L'utilisateur saisit son adresse, reçoit un lien valable une seule fois et doit l'ouvrir dans le même navigateur que celui où il l'a demandé. La réponse est identique que l'adresse ait un compte ou non, et le nombre de demandes est limité par adresse et par appareil.

Un fournisseur externe (Google, GitHub…)​

  1. Stockez les identifiants dans un secret du tenant, avec les clés client-id et client-secret.
  2. Déclarez le fournisseur en citant ce secret :
google.yml
apiVersion: iam.stackngo.io/v1alpha1
kind: IAMProvider
metadata:
name: google
spec:
category: OAuth
type: Google
credentialsSecretRef:
name: google-oauth # secret avec client-id et client-secret
sng apply google.yml

Pour un fournisseur OIDC, ajoutez issuer (HTTPS) et displayName (libellé du bouton, obligatoire) ; pour GitLab auto-hébergé, baseURL ; pour Microsoft, azureTenant. Ces champs ne sont acceptés que pour leur type. scopes ajoute des scopes à openid, profile et email.

Exemple OIDC :

sso-acme.yml
apiVersion: iam.stackngo.io/v1alpha1
kind: IAMProvider
metadata:
name: sso-acme
spec:
category: OAuth
type: OIDC
displayName: SSO Acme
issuer: https://login.acme.example
credentialsSecretRef:
name: acme-sso-oauth

Rattachement des comptes​

Quand une personne se connecte, StackNGO retrouve son compte par adresse e-mail seulement si le fournisseur garantit que l'adresse est vérifiée (Google, Microsoft, GitHub avec adresse principale vérifiée, lien e-mail). Une instance GitLab auto-hébergée ne fusionne jamais les comptes par e-mail. Une personne peut ajouter ensuite d'autres moyens à son compte, dont une passkey.

Vérification​

sng iam provider list
sng iam provider describe google

Les fournisseurs apparaissent avec leur type et Ready. La page de connexion affiche un bouton par fournisseur prêt (Page de connexion).

Limites​

  • Pas de mot de passe ni de SAML : seule la catégorie OAuth est acceptée.
  • deletionPolicy: Block (défaut) retarde la suppression d'un fournisseur encore utilisé, puis l'effectue.
  • Les secrets d'identifiants ne sont jamais relus par sng iam provider describe.

Voir aussi​