Cómo manejar el error auth0 403 sin agregar código específico en todas partes (Retrofit / okhttp / RxAndroid)

Estoy usando Auth0, que me da un JWT (json web token) y un código de actualización. Utilizo este JWT en los encabezados http para comunicarme con mi backend.

Puede suceder que el servidor me dé un403, cuando decide que el JWT ha expirado. En este caso, puedo pedirle a Auth0 que me emita un nuevo JWT, utilizando el código de actualización. Significa que llamo al backend Auth0, le paso el código de actualización y me da un nuevo JWT, que luego puedo usar en mis solicitudes.

Mi pregunta es, ¿cómo puedo escribir eficientemente este comportamiento en todo mi código de red? Tendré un par de puntos finales con los que hablar, y todos podrían devolver el 403.

Creo que primero debería hacer un interceptor que agregue el JWT a todas las solicitudes.

Entonces debería haber un comportamiento que detecte el 403, silenciosamente hace una llamada de red a Auth0, recuperando el nuevo JWT. Luego, la solicitud original debe intentarse nuevamente, con el nuevo JWT en sus encabezados.

Por lo tanto, preferiría que este 403 se maneje en algún lugar invisible para mi otro código, y definitivamente no tenga que reescribirlo en todas partes.

Cualquier sugerencia sobre cómo lograr esto será apreciada.

-

Para ser claros, básicamente estoy buscando punteros sobre cómo lograr esto usando RxAndroid Observables. Cuando un determinado Observable encuentra el 403, debe "inyectar" una nueva llamada de red.

Respuestas a la pregunta(2)

Su respuesta a la pregunta