Eso es algo que encontré en un par de artículos sobre OAuth 2: cuando se trata de persistir tokens de actualización en la base de datos, algunos autores prefieren almacenar el token de acceso, o al menos mencionarlo como algo que debería hacer. Y cuando se trata de otorgar acceso basado en refresh_token
, un ticket se recoge de la base de datos, se deserializa, se actualiza y se envía al usuario con un nuevo token de actualización.
Aquí hay un ejemplo de la tabla RefreshTokens
, donde la columna ProtectedTicket
se mantiene serializada access_tokens
emitida al usuario:
Hasta ahora puedo pensar en al menos 3 razones en contra de este enfoque:
-
¿No es una amenaza para la seguridad cuando mantiene los tickets de acceso del usuario, solo espera que alguien los capture y los reutiliza para un servidor de recursos no sospechoso? El hash unidireccional no se puede utilizar, ya que necesitamos deserializar, actualizar y enviarlo al usuario, y no queremos mantener tokens de acceso válidos también.
-
Por ejemplo, desea actualizar la clave de cifrado utilizada para serializar / deserializar su boleto de vez en cuando, por si acaso. Si no desea que sus usuarios se desconecten una vez que caduque su
access_token
, debe preocuparse por actualizar esos tickets persistentes. -
Tienes que escribir un trozo de código dependiendo de lo preocupado que estés por # 1 y # 2 . Tal vez incluso implementes algunos hacks sucios a tu alrededor del marco OAuth, ya que podría no proporcionar puntos de extensibilidad que necesitarás.
Entonces, la pregunta es, ¿por qué quieres hacer todo eso? ¿Qué tipo de ventaja debería dar para que realmente valga la pena? ¿No es más fácil , más seguro y más mantenible solo para crear un nuevo boleto una vez que hayas verificado refresh_token
?