Cuentas sociales de GeoNode

Permitir que GeoNode inicie sesión a través de cuentas sociales (OIDC)

Introducción

A través de las llamadas “cuentas sociales”, GeoNode permite la autenticación a través de proveedores externos que soportan el protocolo OIDC (OpenID Connect), como Google y Microsoft Azure.

¿Cómo funciona?Una vez configurado el proveedor de autenticación, el inicio de sesión de GeoNode mostrará un nuevo botón de inicio de sesión que redirige al usuario a la página de autenticación externa.Después de autenticarse exitosamente con el proveedor externo y aceptar los consentimientos de privacidad, el navegador redirigirá al usuario nuevamente a la página de GeoNode, solicitándole que ingrese la información faltante la primera vez y autenticándolo automáticamente en ocasiones posteriores.

Uso

Una vez que el proveedor se haya configurado correctamente (ver más abajo), GeoNode permitirá al usuario iniciar sesión a través de él.

La primera vez que inicie sesión probablemente necesitará confirmar su «correo electrónico» y otros campos del «perfil».

Nota

Si desea que un usuario se registre automáticamente como miembro de un grupo, deberá:

  1. Cree el GroupProfile en GeoNode

  2. Proporcione los «grupos» o «roles» a los que pertenece el usuario a través de los metadatos «id_token» o «user_info» del propio proveedor «OIDC».

Tenga en cuenta que, en el caso de que desee beneficiarse de esta funcionalidad:

  1. Cada vez que el usuario vuelva a iniciar sesión, GeoNode reasignará automáticamente los grupos y, por lo tanto, ya no será posible asignarlos manualmente.

  2. Si necesita que un usuario sea reconocido como «administrador» de los «grupos» declarados por el proveedor, deberá enviar un reclamo «is_manager: True» en los metadatos de información del usuario.

Configuración rápida

Actualmente, GeoNode viene con dos configuraciones predefinidas que puedes usar para habilitar Google o Microsoft Azure.

Google

  1. Agregue a su .env las siguientes configuraciones

    SOCIALACCOUNT_OIDC_PROVIDER_ENABLED=True
    SOCIALACCOUNT_PROVIDER=google
    
  2. Inicie sesión en GeoNode como «administrador», vaya a la configuración de «Cuenta social», cree un nuevo proveedor «geonode_openid_connect» e inserte el

    Client ID
    Client Secret
    

MicrosoftAzure

  1. Agregue a su .env las siguientes configuraciones

    MICROSOFT_TENANT_ID=<the_tenant_id>
    SOCIALACCOUNT_OIDC_PROVIDER_ENABLED=True
    SOCIALACCOUNT_PROVIDER=azure
    
  2. Inicie sesión en GeoNode como «administrador», vaya a la configuración de «Cuenta social», cree un nuevo proveedor «geonode_openid_connect» e inserte el

    Client ID
    Client Secret
    

Configuración avanzada

En el caso de que necesite cambiar el comportamiento predeterminado de GeoNode o agregar un proveedor OIDC nuevo/personalizado, deberá actualizar la «configuración» manualmente de la siguiente manera.

SOCIALACCOUNT_PROVIDERS = {
    SOCIALACCOUNT_OIDC_PROVIDER: {
        "NAME": "Your Custom Provider",
        "SCOPE": [
            # Custom scopes comma-separated
        ],
        "AUTH_PARAMS": {
            # Custom AUTH PARAMS
        },
        "COMMON_FIELDS": {"email": "email", "last_name": "family_name", "first_name": "given_name"},  # Custom common fields mappings
        "IS_MANAGER_FIELD": "the_custom_manager_claim",  # This is optional
        "ACCOUNT_CLASS": "the_custom_account_class",
        "ACCESS_TOKEN_URL": "the_custom_token_uri",
        "AUTHORIZE_URL": "the_custom_auth_uri",
        "ID_TOKEN_ISSUER": "the_custom_uri",  # or "PROFILE_URL": "the_custom_user_info_uri"; if you specify the "ID_TOKEN_ISSUER" this will take precedence
        "OAUTH_PKCE_ENABLED": True,
    }
}

Nota

Si especifica «ID_TOKEN_ISSUER», esto tendrá prioridad al intentar obtener los metadatos de información del usuario del id_token.

Si el id_token no está disponible, intentará recurrir al uri «PROFILE_URL».

En el caso de que necesite personalizar cómo funciona el Adaptador y administra el registro de Grupos, puede inyectar una nueva clase a través de la configuración:

SOCIALACCOUNT_ADAPTER="geonode.people.adapters.GenericOpenIDConnectAdapter"  # This is the default value