Fournisseurs de connexion
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).
| Type | Connexion | Identifiants à fournir |
|---|---|---|
Email | lien à usage unique envoyé à l'adresse de la personne | aucun |
Google | compte Google | client-id, client-secret |
GitHub | compte GitHub | client-id, client-secret |
GitLab | gitlab.com, ou votre instance (baseURL) | client-id, client-secret |
Microsoft | compte Microsoft (azureTenant : common, organizations, consumers ou un identifiant d'annuaire) | client-id, client-secret |
LinkedIn | compte LinkedIn | client-id, client-secret |
OIDC | tout fournisseur OpenID Connect (issuer) | client-id, client-secret |
Prérequis
- Une session sur le tenant :
sng tenant use acme. deploy:write(policyreadwriteouadmin).- 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.
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…)
- Stockez les identifiants dans un secret du tenant, avec les clés
client-idetclient-secret. - Déclarez le fournisseur en citant ce secret :
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 :
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
OAuthest 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.