Eingangslinks in Jitterbit App Builder
Einführung
Entwickler müssen möglicherweise von externen Quellen wie den folgenden auf App Builder verlinken:
- Andere Anwendungen
- E-Mail-Nachrichten
- Portale
- iframes
Solche Links können den Benutzer zur Standardanwendung oder zu einer bestimmten Anwendung führen. Sie können dem Benutzer ermöglichen, die Authentifizierungsmethode zu wählen oder den Anmeldeprozess mit einem bestimmten Sicherheitsanbieter zu initiieren. Der Entwickler kann diese Verhaltensweisen durch entsprechende Konstruktion der Links steuern.
Links auf oberster Ebene
Normalerweise konstruieren Entwickler beim Verlinken zu App Builder eine URL zum App Builder-Stammverzeichnis. Die URL könnte etwa so aussehen:
https://example.com/Vinyl/
Dieser Link setzt voraus, dass App Builder in einem Vinyl-Verzeichnis unterhalb des Stammverzeichnisses der Website gehostet wird. In vielen Fällen wird App Builder im Stammverzeichnis der Website gehostet.
Wenn ein Benutzer einem solchen Link folgt, leitet App Builder den Browser zum Anmeldeformular weiter. Falls jedoch ein externer Authentifizierungsanbieter als Standard-Authentifizierungsanbieter konfiguriert wurde, umgeht App Builder das Anmeldeformular und leitet den Browser stattdessen zum externen Authentifizierungsanbieter weiter.
In jedem Fall bestimmt App Builder nach erfolgreicher Anmeldung des Benutzers die entsprechende Standardanwendung basierend auf den Berechtigungen des Benutzers. App Builder leitet den Browser dann zur Startseite der Anwendung weiter.
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, URL-codiert sind (https://tools.ietf.org/html/rfc3986#section-2).
App Builder unterstützt Deep Linking. Konkret können Entwickler Links konstruieren, die auf eine bestimmte Anwendung oder Seite innerhalb von App Builder verweisen. Wie bei Links auf oberster Ebene, die auf das Stammverzeichnis der Website verweisen, bestimmt App Builder automatisch, ob der Benutzer sich authentifizieren muss, und leitet den Browser zum Anmeldeformular oder zum externen Authentifizierungsanbieter weiter. Nach erfolgreicher Anmeldung des Benutzers leitet App Builder den Browser zur Deep Link-URL weiter.
Die einfachste Möglichkeit, einen Deep Link zu konstruieren, besteht darin, zur Zielseite zu navigieren. Die Adressleiste des Browsers enthält dann eine URL, die etwa 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. 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 konstruieren.
In der URL verwendete Abfragezeichenfolge
Beim Erstellen der genauen Seiten-URL tut App Builder, was nötig ist, um den gesamten Kontext Ihrer Sitzung beizubehalten. Im Allgemeinen können verschiedene Komponenten einer bestimmten App Builder-Seite als Teil der Abfragezeichenfolgen-URL enthalten sein. Komponenten, die in der URL enthalten sein können, umfassen: Primärschlüssel, Seitenname, Panelname und Steuerelementname.
Tipps zum Verkürzen der URL
Es gibt Fälle, in denen App Builder eine sehr lange URL für Seiten generiert. In diesem Abschnitt geben wir einige allgemeine Tipps, die helfen können, die URL zu verkürzen.
-
Definieren Sie Ihre Primärschlüssel. App Builder verwendet in der URL, was es als PKs sieht, um ausgewählte Datensätze zu verfolgen. Manchmal verwendet App Builder alle oder die meisten Spalten, wenn diese in der Regel implizit bleiben. Stellen Sie daher sicher, dass Sie die tatsächlichen eindeutigen Spalten finden, die zur Identifizierung Ihres Datensatzes erforderlich sind.
- Wenn Sie sich entscheiden, eine längere Zeichenfolge als Primärschlüssel zu verwenden, beachten Sie, dass dies mehr Platz in der URL beansprucht.
-
Halten Sie Ihre Namen für Seite, Panels und Steuerelemente kurz. Falls Sie diese mit längeren Namenswerten anzeigen müssen, verwenden Sie das Feld Label (das nicht als Teil der Abfrage-URL enthalten ist).
Zusätzlich zu den aufgelisteten Tipps lohnt es sich möglicherweise, die IIS-Einstellungen von Ihrem Systemadministrator überprüfen zu lassen. IIS setzt standardmäßig einige Beschränkungen für die URL-Länge, und einige Einstellungen lassen sich konfigurieren, um längere URLs zu ermöglichen. Zu überprüfende Einstellungen sind:
- maxAllowedContentLength: Maximale Dateigröße beim Upload. Standardwert: 30000000.
- maxUrl: Maximale URL-Länge. Standardwert: 4096.
- maxQueryString: Maximale Länge der URL-Abfragezeichenfolge. Standardwert: 2048.
Weitere Informationen finden Sie im Microsoft-Artikel zu Request Limits <requestLimits>.
Warnung
Das Ändern eines Anwendungs- oder Seitennamens unterbricht vorhandene Deep Links.
Authentifizierung
Wie oben erwähnt, leitet App Builder anonyme Benutzer automatisch entweder zum Anmeldeformular oder zu einem externen Authentifizierungsanbieter weiter. In den meisten Fällen ist dies das gewünschte Verhalten. Es kann jedoch Situationen geben, in denen sich der Benutzer mit einem bestimmten Sicherheitsanbieter anmelden muss. Beispiele:
- Der Deep Link verweist auf eine Seite, die eine bestimmte Autorisierung erfordert. Beispielsweise kann die Zielseite Daten anzeigen, die aus Salesforce abgerufen werden. In diesem Fall muss sich der Benutzer bei Salesforce authentifizieren, bevor er auf die Seite zugreift.
- Der Benutzer hat sich bereits bei einem Single-Sign-On-Anbieter (SSO) authentifiziert. Beispielsweise kann der Benutzer einem Link in einem Portal folgen. Um auf das Portal zuzugreifen, hat sich der Benutzer mit Active Directory Federation Services (ADFS) angemeldet. Wenn App Builder auch für die Authentifizierung von Benutzern über ADFS konfiguriert ist, kann der Benutzer das Anmeldeformular beim Folgen des Links effektiv umgehen.
Challenge-URLs
Um Benutzer zur Authentifizierung mit einem bestimmten Sicherheitsanbieter zu zwingen, muss der Link so konstruiert werden, dass er eine Abfrage auslöst. Das folgende Beispiel zeigt eine Abfrage für einen bestimmten Authentifizierungsanbieter:
Dies bezeichnen wir als Challenge-URL. Die Challenge-URL wird wie folgt konstruiert:
<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>
Wobei:
<vinyl-root>: Dies ist die absolute URL zum Stammverzeichnis der App Builder-Webanwendung. Sie enthält keinen nachgestellten Schrägstrich. In diesem Beispiel istvinyl-roothttps://example.com/Vinyl.<provider-name>: Dies ist der Name des Sicherheitsanbieters, wie in App Builder definiert. Im obigen Beispiel istprovider-nameSAML. Beachten Sie, dassprovider-nameURL-codiert sein muss.<response-url>: Dies ist die Callback-URL der App Builder-Webanwendung. Es ist nicht der Deep Link. Dieresponse-urlmuss URL-codiert sein.
Im obigen Beispiel ergibt die Decodierung 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>
Wobei:
<vinyl-root>: Absolute URL des Stammverzeichnisses der App Builder-Webanwendung (siehe oben).<relative-link>: Dies ist der relative Teil des Deep Links zum Stammverzeichnis der App Builder-Webanwendung. Er ist URL-codiert.
Im obigen Beispiel ist der relative-link wie folgt:
%2Fapp%2FSales%2FLeads
Die Decodierung des relative-link ergibt:
/app/Sales/Leads
Wie oben erwähnt, ist dies relativ zum Stammverzeichnis der App Builder-Webanwendung (vinyl-root in diesem Beispiel).
Konstruieren einer Challenge-URL
Um eine Challenge-URL zu konstruieren, müssen Sie den Prozess umkehren:
-
Beginnen Sie mit dem Deep Link und entfernen Sie
vinyl-root, umrelative-linkzu erhalten. Es sollte mit/appbeginnen. URL-codieren Sie denrelative-link. -
Konstruieren Sie die
response-urlaus folgendem:<vinyl-root>/auth/authenticated/?returnUrl=<relative-link>URL-codieren Sie
response-url. -
Konstruieren Sie die
challenge-urlaus folgendem:<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>
Fiddle zum Generieren 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());
Fehlerbehebung
Weitere Informationen zur Fehlerbehebung finden Sie in den folgenden Abschnitten im App Builder-Fehlerbehebungsleitfaden: