Publicado originalmente por Sarah-Beth Bianchi (8 de diciembre de 2014)
¿Cómo determino la URL de confianza de mi aplicación?
La URL de confianza es simplemente una URL de su infraestructura que utilizará para recibir pares de ID de usuario\Clave. El parámetro x_target que se anexa a las llamadas a la API debe coincidir con este valor para que la autenticación continúe. Debe tener una buena idea de dónde estará este punto de conexión en el momento de registrar la aplicación, ya que la URL de confianza es un campo obligatorio en el formulario de solicitud de registro de la aplicación.
El campo URL de confianza se puede editar desde el archivo Administrar la extensibilidad para cualquier aplicación de dominio limitado existente.
Nota: Las aplicaciones universales deben ser editadas en D2L Keytool por un administrador de D2L Keytool.
Si el valor de la URL de confianza cambia, o si no sabes cuál será en el momento de registrar tu aplicación, puedes poner un valor de marcador de posición (por ejemplo, https://apitesttool.desire2learnvalence.com/index.php) en su lugar y, a continuación, volver atrás y editar este valor en la herramienta Administrar extensibilidad.
¿Por qué recibo el error "El valor 'x_target' de la solicitud no coincide con los valores permitidos para esta aplicación. Póngase en contacto con su administrador"?
Este mensaje de error indica que la aplicación está intentando enviar tokens de autenticación a una ubicación que no coincide con la especificada en la URL de confianza. Para resolver este problema, deberá actualizar el valor de URL de confianza de la aplicación. Si es necesario, puede crear varias aplicaciones, cada una con su propio valor de URL de confianza.
¿Cómo actualizo mi URL de confianza?
Puede actualizar fácilmente el valor de la URL de confianza editando el registro de la aplicación dentro de la herramienta Administrar extensibilidad:
- Busca tu aplicación en la carpeta Administrar la extensibilidad Lista.
- Haga clic en el nombre de la aplicación para mostrar la pantalla de detalles de la aplicación.
- Clic Editar.
- Cambie el URL de confianza y haga clic en Actualizar.
Figura: Puede cambiar el URL de confianza para tu app en el campo Editar registro de aplicación página.
¿Es necesario que la URL de confianza sea la ubicación completa que recibe las credenciales del usuario o es suficiente el dominio?
TrustedUrl debe ser la URL completa.
Y realmente nos referimos a la URL completa; la cadena de consulta, el fragmento, todo. Si necesita mantener el estado antes y después del inicio de sesión (que suele ser el caso), deberá establecer una cookie en el navegador del usuario antes de enviarlo a iniciar sesión con D2L.
¿Por qué la URL de confianza no es por dominio (o prefijo, etc.)?
La razón de esto es sutil. Usemos un ejemplo: la URL https://mysite.com/randomOtherFeature?returnUrl=<...>. Debido a que ese dominio tiene una redirección abierta (es decir, una URL que toma otra URL como parte de la consulta y envía al usuario a ella con un 302, etc.), esto permite a un atacante establecer el x_target en https://mysite.com/randomOtherFeature?returnUrl=http://evil.com/foo.</...>
Cuando Brightspace redirige al usuario a "mysite" después de iniciar sesión, los enviaría a https://mysite.com/randomOtherFeature?returnUrl=http://evil.com/foo&x_a=&x_b= que luego redirigiría al usuario a . Los navegadores a menudo establecen un encabezado de referencia, que es la dirección de la página que los envió. En este caso, ese encabezado tiene el ID de usuario\Key, por lo que los obtiene del encabezado Referer.
En la práctica, los redirectores abiertos son muy comunes. Tomamos la decisión de ser muy estrictos aquí.
¿La URL de confianza solo es necesaria para obtener el par de clave de usuario e ID de contexto de usuario?
TrustedUrl solo es relevante para el proceso de inicio de sesión. Es lo que envíes en el x_target a Brightspace. Por ejemplo, en el ejemplo de C#, el valor de returnUrl aquí:
https://github.com/Brightspace/valence-sdk-dotnet/blob/master/samples/Basic/Basic/Controllers/HomeController.cs#L63