authentication cookies couchdb

authentication - ¿La cookie CouchDB tiene un tiempo de caducidad decreciente?



cookies (1)

Para un navegador, el período de 10 minutos (configurable) es una ventana deslizante. Cada vez que CouchDB responda a una solicitud, actualizará la cookie a un nuevo valor, refrescando efectivamente el inicio de sesión.

Para un cliente, debe recordar restablecer el valor de la cookie cuando vea un encabezado Set-Cookie (o pasarlo a su propio cliente en su caso).

Por ejemplo, tengo un tiempo de espera corto (30 segundos):

$ curl http://admin:admin@localhost:5984/_config/couch_httpd_auth/timeout "30"

A continuación, haré lo siguiente:

  1. Iniciar sesión
  2. Espera un momento
  3. Verifique mi sesión con la cookie, antes del tiempo de espera
  4. Espera el tiempo de espera
  5. Comprueba mi sesión con la cookie nuevamente, después del tiempo de espera
  6. (Rápidamente) verifique mi sesión con la nueva cookie CouchDB establecida en el paso 3

Tenga en cuenta que la primera confirmación tiene {"name":"me"} (estoy conectado); el segundo tiene {"name":null} (estoy desconectado); pero el tercero tiene {"name":"me"} otra vez (todavía estoy conectado debido al uso de la cookie actualizada).

$ curl -X POST -i localhost:5984/_session -d name=me -d password=secret HTTP/1.1 200 OK Set-Cookie: AuthSession=bWU6NEY5QjQ3QTA6Ao6zetUZUxkno37ULd2qdRRjmsc; Version=1; Path=/; HttpOnly Server: CouchDB/1.2.0 (Erlang OTP/R15B) Date: Sat, 28 Apr 2012 01:28:00 GMT Content-Type: text/plain; charset=utf-8 Content-Length: 35 Cache-Control: must-revalidate {"ok":true,"name":"me","roles":[]} $ sleep 20 $ curl -i localhost:5984/_session -H Cookie:AuthSession=bWU6NEY5QjQ3QTA6Ao6zetUZUxkno37ULd2qdRRjmsc HTTP/1.1 200 OK Set-Cookie: AuthSession=bWU6NEY5QjQ3QkM6WonDdsAdO8p7QUlLWCZQXVAfcvU; Version=1; Path=/; HttpOnly Server: CouchDB/1.2.0 (Erlang OTP/R15B) Date: Sat, 28 Apr 2012 01:28:28 GMT Content-Type: text/plain; charset=utf-8 Content-Length: 165 Cache-Control: must-revalidate {"ok":true,"userCtx":{"name":"me","roles":[]},"info":{"authentication_db":"_users","authentication_handlers":["oauth","cookie","default"],"authenticated":"cookie"}} $ sleep 10 $ curl -i localhost:5984/_session -H Cookie:AuthSession=bWU6NEY5QjQ3QTA6Ao6zetUZUxkno37ULd2qdRRjmsc HTTP/1.1 200 OK Server: CouchDB/1.2.0 (Erlang OTP/R15B) Date: Sat, 28 Apr 2012 01:28:43 GMT Content-Type: text/plain; charset=utf-8 Content-Length: 140 Cache-Control: must-revalidate {"ok":true,"userCtx":{"name":null,"roles":[]},"info":{"authentication_db":"_users","authentication_handlers":["oauth","cookie","default"]}} $ curl -i localhost:5984/_session -H Cookie:AuthSession=bWU6NEY5QjQ3QkM6WonDdsAdO8p7QUlLWCZQXVAfcvU HTTP/1.1 200 OK Set-Cookie: AuthSession=bWU6NEY5QjQ3RDA69pqrNVd-ClZ7_v4SkcghdZRRhCs; Version=1; Path=/; HttpOnly Server: CouchDB/1.2.0 (Erlang OTP/R15B) Date: Sat, 28 Apr 2012 01:28:48 GMT Content-Type: text/plain; charset=utf-8 Content-Length: 165 Cache-Control: must-revalidate {"ok":true,"userCtx":{"name":"me","roles":[]},"info":{"authentication_db":"_users","authentication_handlers":["oauth","cookie","default"],"authenticated":"cookie"}}

En CouchDB 1.2.0 y posterior, puede configurar _config/couch_httpd_auth/allow_persistent_cookies en "true" y hace que las cosas sean más fáciles de ver. La cookie tendrá una bandera obvia de "Vencimiento" que puede ver siempre configurada en la hora actual más su valor de tiempo de espera.

Estoy planeando utilizar la autenticación de cookies integrada de CouchDB para mi aplicación (tenga en cuenta que esto no es una CouchApp, estoy usando un servidor web entre mi cliente y db).

Entonces, cuando un usuario primero inicia sesión con sus credenciales:

  • Las credenciales se envían a CouchDB desde el cliente web a través del servidor web
  • CouchDB autentica las credenciales y devuelve un encabezado Set-Cookie
  • Este encabezado se envía al cliente web y significa que todas las solicitudes posteriores de operaciones de la base de datos pasan simplemente el encabezado Cookie a CouchDB a través del servidor web.

Mientras que he podido determinar eso:

Puedes seguir usando el token [la cookie] durante 10 minutos por defecto. Después de 10 minutos, necesita autenticar nuevamente a su usuario. La duración del token se puede configurar con la configuración de tiempo de espera (en segundos) en la sección de configuración couch_httpd_auth.

No me queda claro si este período de 10 minutos es (o puede configurarse para ser) una ventana deslizante.

Con esto quiero decir; si el usuario continúa utilizando la aplicación durante los 10 minutos completos (enviando la cookie junto con cada solicitud), la cookie se volverá a configurar automáticamente (de forma similar a las cookies FormsAuthentication en .NET ) hasta un período de actividad ¿durante 10 minutos?

Referencias utilizadas