Saltar al contenido principal

NetBird

NetBird es una red superpuesta basada en WireGuard. Un servidor NetBird autoalojado inicia sesión a sus usuarios en su dashboard y en sus aplicaciones cliente a través de OpenID Connect (OIDC). Con Casdoor como proveedor de identidad, los usuarios inician sesión en NetBird con su cuenta de Casdoor.

Cómo NetBird usa Casdoor​

Desde la versión 0.62, el servidor NetBird tiene un servicio de inicio de sesión integrado, y añades Casdoor a él como un proveedor de identidad Generic OIDC. El dashboard y el cliente NetBird inician sesión en este servicio integrado, que envía al usuario a Casdoor:

  • El cliente en un equipo con navegador utiliza el flujo de código de autorización con PKCE. El cliente en un servidor Linux sin escritorio utiliza el flujo de autorización de dispositivo y muestra una URL y un código.
  • Ambos flujos se ejecutan entre el cliente y el servidor NetBird. Casdoor solo ve el inicio de sesión del servidor NetBird, por lo que la aplicación de Casdoor necesita una Redirect URL, un secreto de cliente y no requiere el otorgamiento de dispositivo (device grant).

Si su servidor NetBird se configuró con setup.env y utiliza Casdoor en lugar del inicio de sesión integrado, consulte Usar Casdoor sin el inicio de sesión integrado.

Crear la aplicación en Casdoor​

  1. En la consola de administración de Casdoor, abra la organización de sus usuarios y agregue una aplicación, o abra una existente.

  2. Agregue el callback de NetBird a Redirect URLs:

    https://netbird.example.com/oauth2/callback
  3. Mantenga Token format en el valor predeterminado JWT. NetBird lee al usuario desde el token de ID, sin consultar el endpoint UserInfo, y el formato predeterminado incluye allí email, name (el nombre de usuario) y groups.

  4. Guarde y anote el Client ID y el Client secret.

Agregar Casdoor a NetBird​

  1. En el panel de control de NetBird, vaya a Settings > Identity Providers y haga clic en Add Identity Provider.

  2. Complete los datos del proveedor:

    FieldValue
    Provider TypeGeneric OIDC
    NameCasdoor
    Issuer URLhttps://door.example.com
    Client ID<your-client-id>
    Client Secret<your-client-secret>
    • Issuer URL: La URL de Casdoor. Debe ser exactamente el issuer mostrado en https://door.example.com/.well-known/openid-configuration.
    • <your-client-id>, <your-client-secret>: Los valores de la aplicación de Casdoor.
  3. Verifique que la URL de Redirect / Callback en el cuadro de diálogo sea la que agregó a Redirect URLs en Casdoor, y haga clic en Add Provider.

Sincronizar grupos de Casdoor​

  1. En la aplicación de Casdoor, en la pestaña OIDC/OAuth, establezca Token group format en Name (group), para que los grupos lleguen como developers en lugar de my-org/developers.
  2. En el panel de control de NetBird, vaya a Settings > Groups, active JWT group sync y establezca JWT claim en groups.

NetBird agrega y elimina las membresías de grupo del usuario en cada inicio de sesión.

Verificar el resultado​

  1. Abra el panel de control de NetBird en una ventana privada del navegador. La página de inicio de sesión muestra un botón para Casdoor.
  2. Haga clic en él e inicie sesión en Casdoor. El panel de control se abre con el usuario de Casdoor conectado.
  3. Conecte un dispositivo con el cliente de NetBird. El cliente abre el mismo inicio de sesión en un navegador, o en un servidor sin escritorio, imprime una URL y un código para abrir en otro dispositivo.

Usar Casdoor sin el inicio de sesión integrado​

En la configuración anterior, configure.sh lee setup.env y configura el panel de control y el cliente para que hablen directamente con Casdoor. Casdoor sirve entonces el flujo PKCE y el flujo de autorización de dispositivo del propio cliente.

  1. En la aplicación de Casdoor, agregue estas URL a Redirect URLs:

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

    La última es el callback PKCE del cliente de NetBird. Una entrada localhost en Casdoor coincide con la misma URL en cualquier puerto.

  2. En la pestaña OIDC/OAuth, active Authorization Code, Refresh Token y Device Code en Grant types.

  3. En Signin methods, agregue Device login. Casdoor rechaza las solicitudes de autorización de dispositivo para aplicaciones que no tengan esto.

  4. En setup.env, establezca:

    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 coloca el ID de cliente en la reclamación aud de sus tokens, y tanto el servidor como el cliente de NetBird rechazan tokens para otra audiencia.
    • NETBIRD_AUTH_DEVICE_AUTH_CLIENT_ID: Activa el flujo de autorización de dispositivo, que utiliza exclusivamente el cliente en un servidor Linux sin escritorio.
    • NETBIRD_MGMT_IDP: NetBird no tiene integración de gestión de usuarios para Casdoor.

    El panel de control y el cliente son clientes públicos aquí: utilizan PKCE y no envían ningún secreto de cliente, lo cual Casdoor acepta.

  5. Ejecute ./configure.sh y reinicie los contenedores de NetBird.

Solución de problemas​

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.

Véase también​