Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Autenticacion con FOSRestBundleByExample

21 de mayo de 2015

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

#1

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

21 mayo 2015, 8:36
#2

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

21 mayo 2015, 9:30
#3

¡Genial que hayas encontrado la solución! En el pattern sí que puedes usar expresiones regulares.

@javiereguiluz

21 mayo 2015, 9:51
#4

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

21 mayo 2015, 10:03