Ingress-Links im Jitterbit App Builder
Einführung
Entwickler müssen möglicherweise von externen Quellen wie den folgenden auf den App Builder verlinken:
- Andere Anwendungen
- E-Mail-Nachrichten
- Portale
- iframes
Solche Links können den Benutzer zur Standardanwendung oder zu einer bestimmten Anwendung leiten. Sie können dem Benutzer auch die Wahl lassen, wie er sich authentifizieren oder den Anmeldeprozess mit einem bestimmten Sicherheitsanbieter initiieren möchte. Der Entwickler kann dieses Verhalten steuern, indem er die Links entsprechend konstruiert.
Hauptlinks
Typischerweise erstellen Entwickler beim Verlinken auf den App Builder eine URL zum Stammverzeichnis des App Builders. Die URL könnte etwa so aussehen:
https://example.com/Vinyl/
Dieser Link geht davon aus, dass der App Builder im Verzeichnis Vinyl
unter dem Stammverzeichnis der Website gehostet wird. In vielen Fällen wird der App Builder im Stammverzeichnis der Website gehostet.
Wenn ein Benutzer einem solchen Link folgt, wird der App Builder den Browser zum Anmeldeformular umleiten. Wenn jedoch ein externer Authentifizierungsanbieter als Standard-Authentifizierungsanbieter konfiguriert wurde, umgeht der App Builder das Anmeldeformular und leitet den Browser stattdessen zum externen Authentifizierungsanbieter weiter.
Unabhängig davon wird der App Builder, sobald der Benutzer erfolgreich angemeldet ist, die geeignete Standardanwendung basierend auf den Berechtigungen des Benutzers bestimmen. Der App Builder wird dann den Browser zur Startseite der Anwendung umleiten.
Deep Links
Ein "Deep Link" ist eine URL, die auf eine bestimmte Anwendung oder Seite verweist. Ein Beispiel für einen Deep Link könnte etwa so aussehen:
https://example.com/Vinyl/app/Sales/Leads
In diesem Beispiel entspricht Sales dem Anwendungsnamen; Leads dem Seitennamen. Beachten Sie, dass diese gemäß RFC 3986, Abschnitt 2 (https://tools.ietf.org/html/rfc3986#section-2) URL-kodiert sind.
Der App Builder unterstützt Deep Linking. Insbesondere können Entwickler Links erstellen, die auf eine bestimmte Anwendung oder Seite innerhalb des App Builders verweisen. Wie bei Hauptlinks, die auf das Stammverzeichnis der Website verweisen, wird der App Builder automatisch bestimmen, ob der Benutzer sich authentifizieren muss, und den Browser zum Anmeldeformular oder zum externen Authentifizierungsanbieter umleiten. Sobald der Benutzer erfolgreich angemeldet ist, wird der App Builder den Browser zur Deep Link-URL umleiten.
Der einfachste Weg, einen Deep Link zu erstellen, besteht darin, zur Zielseite zu navigieren. Die Adressleiste des Browsers enthält eine URL, die ungefähr so aussieht:
https://example.com/Vinyl/app/Sales/Leads?$activepanel=Leads&Leads.LeadId=123456
Der Teil der URL, der mit dem Fragezeichen (?
) beginnt, ist die Abfragezeichenfolge. Der App Builder verwendet die Abfragezeichenfolge, um ausgewählte Panels und Zeilen, Filter- und Suchkriterien usw. zu verfolgen. Entfernen Sie die Abfragezeichenfolge, um die kanonische URL zur Seite zu erstellen.
Abfragezeichenfolge, die in der URL verwendet wird
Beim Erstellen der genauen Seiten-URL tut der App Builder, was nötig ist, um den gesamten Kontext Ihrer Sitzung aufrechtzuerhalten. Im Allgemeinen gibt es verschiedene Komponenten einer bestimmten App Builder-Seite, die möglicherweise als Teil der Abfragezeichenfolge-URL enthalten sind. Komponenten, die in der URL enden, können Folgendes umfassen: Primärschlüssel, Seitenname, Panelname und Steuerungsname.
Tipps zur Verkürzung der URL
Es gibt Fälle, in denen der App Builder eine sehr lange URL für Seiten generiert. In diesem Abschnitt geben wir einige allgemeine Tipps, die Sie berücksichtigen sollten, um die URL zu verkürzen.
-
Definieren Sie Ihre Primärschlüssel. Der App Builder verwendet in der URL, was er als PKs sieht, um ausgewählte Datensätze zu verfolgen, und manchmal verwendet der App Builder alle oder die meisten Spalten, wenn sie in der Regel implizit bleiben. Aus diesem Grund sollten Sie immer sicherstellen, dass Sie die tatsächlichen eindeutigen Spalten finden, die benötigt werden, um Ihren Datensatz zu identifizieren.
- Wenn Sie sich entscheiden, eine längere Zeichenfolge als Ihren Primärschlüssel zu verwenden, beachten Sie, dass dies mehr Platz in der URL einnimmt.
-
Halten Sie Ihre Namen kurz für Seiten, Panels und Steuerungen. Wenn Sie benötigen, dass sie als längere Namenswerte angezeigt werden, verwenden Sie das Label-Feld (das nicht als Teil der Abfrage-URL enthalten ist).
Zusätzlich zu den aufgeführten Tipps kann es sinnvoll sein, die IIS-Einstellungen von Ihrem Systemadministrator überprüfen zu lassen. IIS setzt standardmäßig einige Einschränkungen für die URL-Länge, und einige Einstellungen sind konfigurierbar, um längere URLs zuzulassen. Zu überprüfende Einstellungen sind:
- maxAllowedContentLength: Maximale Dateigröße für den Upload. Standardmäßig 30000000.
- maxUrl: Maximale URL-Länge. Standardmäßig 4096.
- maxQueryString: Maximale Länge der URL-Abfragezeichenfolge. Standardmäßig 2048.
Siehe den Microsoft-Artikel zu Request Limits <requestLimits> für weitere Informationen.
Warnung
Das Ändern eines Anwendungs- oder Seitennamens wird bestehende Deep Links unterbrechen.
Authentication
Wie oben erwähnt, wird App Builder anonyme Benutzer automatisch entweder zum Anmeldeformular oder zu einem externen Authentifizierungsanbieter umleiten. In den meisten Szenarien ist dies das gewünschte Verhalten. Es kann jedoch Situationen geben, die erfordern, dass sich der Benutzer bei einem bestimmten Sicherheitsanbieter anmeldet. Beispiele hierfür sind:
- Der Deep Link verweist auf eine Seite, die eine spezifische Autorisierung erfordert. Zum Beispiel kann die Zielseite Daten anzeigen, die aus Salesforce abgerufen wurden. In diesem Fall muss sich der Benutzer bei Salesforce authentifizieren, bevor er auf die Seite zugreifen kann.
- Der Benutzer hat sich bereits bei einem Single Sign-On (SSO) Anbieter authentifiziert. Zum Beispiel kann der Benutzer einem Link innerhalb eines Portals folgen. Um auf das Portal zuzugreifen, hat sich der Benutzer mit Active Directory Federation Services (ADFS) angemeldet. Vorausgesetzt, App Builder ist ebenfalls so konfiguriert, dass Benutzer über ADFS authentifiziert werden, kann der Benutzer das Anmeldeformular effektiv umgehen, wenn er dem Link folgt.
Challenge URLs
Um Benutzer zu zwingen, sich bei einem bestimmten Sicherheitsanbieter zu authentifizieren, muss der Link so konstruiert werden, dass er eine Herausforderung auslöst. Das folgende Beispiel zeigt eine Herausforderung für einen bestimmten Authentifizierungsanbieter:
Wir bezeichnen dies als die Challenge-URL. Die Challenge-URL wird wie folgt konstruiert:
<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>
Wo:
<vinyl-root>
: Dies ist die absolute URL zum Stammverzeichnis der App Builder-Webanwendung. Sie enthält nicht den abschließenden Schrägstrich. In diesem Beispiel istvinyl-root
https://example.com/Vinyl
.<provider-name>
: Dies ist der Name des Sicherheitsanbieters, wie er innerhalb von App Builder definiert ist. Im obigen Beispiel istprovider-name
SAML. Beachten Sie, dassprovider-name
URL-kodiert sein muss.<response-url>
: Dies ist die Callback-URL der App Builder-Webanwendung. Es ist nicht der Deep Link. Dieresponse-url
muss URL-kodiert sein.
Im obigen Beispiel ergibt das Dekodieren der response-url
:
https://example.com/Vinyl/auth/authenticated?returnUrl=%2Fapp%2FSales%2FLeads
Die response-url
setzt sich aus Folgendem zusammen:
<vinyl-root>/auth/authenticated/?returnUrl=<relative-link>
Wo:
<vinyl-root>
: Absolute URL des Wurzelverzeichnisses der App Builder-Webanwendung (siehe oben).<relative-link>
: Dies ist der relativ zur Wurzel der App Builder-Webanwendung stehende Teil des Deep Links. Er ist URL-kodiert.
Im obigen Beispiel ist der relative-link
wie folgt:
%2Fapp%2FSales%2FLeads
Das Dekodieren des relative-link
ergibt:
/app/Sales/Leads
Wie oben erwähnt, ist dies relativ zum Wurzelverzeichnis der App Builder-Webanwendung (vinyl-root
in diesem Beispiel).
Konstruktion einer Challenge-URL
Um eine Challenge-URL zu konstruieren, müssen wir den Prozess umkehren:
-
Beginnen Sie mit dem Deep Link und entfernen Sie
vinyl-root
, umrelative-link
zu erhalten. Er sollte mit/app
beginnen. URL-kodieren Sie denrelative-link
. -
Konstruieren Sie die
response-url
aus Folgendem:<vinyl-root>/auth/authenticated/?returnUrl=<relative-link>
URL-kodieren Sie die
response-url
. -
Konstruieren Sie die
challenge-url
aus Folgendem:<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>
Fiddle zur Generierung der Challenge-URL
Das folgende JSFiddle kann verwendet werden, um eine Challenge-URL zu generieren:
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());