How to Set Up Two-Factor Authentication in ownCloud Infinite Scale
To require two-factor authentication (2FA) for ownCloud Infinite Scale sign-ins, configure it in the OpenID Connect identity provider (IDP) that authenticates your users. For many deployments, that means enabling time-based one-time passwords (TOTP) in Keycloak, then requiring users to enroll before they can finish signing in. Infinite Scale does not provide a general-purpose TOTP enrollment screen of its own. Its built-in IDP is minimal; ownCloud recommends using an external OpenID Connect provider for broader identity needs, and its documentation points to Keycloak for 2FA.
Hypothetical example: Northstar Design is a fictional 40-person company with ownCloud Infinite Scale already connected to a Keycloak realm named files. Staff currently sign in with a password. The administrator wants them to enroll an authenticator app and use a code when they next authenticate. This example is illustrative, not a report of a real installation or test. The steps below assume Keycloak is already the IDP used by Infinite Scale; if it is not, first follow the official deployment guidance for connecting the two services.
The interface images in this guide are conceptual examples, not screenshots from a live Northstar or ownCloud system. Menu wording and layout may differ across Keycloak versions. The instructions were checked against the ownCloud Infinite Scale 8.2 documentation and Keycloak Server Administration Guide 26.8 on October 6, 2026.
For this fictional setup, Infinite Scale sends users to the configured Keycloak issuer; the exact OIDC settings depend on the existing deployment.
What 2FA changes in an Infinite Scale deployment
OpenID Connect (OIDC) is the sign-in protocol that lets Infinite Scale rely on an IDP rather than authenticate each password itself. Keycloak asks for the primary credential and, when its authentication flow requires it, a second factor such as TOTP. Infinite Scale then receives the resulting OIDC authentication. A TOTP is a short-lived code generated from a shared secret and the current time; an authenticator app stores the secret when a user scans the enrollment QR code.
That separation matters. Setting an OTP policy in Keycloak changes how Keycloak authenticates users. Setting an ownCloud MFA option does not enroll a phone or create a TOTP credential. In particular, the ownCloud OCIS_MFA_ENABLED option is for step-up authentication on specific protected routes when the IDP supports the OpenID Connect Authentication Context Class Reference (ACR) claim. It is not a switch that adds a universal TOTP prompt to every login.
Before changing the realm
Confirm which IDP and realm the production Infinite Scale clients actually use. Compare the OIDC issuer and client IDs with the deployment configuration rather than guessing from the browser address bar.
Have an administrator account for the correct Keycloak realm, a supported authenticator app for each user, and a recovery process for users who lose a device.
Check that the Keycloak login page and Infinite Scale are available over HTTPS with valid certificates. Keep an existing administrator session open while making authentication changes, and test with a non-administrator account first.
Inventory all sign-in paths. The browser flow controls browser-based OIDC authentication; API credentials, service accounts, app passwords, or other authentication flows may be governed separately.
1. Confirm that Infinite Scale uses Keycloak
In the Northstar example, the administrator confirms that the web client is already redirected to the files realm at https://login.example.test/realms/files. The ownCloud deployment example uses settings such as OCIS_OIDC_ISSUER, WEB_OIDC_CLIENT_ID, and, in its Keycloak setup, PROXY_OIDC_REWRITE_WELLKNOWN. These are deployment configuration values, not fields that ordinary users change in the Infinite Scale web interface.
If your instance still uses the embedded IDP, plan the Keycloak integration separately before enforcing OTP. Connecting an external IDP involves more than entering an issuer URL: client registration, redirect and web-origin configuration, token claims, HTTPS, and the desktop or mobile clients in use all need to agree. Use ownCloud's maintained Keycloak deployment example as a starting point for your exact version and topology.
2. Select a time-based OTP policy in Keycloak
Open the files realm in Keycloak Admin Console and go to Authentication, then Policy, then OTP Policy. Choose a time-based policy (TOTP) for authenticator apps. Keycloak also supports counter-based HOTP, but TOTP is the usual fit for phone authenticator apps because codes change with time.
Review the policy before rollout. Keycloak exposes settings such as the hash algorithm, code length, clock-drift window, token period, and whether a code can be reused. Start with values supported by the authenticators your users have. A larger clock window can help with clock drift, but it also extends the interval in which a code may be accepted. Keep the server clock synchronized and avoid widening that window as a substitute for fixing time synchronization.
Choose a time-based OTP policy in the realm so users can enroll compatible authenticator apps.
3. Require OTP enrollment for new users
En Autenticación > Acciones requeridas , asegúrese de que la opción Configurar OTP esté habilitada y márquela como acción predeterminada. La documentación de Keycloak indica que se aplica una acción requerida predeterminada cuando un nuevo usuario inicia sesión por primera vez. Esto crea un requisito de registro; el usuario aún debe completar la configuración antes de que exista una credencial TOTP.
Verifique también el flujo de autenticación del navegador. En el flujo estándar de Keycloak, el subflujo de autenticación de dos factores condicional solicita la contraseña de un solo uso (OTP) cuando el usuario tiene configurada una credencial OTP. Si los usuarios no necesitan configurar la OTP, pueden continuar sin que se les solicite el segundo factor. Mantenga el paso habitual de contraseña o primer factor y pruebe el flujo cuidadosamente antes de vincular un flujo personalizado. Los cambios en el flujo de autenticación afectan a todo el dominio y pueden bloquear el acceso de los administradores si están mal configurados.
Marcar la opción "Configurar OTP" como acción obligatoria por defecto para que las cuentas recién creadas tengan que registrarse al iniciar sesión por primera vez.
4. Añadir el requisito de inscripción a los usuarios existentes.
Una acción predeterminada no es retroactiva para las cuentas ya existentes. Para el personal actual de Northstar, el administrador abre cada usuario en el dominio de Keycloak y agrega la opción " Configurar OTP" en las acciones requeridas para ese usuario, y luego guarda el cambio. Keycloak también documenta una opción en la pestaña "Credenciales" del usuario para enviar un correo electrónico de restablecimiento de credenciales que lo redirige a la configuración de OTP. Elija el método que mejor se adapte a su proceso de administración de cuentas y verifique que los usuarios puedan recibir el correo electrónico si lo utiliza.
Para un directorio grande, planifique un proceso masivo controlado utilizando una interfaz administrativa de Keycloak compatible o automatización. No dé por sentado que al habilitar la acción predeterminada se registraron todos los usuarios. Cree un usuario de prueba e inspeccione el comportamiento esperado al iniciar sesión por primera vez antes de aplicar la política de forma generalizada.
Para una cuenta existente, asigne la acción "Configurar OTP" como acción de usuario obligatoria y guarde el cambio de cuenta.
5. Haga que cada usuario registre un autenticador.
Cuando Alex, un empleado ficticio de Northstar, inicia sesión en ownCloud y es redirigido a Keycloak, este le pide que configure la contraseña de un solo uso (OTP). Alex abre una aplicación de autenticación, escanea el código QR que muestra Keycloak e introduce el código actual de la aplicación para confirmar la inscripción. El código QR contiene la clave secreta TOTP, por lo que los usuarios deben tratarlo como una credencial: no lo envíen a un administrador por correo electrónico, no lo guarden en un ticket compartido ni lo escaneen en un dispositivo no confiable.
Si la aplicación no puede escanear el código, la página de configuración de Keycloak podría ofrecer la clave subyacente como una opción para ingresar manualmente. Los usuarios deben almacenar esa clave únicamente en el autenticador. Deben completar el paso de verificación antes de cerrar la página de configuración. Un código que no supera la validación puede estar desactualizado, mal escrito o generado por una aplicación con la hora del dispositivo incorrecta.
La página de registro de Keycloak muestra un código QR y solicita al usuario que introduzca un código del autenticador; la imagen es un ejemplo conceptual de la interfaz de usuario.Una aplicación de autenticación genera un código variable para la cuenta; los dígitos que se muestran son solo un ejemplo, no una credencial utilizable.
6. Prepare la recuperación antes de hacer cumplir la política.
Los usuarios necesitan una forma de recuperar el acceso si pierden, reemplazan o borran su teléfono. Keycloak 26.8 documenta los Códigos de Autenticación de Recuperación como una credencial adicional que se puede habilitar y agregar como alternativa en el flujo del navegador. Si su versión de Keycloak y su dominio utilizan esta función, habilítela y pruébela con cuidado. Los usuarios deben almacenar los códigos de recuperación en un gestor de contraseñas aprobado u otra ubicación protegida sin conexión, y tratar cada código como información confidencial. No los almacene en la misma aplicación del teléfono que contiene el secreto TOTP.
Si los códigos de recuperación no están habilitados en su dominio, documente un procedimiento de recuperación dirigido por un administrador. Exija la verificación de identidad antes de restablecer o eliminar una credencial OTP. Mantenga una cuenta de administrador de emergencia bajo un proceso separado y estrictamente controlado para que un problema de registro de usuarios no provoque un bloqueo en todo el dominio.
Cuando se habiliten los códigos de recuperación para el dominio, deberán guardarse en un lugar protegido antes de que el usuario finalice el registro.
7. Prueba el proceso completo de inicio de sesión en ownCloud.
Tras la inscripción, cierre sesión en la cuenta de prueba e inicie sesión de nuevo en la dirección habitual de Infinite Scale. Confirme que el navegador accede al dominio de Keycloak esperado, acepta la contraseña de la cuenta, solicita el código basado en tiempo y redirige al usuario a ownCloud tras la autenticación correcta. A continuación, pruebe los clientes de escritorio y móviles compatibles, los enlaces compartidos y cualquier herramienta operativa que dependa del mismo proveedor de identidad.
Una prueba exitosa en el navegador no demuestra que todos los clientes o protocolos utilicen el mismo flujo. El flujo del navegador de Keycloak puede no cubrir un flujo de concesión directa independiente, y una sesión de inicio de sesión único (SSO) de Keycloak existente puede satisfacer un inicio de sesión posterior en ownCloud sin mostrar otra solicitud de OTP. Esto es una reutilización de sesión esperada, no una prueba de que el factor esté dañado. Si la política requiere un nuevo factor con mayor frecuencia, revise la configuración de SSO y el nivel de autenticación de Keycloak como parte de una política de sesión específica.
La ruta esperada del navegador solicita un código de un solo uso al proveedor de identidad y luego regresa a la interfaz de archivos en la nube; este es un ejemplo de flujo, no un resultado de prueba.
Opcional: requerir autenticación multifactor reforzada solo para rutas protegidas.
Algunas implementaciones requieren un segundo factor solo cuando los usuarios acceden a recursos confidenciales. Infinite Scale admite la autenticación reforzada a nivel de ruta mediante declaraciones ACR de OIDC. En la documentación de la versión 8.2, OCIS_MFA_ENABLEDse habilita la aplicación y OCIS_MFA_AUTH_LEVEL_NAMESse especifica el nivel ACR que indica la MFA. El IDP debe admitir la autenticación reforzada y emitir el valor ACR correspondiente en el token. Keycloak cuenta con configuración de nivel de autenticación y ACR para este patrón, pero su flujo, nivel solicitado y asignación de tokens deben coincidir con el valor configurado en Infinite Scale.
Este ejemplo es solo un punto de partida: úselo advancedúnicamente si Keycloak está configurado para devolver ese valor ACR después del factor requerido. Si se solicita una ruta protegida sin el nivel necesario, Infinite Scale puede denegar el acceso y devolver una respuesta 403 con un X-OCIS-MFA-Requiredencabezado. El nivel de ruta es diferente a requerir TOTP durante cada nueva autenticación del navegador Keycloak.
Problemas comunes y soluciones
Síntoma
Qué comprobar
No aparece ninguna solicitud de OTP.
Confirme que la cuenta haya completado el registro de OTP, que el flujo del navegador invoque el paso de OTP para los usuarios configurados y que una sesión SSO preexistente no esté reutilizando la autenticación.
No se le pide a un nuevo usuario que se registre.
Confirmar que la configuración de OTP esté habilitada y marcada como acción predeterminada en el dominio correcto. Las acciones predeterminadas se aplican a los usuarios nuevos; las cuentas existentes requieren que se les asigne una acción obligatoria.
El código es rechazado
Confirme que el usuario seleccionó TOTP, no HOTP, y verifique la hora del dispositivo y del servidor. Pídale al usuario que espere al siguiente intervalo de código e ingrese el nuevo código.
El inicio de sesión en ordenadores de escritorio, dispositivos móviles o sistemas automatizados falla.
Verifique qué flujo de autenticación OIDC u otro utiliza el cliente. Pruebe cada cliente compatible y asegúrese de que el cambio no dependa de un flujo exclusivo del navegador para un inicio de sesión que no sea a través del navegador.
Los usuarios quedan bloqueados después de cambiar el flujo.
Utilice el proceso de recuperación de administrador documentado y la cuenta de emergencia protegida. Revise el último cambio de flujo del dominio antes de modificar nuevamente el flujo predeterminado.