Zum Hauptinhalt springen

Tailscale

Dieser Leitfaden erklärt, wie man die Single Sign-On (SSO)-Authentifizierung zwischen SmartLink und Tailscale mithilfe von OpenID Connect mit WebFinger für eine vereinfachte Konfiguration einrichtet.

Voraussetzungen

  • Tailscale-Konto mit einem Plan, der benutzerdefiniertes SSO unterstützt (Business oder Enterprise)
  • Administrativer Zugriff auf Tailscale
  • Domain in Tailscale verifiziert
  • Anwendung in SmartLink mit OpenID Connect konfiguriert
  • WebFinger in SmartLink konfiguriert (optional, aber empfohlen)

Überblick

Tailscale unterstützt die SSO-Authentifizierung über OpenID Connect mit einer einzigartigen Funktion: WebFinger. Dies ermöglicht es Benutzern, sich einfach mit ihrer E-Mail-Adresse anzumelden, ohne die URL des Anbieters kennen zu müssen.

1. Anwendung erstellen

  1. Melden Sie sich als Administrator bei SmartLink an
  2. Gehen Sie zu AnwendungenHinzufügen
  3. Erstellen Sie eine neue Anwendung:
    • Name: Tailscale
    • URL: https://login.tailscale.com
    • Beschreibung: VPN Mesh Tailscale
    • Symbol: Wählen oder laden Sie das Tailscale-Symbol hoch

2. OpenID Connect konfigurieren

  1. Im Tab Authentifizierung
  2. Wählen Sie OpenID Connect als Authentifizierungstyp
  3. Konfigurieren Sie die Parameter:
    • Client-ID: tailscale-xxxxxx (wird automatisch generiert)
    • Client-Geheimnis: secret-xxxxxx (wird automatisch generiert)
    • App-ID: [appid] (eindeutige Kennung der Anwendung in SmartLink)
    • Client-Typ: Vertraulich

3. Weiterleitungs-URLs konfigurieren

Fügen Sie die folgenden URLs zu den Erlaubten Weiterleitungs-URLs hinzu:

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

4. Bereiche und Claims konfigurieren

Erforderliche Bereiche:

  • openid
  • Profil
  • E-Mail

Zusätzliche Claims (optional):

  • Gruppen: Zum Zuordnen von SmartLink-Gruppen zu Tailscale-ACLs
  • Bild: Für das Benutzeravatar

5. WebFinger-Konfiguration (Empfohlen)

WebFinger ermöglicht es Benutzern, sich mit ihrer E-Mail-Adresse anstelle der vollständigen URL des Anbieters anzumelden.

WebFinger-Konfiguration überprüfen

Ihre Domain (nicht Ihr Smartlink) sollte automatisch WebFinger unter folgender URL verfügbar machen:

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

Testen Sie mit:

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

Die Antwort sollte enthalten:

{
"subject": "acct:benutzer@beispiel.com",
"links": [
{
"rel": "http://openid.net/specs/connect/1.0/issuer",
"href": "https://your-smartlink.link.vaultys.org/api/oidc/[appid]"
}
]
}

Konfiguration in Tailscale

1. Zugriff auf SSO-Einstellungen

  1. Melden Sie sich bei der Tailscale-Admin-Konsole an
  2. Gehen Sie zu EinstellungenIdentitätsanbieter
  3. Klicken Sie auf Benutzerdefiniertes OIDC konfigurieren

2. Konfiguration des OpenID Connect-Anbieters

Füllen Sie die folgenden Felder aus:

  • Issuer-URL: https://your-smartlink.link.vaultys.org
  • Client-ID: [Von SmartLink kopieren]
  • Client-Geheimnis: [Von SmartLink kopieren]

Hinweis: Die in SmartLink erstellte Anwendung generiert automatisch eine [appid], die in den Endpunkten verwendet wird.

3. Konfiguration der Endpunkte (falls nicht automatisch entdeckt)

Wenn Tailscale die Endpunkte nicht automatisch über .well-known/openid-configuration erkennt, konfigurieren Sie manuell:

  • Konfigurations-URL: https://your-smartlink.link.vaultys.org/api/oidc/[appid]/.well-known/openid-configuration
  • Autorisierungs-Endpunkt: https://your-smartlink.link.vaultys.org/api/oidc/[appid]/authorize
  • Token-Endpunkt: https://your-smartlink.link.vaultys.org/api/oidc/[appid]/token
  • Benutzerinfo-Endpunkt: https://your-smartlink.link.vaultys.org/api/oidc/[appid]/userinfo
  • JWKS-Endpunkt: https://your-smartlink.link.vaultys.org/api/oidc/[appid]/jwks

4. Attributmapping konfigurieren

Konfiguration des Benutzer-Mappings:

  • E-Mail-Claim: E-Mail
  • Namens-Claim: Name oder E-Mail
  • Gruppen-Claim: Gruppen (bei Verwendung von Gruppen-basierten ACLs)

5. Domänenkonfiguration

In E-Mail-Domänenanforderungen:

  • Fügen Sie Ihre E-Mail-Domäne hinzu: @beispiel.com
  • Aktivieren Sie Nur verifizierte Domänen zulassen

WebFinger-Konfiguration für vereinfachte Anmeldung

Vorteile von WebFinger

Mit konfiguriertem WebFinger können Benutzer sich einfach anmelden, indem sie einfach Folgendes verwenden:

benutzer@beispiel.com

Anstelle von:

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

DNS-Konfiguration für WebFinger

Wenn Ihre E-Mail-Domäne von der SmartLink-Domäne abweicht, fügen Sie eine Weiterleitung hinzu:

  1. Erstellen Sie einen CNAME- oder A-Eintrag für webfinger.beispiel.com
  2. Konfigurieren Sie Ihren Webserver für die Weiterleitung:
    location /.well-known/webfinger {
    return 307 https://your-smartlink.link.vaultys.org/.well-known/webfinger$is_args$args;
    }

WebFinger-Test mit Tailscale

  1. Auf der Tailscale-Anmeldeseite
  2. Geben Sie Ihre E-Mail ein: benutzer@beispiel.com
  3. Tailscale sollte SmartLink automatisch als Anbieter erkennen
  4. Sie werden zur Authentifizierung an SmartLink weitergeleitet

Konfiguration von Gruppen-basierten ACLs

  1. In der Tailscale-Anwendung auf SmartLink
  2. Stellen Sie sicher, dass der Bereich Gruppen aktiviert ist
  3. Überprüfen Sie, ob die Gruppen in den Claims zurückgegeben werden

2. Konfiguration der Tailscale-ACLs

Beispielkonfiguration der ACLs in Tailscale:

{
"Gruppen": {
"Gruppe:Admin": ["benutzer@beispiel.com"],
"Gruppe:Dev": ["tag:dev-server"]
},
"ACLs": [
{
"Aktion": "Akzeptieren",
"Src": ["Gruppe:Admin"],
"Dst": ["*:*"]
},
{
"Aktion": "Akzeptieren",
"Src": ["Gruppe:Dev"],
"Dst": ["tag:dev-server:*"]
}
],
"Tag-Besitzer": {
"tag:dev-server": ["Gruppe:Admin"]
}
}

3. Automatische Gruppensynchronisierung

Wenn korrekt konfiguriert, werden SmartLink-Gruppen mit Tailscale abgeglichen:

  • SmartLink-Gruppe EntwicklerGruppe:Entwickler in Tailscale
  • SmartLink-Gruppe AdminsGruppe:Admins in Tailscale

Konfigurationstest

1. Test der Erstverbindung

  1. Melden Sie sich von Tailscale ab
  2. Gehen Sie zu login.tailscale.com
  3. Geben Sie Ihre Unternehmens-E-Mail ein
  4. Sie sollten zu SmartLink weitergeleitet werden
  5. Melden Sie sich mit Ihren SmartLink-Anmeldeinformationen an
  6. Sie sollten mit Tailscale verbunden sein

2. Test mit dem Tailscale-Client

  1. Installieren Sie den Tailscale-Client auf Ihrem Gerät
  2. Klicken Sie auf Anmelden
  3. Verwenden Sie Ihre Unternehmens-E-Mail
  4. Der Client sollte einen Browser zu SmartLink öffnen
  5. Nach der Authentifizierung sollte der Client verbunden sein

3. Berechtigungsüberprüfung

# Verbindungsstatus überprüfen
tailscale status

# Angewendete ACLs überprüfen
tailscale netcheck

# Tags und Gruppen überprüfen
tailscale debug acls

Fehlerbehebung

Fehler "Ungültiger Anbieter"

Problem: Tailscale erkennt den SmartLink-Anbieter nicht

Lösung:

  1. Stellen Sie sicher, dass die Issuer-URL genau wie folgt lautet: https://your-smartlink.link.vaultys.org
  2. Testen Sie die OpenID-Entdeckung mit Ihrer App-ID:
    curl https://your-smartlink.link.vaultys.org/api/oidc/[appid]/.well-known/openid-configuration
  3. Stellen Sie sicher, dass der Issuer in der Konfiguration mit dem zurückgegebenen übereinstimmt

WebFinger funktioniert nicht

Problem: Die Anmeldung mit einfacher E-Mail funktioniert nicht

Lösung:

  1. Testen Sie WebFinger direkt:
    curl "https://your-smartlink.link.vaultys.org/.well-known/webfinger?resource=acct:test@example.com"
  2. Wenn Ihre E-Mail-Domäne unterschiedlich ist, konfigurieren Sie die DNS-Weiterleitung
  3. Überprüfen Sie bei Bedarf die CORS-Header

Fehler "Benutzer nicht autorisiert"

Problem: Der Benutzer kann nach der Authentifizierung nicht auf Tailscale zugreifen

Lösung:

  1. Stellen Sie sicher, dass die E-Mail des Benutzers mit der konfigurierten Domäne übereinstimmt
  2. Stellen Sie sicher, dass der Benutzer der Anwendung in SmartLink zugewiesen ist
  3. Überprüfen Sie die Protokolle der Tailscale-Admin-Konsole

Gruppen werden nicht synchronisiert

Problem: Die Gruppen-basierten ACLs funktionieren nicht

Lösung:

  1. Überprüfen Sie, ob der Bereich Gruppen aktiviert ist
  2. Testen Sie den UserInfo-Endpunkt, um die Gruppen zu sehen:
    curl -H "Authorization: Bearer TOKEN" https://your-smartlink.link.vaultys.org/api/oidc/[appid]/userinfo
  3. Überprüfen Sie das Format der zurückgegebenen Gruppen (Array von Strings)
  4. Passen Sie die Tailscale-ACLs dem Gruppenformat an

SSL-Zertifikatsfehler

Problem: SSL-Validierungsfehler bei der Verbindung

Lösung:

  1. Stellen Sie sicher, dass ein gültiges SSL-Zertifikat verwendet wird (nicht selbstsigniert)
  2. Überprüfen Sie die vollständige Zertifikatskette
  3. Testen Sie mit:
    openssl s_client -connect your-smartlink.example.com:443 -showcerts

Sicherheit

Best Practices

  1. Zwingendes HTTPS: Verwenden Sie niemals HTTP für OAuth-Endpunkte
  2. Verifizierte Domänen: Beschränken Sie den Zugriff auf verifizierte E-Mail-Domänen
  3. Geheimnisse regelmäßig ändern: Ändern Sie das Client-Geheimnis regelmäßig
  4. Strenge ACLs: Verwenden Sie das Prinzip des geringsten Privilegs
  5. Überwachungsprotokolle: Überwachen Sie die Verbindungen in der Tailscale-Admin-Konsole

MFA-Konfiguration

Tailscale erbt die MFA-Konfiguration von SmartLink:

  1. Aktivieren Sie MFA in SmartLink für Benutzer
  2. Benutzer müssen sich bei der Tailscale-Anmeldung mit MFA authentifizieren

Zugriff widerrufen

Um den Zugriff eines Benutzers zu widerrufen:

  1. Deaktivieren oder löschen Sie den Benutzer in SmartLink
  2. Der Zugriff auf Tailscale wird automatisch beim Ablauf des Tokens widerrufen
  3. Für eine sofortige Sperrung entfernen Sie das Gerät auch in der Tailscale-Admin-Konsole

Erweiterte Konfiguration

Benutzerdefiniertes Sitzungsende

Konfigurieren Sie in SmartLink die Token-Ablaufzeit:

  • Access Token: 1 Stunde (empfohlen)
  • Refresh Token: 30 Tage
  • Tailscale-Sitzung: Passt sich dem Refresh Token an

Integration mit Headscale

Wenn Sie Headscale (Open-Source-Steuerungsserver) verwenden:

  1. Befolgen Sie das Headscale-Handbuch
  2. Die OpenID-Konfiguration ist ähnlich
  3. WebFinger funktioniert auch mit Headscale

Automatisierung mit Terraform

Beispielkonfiguration mit Terraform für Tailscale:

resource "tailscale_acl" "main" {
acl = jsonencode({
groups = {
"group:admin" = ["user@example.com"]
}
acls = [
{
action = "accept"
src = ["group:admin"]
dst = ["*:*"]
}
]
})
}

Ressourcen