Ir para o conteúdo

Links de Entrada

Os desenvolvedores podem precisar vincular a App Builder de fontes externas, tais como:

  • Outras aplicações
  • Mensagens Email
  • Portais
  • iframes

Esses links podem direcionar o usuário para o aplicativo padrão ou para um aplicativo específico. Eles podem permitir que o usuário escolha como autenticar ou iniciar o processo de login com um provedor de segurança específico. O desenvolvedor pode controlar esses comportamentos construindo os links apropriadamente.

Normalmente, ao vincular a App Builder, os desenvolvedores construirão uma URL para o App Builder diretório raiz. A URL pode ser algo como isto:

https://example.com/App Builder/

Este link pressupõe que App Builder está hospedado em an App Builder diretório abaixo do diretório raiz do site. Em muitos casos, App Builder será hospedado na raiz do site.

Quando um usuário segue tal link, App Builder redirecionará o navegador para o formulário de login. No entanto, se um provedor de autenticação externo tiver sido configurado como o Provedor de Autenticação Padrão, App Builder ignorará o formulário de login, redirecionando o navegador para o provedor de autenticação externo.

Independentemente disso, uma vez que o usuário tenha feito login com sucesso, App Builder determinará o aplicativo padrão apropriado com base nos privilégios do usuário. App Builder redirecionará o navegador para a página inicial do aplicativo.

Um "deep link" é uma URL que aponta para um aplicativo ou página específica. Um exemplo de um deep link pode ser algo como isto:

https://example.com/App Builder/app/Sales/Leads

Neste exemplo, Sales corresponde ao nome do aplicativo; Leads, ao nome da página. Observe que eles são codificados em URL conforme RFC 3986, seção 2 (https://tools.ietf.org/html/rfc3986#section-2).

App Builder suporta deep linking. Especificamente, os desenvolvedores podem construir links que apontam para um aplicativo ou página específica dentro App Builder. Assim como os links de nível superior que apontam para a raiz do site, App Builder determinará automaticamente se o usuário precisa autenticar, redirecionando o navegador para o formulário de login ou provedor de autenticação externo. Depois que o usuário tiver feito login com sucesso, App Builder redirecionará o navegador para a URL do link profundo.

A maneira mais simples de construir um deep link é navegar até a página de destino. A barra de endereços do navegador conterá uma URL que se parece com isso:

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

A parte da URL que começa com o ponto de interrogação (?) é a string de consultar. App Builder usa a sequência de consultar para rastrear painéis e linhas selecionados, filtrar e pesquisar critérios, etc. Remova a sequência de consultar para construir a URL canônica para a página.

Cadeia de Consulta Usada na URL

Ao construir a URL exata da página, App Builder faz o que precisa para manter todo o contexto da sua sessão. Em geral, existem diferentes componentes de um dado App Builder página que pode acabar sendo incluída como parte da URL da string de consultar. Os componentes que terminam na URL podem incluir: Chaves primárias, Nome da página, Nome do painel e Nome do controle.

Dicas para Encurtar URL

Há casos em que App Builder gera uma URL muito longa para Pages. Nesta seção, forneceremos algumas dicas gerais a serem consideradas para ajudar a encurtar a URL.

  • Defina suas chaves primárias. App Builder usará na URL o que ele vê como PKs para manter o controle de registros selecionados e, às vezes, App Builder usará todas ou a maioria das colunas se deixadas implícitas na regra. Por esse motivo, sempre certifique-se de encontrar as colunas exclusivas reais necessárias para identificar seu registro.

    • Se você decidir usar uma string mais longa como sua Chave Primária, saiba que isso ocupará mais espaço na URL
  • Mantenha seus Nomes curtos para Página, Painéis e Controles. Se você precisar que eles sejam exibidos como valores de nome mais longos, use o campo Rótulo (que não será incluído como parte da URL da consultar )

Além das dicas listadas, as configurações do IIS podem valer a pena serem revisadas pelo seu Administrador do Sistema. O IIS coloca algumas limitações no comprimento de URL por padrão, e algumas configurações são configuráveis para permitir URLs mais longas. As configurações a serem revisadas incluem:

  • maxAllowedContentLength - Tamanho máximo de upload de arquivo. O padrão é 30000000
  • maxUrl - Comprimento máximo de URL. O padrão é 4096
  • maxQueryString - Comprimento máximo da string de consultar de URL. O padrão é 2048

Consulte o artigo da Microsoft sobre Limites de solicitação <requestLimits> para mais informações.

Aviso

Alterar um nome de aplicativo ou página quebrará os deep links existentes.

Autenticação

Conforme observado acima, App Builder redirecionará automaticamente usuários anônimos para o formulário de login ou para um provedor de autenticação externo. Na maioria dos cenários, esse é o comportamento desejado. No entanto, pode haver situações que exijam que o usuário faça login com um provedor de segurança específico. Exemplos incluem:

  • O deep link aponta para uma página que requer uma autorização específica. Por exemplo, a página de destino pode exibir dados recuperados do Salesforce. Nesse caso, o usuário precisará autenticar-se com o Salesforce antes de acessar a página.
  • O usuário já foi autenticado com um provedor de logon único (SSO). Por exemplo, o usuário pode seguir um link dentro de um portal. Para acessar o portal, o usuário fez login com o Active Directory Federation Services (ADFS). Supondo App Builder também é configurado para autenticar usuários via ADFS, o usuário pode efetivamente ignorar o formulário de login ao seguir o link.

URLs de Desafio

Para forçar os usuários a se autenticarem com um provedor de segurança específico, o link deve ser construído de forma a acionar um desafio. O exemplo a seguir demonstra um desafio para um provedor de autenticação específico:

Para forçar os usuários a se autenticarem com um provedor de segurança específico, o link deve ser construído de forma a acionar um desafio. O exemplo a seguir demonstra um desafio para um provedor de autenticação específico:

Vamos nos referir a isso como challenge-url. O challenge-url é construído de:

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

Onde:

  • <vinyl-root> - Este é o URL absoluto para o App Builder diretório raiz do aplicativo web. Não inclui a barra final. Neste exemplo, vinyl-root é https://example.com/App Builder.
  • <provider-name> - Este é o nome do provedor de segurança conforme definido em App Builder. No exemplo acima, provider-name é SAML. Observe que provider-name deve ser codificado em URL.
  • <response-url> - Este é o App Builder uRL de retorno do aplicativo da web. Não é o deep link. O response-url precisa ser codificado em URL.

No exemplo acima, decodificar o response-url produz:

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

A response-url é composta de:

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

Onde:

  • <vinyl-root> - URL absoluta do App Builder raiz do aplicativo web. Veja acima.
  • <relative-link> - Este é o App Builder parte relativa à raiz do aplicativo web do deep link. É codificado em URL.

No exemplo acima, o link relativo é:

%2Fapp%2FSales%2FLeads

A decodificação do link relativo nos dá:

/app/Sales/Leads

Conforme observado acima, isso é relativo ao App Builder diretório raiz do aplicativo web (por exemplo, vinyl-root).

Construindo uma URL de Desafio

Para construir uma URL de desafio, precisamos reverter o processo.

Etapa 1) Comece com o deep link e remova o vinyl-root para obter o relative-link. Ele deve começar com /app. URL codificou o relative-link.

Etapa 2) Construa a response-url a partir de:

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

Codificação de URL response-url.

Etapa 3) Construa a URL do desafio a partir de:

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

Fiddle para Gerar a URL do Desafio

O seguinte JSFiddle pode ser usado para gerar uma URL de desafio:

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());