Passer au contenu principal

NetBird

NetBird est un réseau superposé basé sur WireGuard. Un serveur NetBird auto-hébergé authentifie les utilisateurs sur son tableau de bord et ses applications clientes via OpenID Connect (OIDC). Avec Casdoor comme fournisseur d'identité, les utilisateurs se connectent à NetBird avec leur compte Casdoor.

Comment NetBird utilise Casdoor​

Depuis la version 0.62, le serveur NetBird dispose d'un service de connexion intégré, et vous y ajoutez Casdoor en tant que fournisseur d'identité Generic OIDC. Le tableau de bord et le client NetBird se connectent à ce service intégré, qui renvoie l'utilisateur vers Casdoor :

  • Le client sur un ordinateur avec un navigateur utilise le flux de code d'autorisation avec PKCE. Le client sur un serveur Linux sans bureau utilise le flux d'autorisation de périphérique et affiche une URL et un code.
  • Les deux flux s'exécutent entre le client et le serveur NetBird. Casdoor ne voit que la connexion du serveur NetBird, donc l'application Casdoor a besoin d'une seule URL de redirection, d'un secret client et d'aucune concession de périphérique.

Si votre serveur NetBird a été configuré avec setup.env et utilise Casdoor à la place de la connexion intégrée, consultez Utiliser Casdoor sans la connexion intégrée.

Créer l'application dans Casdoor​

  1. Dans la console d'administration de Casdoor, ouvrez l'organisation de vos utilisateurs et ajoutez une application, ou ouvrez-en une existante.

  2. Ajoutez le rappel (callback) de NetBird aux Redirect URLs :

    https://netbird.example.com/oauth2/callback
  3. Gardez le Token format à la valeur par défaut JWT. NetBird lit l'utilisateur depuis le jeton d'identification, sans interroger le point de terminaison UserInfo, et le format par défaut contient email, name (le nom d'utilisateur) et groups à cet endroit.

  4. Enregistrez, et notez le Client ID et le Client secret.

Ajouter Casdoor à NetBird​

  1. Dans le tableau de bord NetBird, allez dans Settings > Identity Providers et cliquez sur Add Identity Provider.

  2. Remplissez les informations du fournisseur :

    FieldValue
    Provider TypeGeneric OIDC
    NameCasdoor
    Issuer URLhttps://door.example.com
    Client ID<your-client-id>
    Client Secret<your-client-secret>
    • Issuer URL : L'URL de Casdoor. Elle doit correspondre exactement à l'issuer affiché sur https://door.example.com/.well-known/openid-configuration.
    • <your-client-id>, <your-client-secret> : Les valeurs de l'application Casdoor.
  3. Vérifiez que l'URL Redirect / Callback dans la boîte de dialogue est bien celle ajoutée dans Redirect URLs dans Casdoor, puis cliquez sur Add Provider.

Synchroniser les groupes Casdoor​

  1. Dans l'application Casdoor, sur l'onglet OIDC/OAuth, définissez Token group format sur Name (group), afin que les groupes arrivent sous la forme developers au lieu de my-org/developers.
  2. Dans le tableau de bord NetBird, accédez à Settings > Groups, activez JWT group sync et définissez JWT claim sur groups.

NetBird ajoute et supprime les appartenances aux groupes de l'utilisateur à chaque connexion.

Vérifier le résultat​

  1. Ouvrez le tableau de bord NetBird dans une fenêtre de navigation privée. La page de connexion affiche un bouton pour Casdoor.
  2. Cliquez dessus et connectez-vous à Casdoor. Le tableau de bord s'ouvre avec l'utilisateur Casdoor connecté.
  3. Connectez un appareil avec le client NetBird. Le client ouvre la même page de connexion dans un navigateur, ou sur un serveur sans environnement graphique, affiche une URL et un code à ouvrir sur un autre appareil.

Utiliser Casdoor sans la connexion intégrée​

Dans l'ancienne configuration, configure.sh lit setup.env et configure le tableau de bord et le client pour qu'ils communiquent directement avec Casdoor. Casdoor sert alors le flux PKCE et le flux d'autorisation par appareil du client lui-même.

  1. Dans l'application Casdoor, ajoutez ces URL à Redirect URLs :

    https://netbird.example.com/nb-auth
    https://netbird.example.com/nb-silent-auth
    http://localhost:53000

    La dernière correspond au callback PKCE du client NetBird. Une entrée localhost dans Casdoor correspond à la même URL sur n'importe quel port.

  2. Sur l'onglet OIDC/OAuth, activez Authorization Code, Refresh Token et Device Code dans Grant types.

  3. Dans Signin methods, ajoutez Device login. Casdoor refuse les demandes d'autorisation par appareil pour les applications qui ne disposent pas de cette méthode.

  4. Dans setup.env, définissez :

    NETBIRD_AUTH_OIDC_CONFIGURATION_ENDPOINT="https://door.example.com/.well-known/openid-configuration"
    NETBIRD_AUTH_CLIENT_ID="<your-client-id>"
    NETBIRD_AUTH_AUDIENCE="<your-client-id>"
    NETBIRD_AUTH_SUPPORTED_SCOPES="openid profile email offline_access"
    NETBIRD_AUTH_REDIRECT_URI="/nb-auth"
    NETBIRD_AUTH_SILENT_REDIRECT_URI="/nb-silent-auth"
    NETBIRD_AUTH_DEVICE_AUTH_CLIENT_ID="<your-client-id>"
    NETBIRD_USE_AUTH0="false"
    NETBIRD_MGMT_IDP="none"
    • NETBIRD_AUTH_AUDIENCE : Casdoor place l'ID client dans la revendication aud de ses jetons, et à la fois le serveur NetBird et le client rejettent les jetons destinés à une autre audience.
    • NETBIRD_AUTH_DEVICE_AUTH_CLIENT_ID : Active le flux d'autorisation par appareil, utilisé exclusivement par le client sur un serveur Linux sans environnement graphique.
    • NETBIRD_MGMT_IDP : NetBird ne dispose pas d'intégration de gestion des utilisateurs pour Casdoor.

    Le tableau de bord et le client sont ici des clients publics : ils utilisent PKCE et n'envoient aucun secret client, ce que Casdoor accepte.

  5. Exécutez ./configure.sh et redémarrez les conteneurs NetBird.

Dépannage​

SymptomCause and fix
Casdoor shows Redirect URI: ... doesn't exist in the allowed Redirect URI listAdd the URL from the error to Redirect URLs. With the built-in login, it is the Redirect / Callback URL from the NetBird dialog.
Sign-in fails with an issuer or discovery errorIssuer URL differs from the issuer in Casdoor's discovery document. Set origin in Casdoor's conf/app.conf to its public URL and use the same value.
The dashboard works, but the client never connects and shows no errorIn the setup without the built-in login: on a Linux server without a desktop, the client uses only the device authorization flow. Turn on Device Code and add Device login to Signin methods in Casdoor, and set NETBIRD_AUTH_DEVICE_AUTH_CLIENT_ID. Also check that NETBIRD_AUTH_AUDIENCE is the client ID.
The device authorization request fails with device login is not enabled for this applicationAdd Device login to the Signin methods of the application.
Groups don't appear in NetBirdCheck that JWT group sync is on with the claim groups, that the user is in a group in Casdoor, and that Token format is JWT.

Voir aussi​