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
  • Un point WebFinger servi par votre domaine e-mail (requis par Tailscale pour un OIDC personnalisé)

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

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:utilisateur@example.com",
"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/api/oidc/[appid]
  • 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]/auth
  • 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

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 :

utilisateur@example.com

Au lieu de :

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

Servir WebFinger sur votre domaine​

VaultysHub n'expose pas de point WebFinger : c'est le serveur web de votre domaine e-mail (example.com) qui doit répondre, en indiquant l'issuer VaultysHub. Une réponse statique suffit :

location = /.well-known/webfinger {
default_type application/jrd+json;
return 200 '{"subject":"$arg_resource","links":[{"rel":"http://openid.net/specs/connect/1.0/issuer","href":"https://votre-smartlink.link.vaultys.org/api/oidc/[appid]"}]}';
}

Test WebFinger avec Tailscale​

  1. Sur la page de connexion Tailscale
  2. Entrez votre email : utilisateur@example.com
  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. Groupes VaultysHub​

VaultysHub ne transmet pas les groupes de l'utilisateur (pas de scope ni de claim groups). Les groupes sont donc définis directement dans la politique ACL Tailscale, à partir des adresses e-mail des utilisateurs.

2. Configurer les ACLs Tailscale​

Exemple de configuration ACL dans Tailscale :

{
"groups": {
"group:admin": ["user@example.com"],
"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"]
}
}

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/api/oidc/[appid]
  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://example.com/.well-known/webfinger?resource=acct:test@example.com"
  2. La réponse doit venir de votre domaine e-mail, pas de VaultysHub, et son href doit être exactement l'issuer VaultysHub
  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 : VaultysHub ne transmet pas les groupes. Définissez les groupes et leurs membres (adresses e-mail) directement dans la politique ACL Tailscale.

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" = ["user@example.com"]
}
acls = [
{
action = "accept"
src = ["group:admin"]
dst = ["*:*"]
}
]
})
}

Ressources​