Saltar al contenido

Enlaces de Ingreso

Es posible que los desarrolladores necesiten enlace a Vinyl desde fuentes externas como:

  • Otras aplicaciones
  • Mensajes de Correo
  • Portales
  • marcos flotantes

Dichos enlaces pueden dirigir al usuario a la aplicación predeterminada o a una aplicación específica. Pueden permitir al usuario elegir cómo autenticarse o iniciar el proceso de inicio de sesión con un proveedor de seguridad específico. El desarrollador puede controlar estos comportamientos construyendo los enlaces de forma adecuada.

Normalmente, al vincular a Vinyl, los desarrolladores construirán una URL al directorio raíz de Vinyl. La URL podría verse así:

https://example.com/Vinyl/

Este enlace supone que Vinyl está alojado en un directorio de Vinyl debajo del directorio raíz del sitio web. En muchos casos, Vinyl estará alojado en la raíz del sitio web.

Cuando un usuario sigue dicho enlace, Vinyl redireccionará el navegador al formulario de inicio de sesión. Sin embargo, si se ha configurado un proveedor de autenticación externo como proveedor de autenticación predeterminado, Vinyl omitirá el formulario de inicio de sesión y redirigirá el navegador al proveedor de autenticación externo.

De todos modos, una vez que el usuario haya iniciado sesión exitosamente, Vinyl determinará la aplicación predeterminada adecuada según los privilegios del usuario. Luego, Vinyl redirigirá el navegador a la página de inicio de la aplicación.

Un " enlace profundo " es una URL que apunta a una aplicación o página específica. Un ejemplo de enlace profundo podría verse así:

https://example.com/Vinyl/app/Sales/Leads

En este ejemplo, Ventas corresponde al nombre de la aplicación; Clientes potenciales, el nombre de la página. Tenga en cuenta que están codificadas en URL según RFC 3986, sección 2 (https://tools.ietf.org/html/rfc3986#section-2).

El Vinyl admite enlaces profundos. Específicamente, los desarrolladores pueden crear enlaces que apunten a una aplicación o página específica dentro de Vinyl. Al igual que con los enlaces de nivel superior que apuntan a la raíz del sitio web, Vinyl determinará automáticamente si el usuario necesita autenticarse, redirigiendo el navegador al formulario de inicio de sesión o al proveedor de autenticación externo. Una vez que el usuario haya iniciado sesión correctamente, Vinyl redireccionará el navegador a la URL del enlace profundo.

La forma más sencilla de crear un enlace profundo es navegar hasta la página de destino. La barra de direcciones del navegador contendrá una URL similar a esta:

https://example.com/Vinyl/app/Sales/Leads?$activepanel=Leads&Leads.LeadId=123456

La parte de la URL que comienza con el signo de interrogación (?) es la cadena de consultar. Vinyl utiliza la cadena de consultar para realizar un seguimiento de los paneles y filas seleccionados, filtrar y buscar criterios, etc. Elimine la cadena de consultar para construir la URL canónica de la página.

Cadena de Consulta Utilizada en la URL

Al crear la URL de la página exacta, Vinyl hace lo que necesita para mantener todo el contexto de su sesión. En general, hay diferentes componentes de una determinada página de Vinyl que pueden terminar incluidos como parte de la cadena de consultar URL. Los componentes que terminan en la URL pueden incluir: claves principales, nombre de página, nombre del panel y nombre de control.

Consejos para Acortar la URL

Hay casos en los que Vinyl genera una URL muy larga para las páginas. En esta sección brindaremos algunos consejos generales a considerar para ayudar a acortar la URL.

  • Defina sus claves primarias. Vinyl usará en la URL lo que considera PK para realizar un seguimiento de los registros seleccionados y, a veces, Vinyl usará todas o la mayoría de las columnas si se dejan implícitas en la regla. Por este motivo, asegúrese siempre de encontrar las columnas únicas reales necesarias para identificar su registro.

    • Si decide utilizar una cadena más larga como clave principal, sepa que ocupará más espacio en la URL.
  • Mantenga sus Nombres cortos para Página, Paneles y Controles. Si necesita que se muestren como valores de nombre más largos, utilice el campo Etiqueta (que no se incluirá como parte de la URL de consultar).

Además de los consejos enumerados, es posible que valga la pena que el administrador del sistema revise la configuración de IIS. IIS impone algunas limitaciones a la longitud de la URL de forma predeterminada y algunas configuraciones se pueden configurar para permitir URLs más largas. Las configuraciones para revisar incluyen:

  • maxAllowedContentLength: tamaño máximo de carga de archivos. El valor predeterminado es 30000000
  • maxUrl: longitud máxima de la URL. El valor predeterminado es 4096
  • maxQueryString: longitud máxima de la cadena de consultar de URL. El valor predeterminado es 2048

Consulte el artículo de Microsoft sobre Límites de solicitudes <requestLimits> para más información.

Advertencia

Cambiar el nombre de una aplicación o página romperá los enlaces profundos existentes.

Autenticación

Como se indicó anteriormente, Vinyl redirigirá automáticamente a los usuarios anónimos al formulario de inicio de sesión o a un proveedor de autenticación externo. En la mayoría de los escenarios, este es el comportamiento deseado. Sin embargo, puede haber situaciones que requieran que el usuario inicie sesión con un proveedor de seguridad específico. Ejemplos incluyen:

  • El enlace profundo apunta a una página que requiere una autorización específica. Por ejemplo, la página de destino puede mostrar datos recuperados de Salesforce. En cuyo caso, el usuario deberá autenticarse en Salesforce antes de acceder a la página.
  • El usuario ya se ha autenticado con un proveedor de inicio de sesión único (SSO). Por ejemplo, el usuario puede seguir un enlace dentro de un portal. Para acceder al portal, el usuario inició sesión con los Servicios de federación de Active Directory (ADFS). Suponiendo que Vinyl también esté configurado para autenticar usuarios a través de ADFS, el usuario puede omitir efectivamente el formulario de inicio de sesión al seguir el enlace.

URLs de Desafío

Para obligar a los usuarios a autenticarse con un proveedor de seguridad específico, el enlace debe construirse de tal manera que desencadene un desafío. El siguiente ejemplo demuestra un desafío para un proveedor de autenticación específico:

Para obligar a los usuarios a autenticarse con un proveedor de seguridad específico, el enlace debe construirse de tal manera que desencadene un desafío. El siguiente ejemplo demuestra un desafío para un proveedor de autenticación específico:

Nos referiremos a esto como la URL del desafío. La URL del desafío está construida con:

<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>

Dónde:

  • <vinyl-root>: esta es la URL absoluta del directorio raíz de la aplicación web Vinyl. No incluye la barra diagonal final. En este ejemplo, la raíz del Vinyl es https://example.com/Vinyl.
  • <nombre-proveedor>: este es el nombre del proveedor de seguridad tal como se define en Vinyl. En el ejemplo anterior, el nombre del proveedor es SAML. Tenga en cuenta que el nombre del proveedor debe estar codificado en URL.
  • <response-url>: esta es la URL de devolución de llamada de la aplicación web Vinyl. No es el enlace profundo. La URL de respuesta debe estar codificada como URL.

En el ejemplo anterior, decodificar la URL de respuesta produce:

https://example.com/Vinyl/auth/authenticated?returnUrl=%2Fapp%2FSales%2FLeads

La URL de respuesta se compone de:

<vinyl-root>/auth/authenticated/?returnUrl=<relative-link>

Dónde:

  • <vinyl-root>: URL absoluta de la raíz de la aplicación web Vinyl. Véase más arriba.
  • <enlace-relativo>: esta es la parte relativa a la raíz de la aplicación web Vinyl del enlace profundo. Está codificado en URL.

En el ejemplo anterior, el enlace relativo es:

%2Fapp%2FSales%2FLeads

Decodificar el enlace relativo nos da:

/app/Sales/Leads

Como se indicó anteriormente, esto es relativo al directorio raíz de la aplicación web Vinyl (es decir, Vinyl-root).

Construyendo una URL de Desafío

Para construir una URL de desafío, debemos revertir el proceso.

Paso 1) Comience con el enlace profundo y elimine la raíz de Vinyl para obtener un enlace relativo. Debería comenzar con /aplicación. La URL codificó el enlace relativo.

Paso 2) Construya la URL de respuesta desde:

<vinyl-root>/auth/authenticated/?returnUrl=<relative-link>

URL codifica la URL de respuesta.

Paso 3) Construya la URL del desafío a partir de:

<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>

Violín para Generar la URL del Desafío

El siguiente JSFiddle se puede utilizar para generar una URL de desafío:

https://jsfiddle.net/8s8gkufh/1/

HTML

Link:<br>
<input data-bind="value: link"><br>
Provider<br>
<input data-bind="value: provider"><br>
Challenge URL:
<input data-bind="value: challenge" readonly>

JavaScript

function ViewModel() {
  this.link = ko.observable("http://example.com/Vinyl/app/Northwind");
  this.provider = ko.observable("SAML");

  var startOfRelativeLink = ko.computed(function() {
    return this.link().indexOf("/app");
  }, this);

  var root = ko.computed(function() {
    return this.link().substr(0, startOfRelativeLink());
  }, this);

  var relativeLink = ko.computed(function() {
    return this.link().substr(startOfRelativeLink());
  }, this);

  var response = ko.computed(function() {
    return root() + "/auth/authenticated?returnUrl=" + encodeURIComponent(relativeLink());
  }, this);

  this.challenge = ko.computed(function() {
    return root() + "/service/authentication/external?provider=" + encodeURIComponent(this.provider()) + "&returnUrl=" + encodeURIComponent(response());
  }, this);
}

ko.applyBindings(new ViewModel());