Hola. Estuve probando FOSRestBundleByExample y hay una parte de la autenticación que no entiendo.
Usando el nombre de usuario, el password y el salt, he generado un token, este:
{ "X-WSSE": "UsernameToken Username=\"admin\", PasswordDigest=\"Wxn1WmPFn2b7zkKwr3K7YKHvqNw=\", Nonce=\"MDdmYTY5ZjFiM2UzYzg1ZA==\", Created=\"2015-05-21T00:15:55-05:00\"" }
Luego, para obtener una lista de usuarios, hago un set en la cabecera:
X-wsse: UsernameToken Username="admin", PasswordDigest="Wxn1WmPFn2b7zkKwr3K7YKHvqNw=", Nonce="MDdmYTY5ZjFiM2UzYzg1ZA==", Created="2015-05-21T00:15:55-05:00" Authorization: WSSE profile="UsernameToken" Accept: application/json
Supuestamente, este me permitiría acceder a las otras funciones de la API marcadas como seguras. He usado POSTMAN. Pero en el momento que intento obtener la lista de usuarios con un get y hago un set en las cabeceras de la petición, me retorna un error 401
. ¿Qué estoy haciendo mal?
Respuestas
Veo que has hecho esta misma pregunta en este issue del repositorio oficial del proyecto FOSRestBundleByExample. Creo que es una buena idea preguntar al propio responsable del proyecto a ver si nos puede explicar qué está pasando.
Por si te sirve, en este otro issue del repositorio laguien comenta un problema similar y aporta una solución que le funcionó a el.
@javiereguiluz
Sí, hice lo mismo, pero no me dio resultado, ahora el proyecto carga una página en blanco. Probé a añadirle el pattern: ^/api/.*
pero ahora me impide el acceso a todo el proyecto. ¿Cómo se excluyen rutas en el pattern? Sospecho que la respuesta está allí
EDITO: Ya di con la solución
Al parecer, el error está en:
wsse_secured: pattern: (.*)/(role)(.*)
Como referenciaste. Solo se está asegurando todas las rutas que tengan role como componente. Lo cambié a users
y ahora puedo hacer las consultas con normalidad. Ahora mi pregunta es: ¿cómo incluyo y excluyo rutas en el pattern
? ¿Son expresiones regulares?
@SakyaStelios
¡Genial que hayas encontrado la solución! En el pattern
sí que puedes usar expresiones regulares.
@javiereguiluz
Me ayudó mucho la issue que referenciaste.
Al final el pattern ha quedado así:
^/api/v1/((?!tokens))
He asegurado todo menos de donde se obtienen los tokens
@SakyaStelios