Aller au contenu principal

Tailscale

Ce guide vous explique comment configurer l'authentification unique (SSO) entre VaultysHub et Tailscale en utilisant OpenID Connect avec WebFinger pour une configuration simplifiée.

Prérequis​

  • Compte Tailscale avec un plan supportant le SSO personnalisé (Business ou Enterprise)
  • Accès administrateur à Tailscale
  • Domaine vérifié dans Tailscale
  • Application configurée dans VaultysHub avec OpenID Connect
  • WebFinger configuré sur VaultysHub (optionnel mais recommandé)

Vue d'ensemble​

Tailscale supporte l'authentification SSO via OpenID Connect avec une fonctionnalité unique : WebFinger. Cela permet aux utilisateurs de se connecter simplement avec leur adresse email, sans avoir à connaître l'URL du provider.

Configuration dans VaultysHub​

1. Créer l'application​

  1. Connectez-vous à VaultysHub en tant qu'administrateur
  2. Allez dans Applications → Ajouter
  3. Créez une nouvelle application :
    • Nom : Tailscale
    • URL : https://login.tailscale.com
    • Description : VPN Mesh Tailscale
    • Icône : Choisissez ou uploadez l'icône Tailscale

2. Configurer OpenID Connect​

  1. Dans l'onglet Authentification
  2. Sélectionnez OpenID Connect comme type d'authentification
  3. Configurez les paramètres :
    • Client ID : tailscale-xxxxxx (sera généré automatiquement)
    • Client Secret : secret-xxxxxx (sera généré automatiquement)
    • App ID : [appid] (identifiant unique de l'application dans VaultysHub)
    • Type de client : Confidentiel

3. Configurer les URLs de redirection​

Ajoutez les URLs suivantes dans URLs de redirection autorisées :

https://login.tailscale.com/a/oauth_response
https://controlplane.tailscale.com/a/oauth_response

4. Configurer les scopes et claims​

Scopes requis :

  • openid
  • profile
  • email

Claims supplémentaires (optionnel) :

  • groups : Pour mapper les groupes VaultysHub vers les ACLs Tailscale
  • picture : Pour l'avatar utilisateur

5. Configuration WebFinger (Recommandé)​

WebFinger permet aux utilisateurs de se connecter avec leur email au lieu de l'URL complète du provider.

Vérifier la configuration WebFinger​

Votre domaine (pas votre Smartlink) doit exposer automatiquement WebFinger sur :

https://<mondomaine>/.well-known/webfinger

Testez avec :

curl "https://example.com/.well-known/webfinger"

La réponse devrait contenir :

{
"subject": "acct:[email protected]",
"links": [
{
"rel": "http://openid.net/specs/connect/1.0/issuer",
"href": "https://votre-smartlink.link.vaultys.org/api/oidc/[appid]"
}
]
}

Configuration dans Tailscale​

1. Accéder aux paramètres SSO​

  1. Connectez-vous à Tailscale Admin Console
  2. Allez dans Settings → Identity provider
  3. Cliquez sur Configure custom OIDC

2. Configuration du provider OpenID Connect​

Remplissez les champs suivants :

  • Issuer URL : https://votre-smartlink.link.vaultys.org
  • Client ID : [Copiez depuis VaultysHub]
  • Client Secret : [Copiez depuis VaultysHub]

Note: L'application créée dans VaultysHub génère automatiquement un [appid] qui sera utilisé dans les URLs des endpoints.

3. Configuration des endpoints (si non auto-découverts)​

Si Tailscale ne détecte pas automatiquement les endpoints via .well-known/openid-configuration, configurez manuellement :

  • Configuration URL : https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/.well-known/openid-configuration
  • Authorization endpoint : https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/authorize
  • Token endpoint : https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/token
  • UserInfo endpoint : https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/userinfo
  • JWKS endpoint : https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/jwks

4. Mapping des attributs​

Configuration du mapping utilisateur :

  • Email claim : email
  • Name claim : name ou email
  • Groups claim : groups (si vous utilisez les ACLs basées sur les groupes)

5. Configuration des domaines​

Dans Email domain requirements :

  • Ajoutez votre domaine email : @example.com
  • Activez Allow only verified domains

Configuration WebFinger pour connexion simplifiée​

Avantages de WebFinger​

Avec WebFinger configuré, les utilisateurs peuvent se connecter en utilisant simplement :

Au lieu de :

https://votre-smartlink.link.vaultys.org

Configuration DNS pour WebFinger​

Si votre domaine email est différent du domaine VaultysHub, ajoutez une redirection :

  1. Créez un enregistrement CNAME ou A pour webfinger.example.com
  2. Configurez votre serveur web pour rediriger :
    location /.well-known/webfinger {
    return 307 https://votre-smartlink.link.vaultys.org/.well-known/webfinger$is_args$args;
    }

Test WebFinger avec Tailscale​

  1. Sur la page de connexion Tailscale
  2. Entrez votre email : [email protected]
  3. Tailscale devrait automatiquement découvrir VaultysHub comme provider
  4. Vous serez redirigé vers VaultysHub pour l'authentification

Configuration des ACLs basées sur les groupes​

1. Activer les groupes dans VaultysHub​

  1. Dans l'application Tailscale sur VaultysHub
  2. Assurez-vous que le scope groups est activé
  3. Vérifiez que les groupes sont bien retournés dans les claims

2. Configurer les ACLs Tailscale​

Exemple de configuration ACL dans Tailscale :

{
"groups": {
"group:admin": ["[email protected]"],
"group:dev": ["tag:dev-servers"]
},
"acls": [
{
"action": "accept",
"src": ["group:admin"],
"dst": ["*:*"]
},
{
"action": "accept",
"src": ["group:dev"],
"dst": ["tag:dev-servers:*"]
}
],
"tagOwners": {
"tag:dev-servers": ["group:admin"]
}
}

3. Synchronisation automatique des groupes​

Si configuré correctement, les groupes VaultysHub seront mappés vers Tailscale :

  • Groupe VaultysHub developers → group:developers dans Tailscale
  • Groupe VaultysHub admins → group:admins dans Tailscale

Test de la configuration​

1. Test de connexion initiale​

  1. Déconnectez-vous de Tailscale
  2. Allez sur login.tailscale.com
  3. Entrez votre email d'entreprise
  4. Vous devez être redirigé vers VaultysHub
  5. Authentifiez-vous avec vos identifiants VaultysHub
  6. Vous devez être connecté à Tailscale

2. Test avec le client Tailscale​

  1. Installez le client Tailscale sur votre appareil
  2. Cliquez sur Log in
  3. Utilisez votre email d'entreprise
  4. Le client devrait ouvrir un navigateur vers VaultysHub
  5. Après authentification, le client devrait se connecter

3. Vérification des permissions​

# Vérifier l'état de connexion
tailscale status

# Vérifier les ACLs appliquées
tailscale netcheck

# Vérifier les tags et groupes
tailscale debug acls

Dépannage​

Erreur "Invalid issuer"​

Problème : Tailscale ne reconnaît pas l'issuer VaultysHub

Solution :

  1. Vérifiez que l'URL issuer est exactement : https://votre-smartlink.link.vaultys.org
  2. Testez la découverte OpenID avec votre appid :
    curl https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/.well-known/openid-configuration
  3. Assurez-vous que l'issuer dans la configuration correspond à celui retourné

WebFinger ne fonctionne pas​

Problème : La connexion avec email simple ne fonctionne pas

Solution :

  1. Testez WebFinger directement :
    curl "https://votre-smartlink.link.vaultys.org/.well-known/webfinger?resource=acct:[email protected]"
  2. Si votre domaine email est différent, configurez la redirection DNS
  3. Vérifiez les headers CORS si nécessaire

Erreur "User not authorized"​

Problème : L'utilisateur ne peut pas accéder à Tailscale après authentification

Solution :

  1. Vérifiez que l'email de l'utilisateur correspond au domaine configuré
  2. Assurez-vous que l'utilisateur est assigné à l'application dans VaultysHub
  3. Vérifiez les logs Tailscale Admin Console

Les groupes ne sont pas synchronisés​

Problème : Les ACLs basées sur les groupes ne fonctionnent pas

Solution :

  1. Vérifiez que le scope groups est activé
  2. Testez l'endpoint UserInfo pour voir les groupes :
    curl -H "Authorization: Bearer TOKEN" https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/userinfo
  3. Vérifiez le format des groupes retournés (array de strings)
  4. Adaptez les ACLs Tailscale au format des groupes

Erreur de certificat SSL​

Problème : Erreur de validation SSL lors de la connexion

Solution :

  1. Assurez-vous d'utiliser un certificat SSL valide (pas auto-signé)
  2. Vérifiez la chaîne de certificats complète
  3. Testez avec :
    openssl s_client -connect votre-smartlink.example.com:443 -showcerts

Sécurité​

Bonnes pratiques​

  1. HTTPS obligatoire : N'utilisez jamais HTTP pour les endpoints OAuth
  2. Domaines vérifiés : Limitez l'accès aux domaines email vérifiés
  3. Rotation des secrets : Changez régulièrement le Client Secret
  4. ACLs strictes : Utilisez le principe du moindre privilège
  5. Audit logs : Surveillez les connexions dans Tailscale Admin

Configuration MFA​

Tailscale hérite de la configuration MFA de VaultysHub :

  1. Activez le MFA dans VaultysHub pour les utilisateurs
  2. Les utilisateurs devront s'authentifier avec MFA lors de la connexion Tailscale

Révocation d'accès​

Pour révoquer l'accès d'un utilisateur :

  1. Désactivez ou supprimez l'utilisateur dans VaultysHub
  2. L'accès Tailscale sera automatiquement révoqué à l'expiration du token
  3. Pour une révocation immédiate, supprimez aussi l'appareil dans Tailscale Admin

Configuration avancée​

Expiration de session personnalisée​

Dans VaultysHub, configurez la durée de vie des tokens :

  • Access Token : 1 heure (recommandé)
  • Refresh Token : 30 jours
  • Session Tailscale : S'aligne sur le Refresh Token

Intégration avec Headscale​

Si vous utilisez Headscale (serveur de contrôle open-source) :

  1. Suivez le guide Headscale
  2. La configuration OpenID est similaire
  3. WebFinger fonctionne également avec Headscale

Automatisation avec Terraform​

Exemple de configuration Terraform pour Tailscale :

resource "tailscale_acl" "main" {
acl = jsonencode({
groups = {
"group:admin" = ["[email protected]"]
}
acls = [
{
action = "accept"
src = ["group:admin"]
dst = ["*:*"]
}
]
})
}

Ressources​