Enlaces de Entrada
Es posible que los desarrolladores necesiten enlace a App Builder de fuentes externas como:
- Otras aplicaciones
- Mensajes de Correo
- Portales
- iframes
Estos enlaces pueden dirigir al usuario a la aplicación predeterminada o a una aplicación específica. Pueden permitirle 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.
Enlaces de Nivel Superior
Normalmente, al vincularse a App Builder, los desarrolladores construirán una URL para el App Builder directorio raíz. La URL podría ser algo como esto:
https://example.com/App Builder/
Este enlace asume que App Builder está alojado en an App Builder directorio debajo del directorio raíz del sitio web. En muchos casos, App Builder se alojará en la raíz del sitio web.
Cuando un usuario sigue dicho enlace, App Builder 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, App Builder 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 correctamente, App Builder determinará la aplicación predeterminada adecuada en función de los privilegios del usuario. App Builder luego redireccionará el navegador a la página de inicio de la aplicación.
Enlaces Profundos
Un " enlace profundo" es una URL que apunta a una aplicación o página específica. Un ejemplo de un enlace profundo podría ser algo como esto:
https://example.com/App Builder/app/Sales/Leads
En este ejemplo, Sales corresponde al nombre de la aplicación; Leads, al nombre de la página. Tenga en cuenta que estos campos están codificados en URL según RFC 3986, sección 2 (https://tools.ietf.org/html/rfc3986#section-2).
App Builder admite enlaces profundos. En concreto, los desarrolladores pueden crear enlaces que apunten a una aplicación o página específica dentro de App Builder al igual que con los enlaces de nivel superior que apuntan a la raíz del sitio web, App Builder 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, App Builder redirigirá el navegador a la URL del enlace profundo.
La forma más sencilla de crear un enlace profundo es navegar a la página de destino. La barra de direcciones del navegador contendrá una URL similar a esta:
https://example.com/App Builder/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. App Builder utiliza la cadena de consultar para rastrear paneles y filas seleccionados, filtrar y buscar criterios, etc. Elimina 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 exacta de la página, App Builder hace lo que necesita para mantener todo el contexto de su sesión. En general, hay diferentes componentes de un determinado App Builder página que puede terminar incluida como parte de la cadena de consultar URL. Los componentes que terminan en la URL pueden incluir: claves principales, nombre de página, nombre de panel y nombre de control.
Consejos para Acortar URL
Hay casos en los que App Builder genera una URL muy larga para las páginas. En esta sección, brindaremos algunos consejos generales a tener en cuenta para ayudar a acortar la URL.
-
Define tus claves primarias. App Builder utilizará en la URL lo que ve como claves principales para realizar un seguimiento de los registros seleccionados y, a veces, App Builder utilizará todas o la mayoría de las columnas si se deja implícito en la regla. Por este motivo, asegúrese siempre de encontrar las columnas únicas reales que necesita para identificar su registro.
- Si decide utilizar una cadena más larga como clave principal, tenga en cuenta que ocupará más espacio en la URL.
-
Mantenga los Nombres breves para las páginas, los paneles y los 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 mencionados, puede que valga la pena que su administrador de sistema revise la configuración de IIS. IIS impone algunas limitaciones a la longitud de las URL de forma predeterminada, y algunas configuraciones se pueden configurar para permitir URLs más largas. Las configuraciones que debe revisar incluyen:
- maxAllowedContentLength: tamaño máximo de carga de archivos. El valor predeterminado es 30000000
- maxUrl - Longitud máxima de 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 señaló anteriormente, App Builder 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 casos, 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. Algunos 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 ese 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 Active Directory Federation Services (ADFS). Suponiendo App Builder 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 active un desafío. El siguiente ejemplo muestra 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 active un desafío. El siguiente ejemplo muestra un desafío para un proveedor de autenticación específico:
A esto lo llamaremos URL del desafío. La URL del desafío está formada por:
<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>
Dónde:
- <vinyl-root> - Esta es la URL absoluta al App Builder directorio raíz de la aplicación web. No incluye la barra diagonal final. En este ejemplo, la raíz del Vinyl es https://example.com/App Builder.
- <provider-name> - Este es el nombre del proveedor de seguridad tal como se define en App Builder 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 App Builder URL de devolución de llamada de la aplicación web. No es el enlace profundo. La URL de respuesta debe estar codificada como URL.
En el ejemplo anterior, la decodificación de la URL de respuesta produce lo siguiente:
https://example.com/App Builder/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 del App Builder raíz de la aplicación web. Ver arriba.
- <relative-link> - Este es el App Builder parte del enlace profundo relativa a la raíz de la aplicación web. Está codificada en URL.
En el ejemplo anterior, el enlace relativo es:
%2Fapp%2FSales%2FLeads
La decodificación del vínculo relativo nos da:
/app/Sales/Leads
Como se señaló anteriormente, esto es relativo a la App Builder directorio raíz de la aplicación web (es decir, Vinyl-root).
Construyendo una URL de Desafío
Para construir una URL de desafío, necesitamos invertir el proceso.
Paso 1) Comience con el enlace profundo y elimine la raíz de Vinyl para obtener el enlace relativo. Debe comenzar con /app. URL codificada del enlace relativo.
Paso 2) Construya la URL de respuesta a partir de:
<vinyl-root>/auth/authenticated/?returnUrl=<relative-link>
URL codificada respuesta-url.
Paso 3) Construya la URL del desafío a partir de:
<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>
Fiddle para Generar la URL del Desafío
Se puede utilizar el siguiente JSFiddle 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/App Builder/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());