Mi objetivo es asegurar mi API sin estado y solo permitir que los clientes registrados (SPA) consuman mis recursos. No habrá clientes de terceros en mi escenario.
Sé que la autorización Oauth 2 con tipo de concesión implícita se recomienda para clientes públicos (en mi situación, un SPA). He leído muchas cosas sobre eso, pero no pude entender algunos puntos, así que le pido su ayuda:
-
¿Crees que Oauth 2 con un tipo de concesión implícita es la mejor manera de lograr esto? Sé que el tipo de concesión de credenciales de contraseña no es seguro para las SPA, ya que no pueden mantener la confidencialidad de un secreto de cliente. Entonces, ¿debo ir con Oauth 2 con el tipo de concesión implícita?
-
En Oauth 2, puedo usar el tipo de concesión implícita con aprobación automática, por lo que ya no es necesario obtener el consentimiento de los usuarios. Pero al pensar en mi SPA como una aplicación de primera mano, no quiero que ningún usuario redirija a ninguna parte para iniciar sesión y volver a la página de SPA.
¿Crees que es seguro y sensato habilitar la autenticación básica http para mi API, por lo que mi primera aplicación podría obtener las credenciales de los usuarios y agregarlas al encabezado de autorización y enviarlas a mi servidor de Autorización a través del canal SSL / TLS para autenticar y obtener el token de acceso?
Si no es apropiado, ¿qué recomienda para lograr este objetivo?
-
También quiero que los usuarios no autenticados consuman algunos recursos en mi SPA; Debería hacer públicos esos recursos para cualquier cliente y cualquier usuario (en realidad no lo prefiero) o esperar que SPA se autentique y autorice con un usuario anónimo ficticio para obtener un token de acceso con privilegios anónimos para consumir recursos de API públicos.
-
Para un sitio web similar a Wikipedia, ¿cuánto tiempo debe tardar en caducar un token de acceso?
-
Cuando caduque, ¿qué método debo seguir? No hay token de actualización en el tipo de concesión implícita OAuth 2. ¿Debo pedir a los usuarios que ingresen sus credenciales nuevamente (esto no es fácil de usar) o almacenar sus credenciales en un almacenamiento y enviarlas a un servidor de autorización en silencio para obtener un nuevo token de acceso?