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.
Configuration dans SmartLink
1. Créer l'application
- Connectez-vous à SmartLink en tant qu'administrateur
- Allez dans Applications → Ajouter
- 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
- Dans l'onglet Authentification
- Sélectionnez OpenID Connect comme type d'authentification
- 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
- Client ID :
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 :
openidprofileemail
Claims supplémentaires (optionnel) :
groups: Pour mapper les groupes SmartLink vers les ACLs Tailscalepicture: 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
- Connectez-vous à Tailscale Admin Console
- Allez dans Settings → Identity provider
- 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 :
nameouemail - 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 :
- Créez un enregistrement CNAME ou A pour
webfinger.example.com - 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
- Sur la page de connexion Tailscale
- Entrez votre email :
utilisateur@example.com - Tailscale devrait automatiquement découvrir SmartLink comme provider
- Vous serez redirigé vers SmartLink pour l'authentification
Configuration des ACLs basées sur les groupes
1. Activer les groupes dans SmartLink
- Dans l'application Tailscale sur SmartLink
- Assurez-vous que le scope
groupsest activé - 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
developers→group:developersdans Tailscale - Groupe SmartLink
admins→group:adminsdans Tailscale
Test de la configuration
1. Test de connexion initiale
- Déconnectez-vous de Tailscale
- Allez sur login.tailscale.com
- Entrez votre email d'entreprise
- Vous devez être redirigé vers SmartLink
- Authentifiez-vous avec vos identifiants SmartLink
- Vous devez être connecté à Tailscale
2. Test avec le client Tailscale
- Installez le client Tailscale sur votre appareil
- Cliquez sur Log in
- Utilisez votre email d'entreprise
- Le client devrait ouvrir un navigateur vers SmartLink
- 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 :
- Vérifiez que l'URL issuer est exactement :
https://votre-smartlink.link.vaultys.org - Testez la découverte OpenID avec votre appid :
curl https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/.well-known/openid-configuration - 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 :
- Testez WebFinger directement :
curl "https://votre-smartlink.link.vaultys.org/.well-known/webfinger?resource=acct:test@example.com" - Si votre domaine email est différent, configurez la redirection DNS
- 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 :
- Vérifiez que l'email de l'utilisateur correspond au domaine configuré
- Assurez-vous que l'utilisateur est assigné à l'application dans SmartLink
- 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 :
- Vérifiez que le scope
groupsest activé - Testez l'endpoint UserInfo pour voir les groupes :
curl -H "Authorization: Bearer TOKEN" https://votre-smartlink.link.vaultys.org/api/oidc/[appid]/userinfo - Vérifiez le format des groupes retournés (array de strings)
- Adaptez les ACLs Tailscale au format des groupes
Erreur de certificat SSL
Problème : Erreur de validation SSL lors de la connexion
Solution :
- Assurez-vous d'utiliser un certificat SSL valide (pas auto-signé)
- Vérifiez la chaîne de certificats complète
- Testez avec :
openssl s_client -connect votre-smartlink.example.com:443 -showcerts
Sécurité
Bonnes pratiques
- HTTPS obligatoire : N'utilisez jamais HTTP pour les endpoints OAuth
- Domaines vérifiés : Limitez l'accès aux domaines email vérifiés
- Rotation des secrets : Changez régulièrement le Client Secret
- ACLs strictes : Utilisez le principe du moindre privilège
- Audit logs : Surveillez les connexions dans Tailscale Admin
Configuration MFA
Tailscale hérite de la configuration MFA de SmartLink :
- Activez le MFA dans SmartLink pour les utilisateurs
- 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 :
- Désactivez ou supprimez l'utilisateur dans SmartLink
- L'accès Tailscale sera automatiquement révoqué à l'expiration du token
- 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) :
- Suivez le guide Headscale
- La configuration OpenID est similaire
- 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 = ["*:*"]
}
]
})
}