Skip to main content

Tailscale

Ce guide vous explique comment configurer l'authentification unique (SSO) entre SmartLink 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 SmartLink avec OpenID Connect
  • WebFinger configuré sur SmartLink (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.

1. Créer l'application

  1. Connectez-vous à SmartLink en tant qu'administrateur
  2. Allez dans ApplicationsAjouter
  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 SmartLink)
    • 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 SmartLink 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: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 SettingsIdentity 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 SmartLink]
  • Client Secret : [Copiez depuis SmartLink]

Note: L'application créée dans SmartLink 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 :

utilisateur@example.com

Au lieu de :

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

Configuration DNS pour WebFinger

Si votre domaine email est différent du domaine SmartLink, 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 : utilisateur@example.com
  3. Tailscale devrait automatiquement découvrir SmartLink comme provider
  4. Vous serez redirigé vers SmartLink pour l'authentification

Configuration des ACLs basées sur les groupes

  1. Dans l'application Tailscale sur SmartLink
  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": ["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"]
}
}

3. Synchronisation automatique des groupes

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

  • Groupe SmartLink developersgroup:developers dans Tailscale
  • Groupe SmartLink adminsgroup: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 SmartLink
  5. Authentifiez-vous avec vos identifiants SmartLink
  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 SmartLink
  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 SmartLink

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:test@example.com"
  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 SmartLink
  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 SmartLink :

  1. Activez le MFA dans SmartLink 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 SmartLink
  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 SmartLink, 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