Ingress-Links im Jitterbit App Builder
Entwickler müssen möglicherweise Links zu App Builder von externen Quellen herstellen, beispielsweise:
- Andere Anwendungen
- Email-Nachrichten
- Portale
- iframes
Solche Links können den Benutzer zur Standardanwendung oder zu einer bestimmten Anwendung weiterleiten. Sie ermöglichen dem Benutzer die Auswahl der Authentifizierungsmethode oder die Einleitung des Anmeldevorgangs bei einem bestimmten Sicherheitsanbieter. Der Entwickler kann dieses Verhalten durch die entsprechende Gestaltung der Links steuern.
Top-Level-Links
Normalerweise erstellen Entwickler beim Verknüpfen mit App Builder eine URL zum Stammverzeichnis von App Builder. Die URL könnte beispielsweise wie folgt aussehen:
https://example.com/App Builder/
Dieser Link setzt voraus, dass App Builder in einem App Builder-Verzeichnis unterhalb des Stammverzeichnisses der Website gehostet wird. In den meisten 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. Wenn jedoch ein externer Authentifizierungsanbieter als Standardauthentifizierungsanbieter konfiguriert wurde, umgeht App Builder das Anmeldeformular und leitet den Browser stattdessen zum externen Authentifizierungsanbieter weiter.
Unabhängig davon ermittelt App Builder nach der erfolgreichen Anmeldung des Benutzers die entsprechende Standardanwendung basierend auf seinen Berechtigungen. App Builder leitet den Browser dann auf die Startseite der Anwendung um.
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/App Builder/app/Sales/Leads
In diesem Beispiel entspricht „Sales“ dem Anwendungsnamen und „Leads“ dem Seitennamen. Beachten Sie, dass diese URL kodiert sind gemäß RFC 3986, Abschnitt 2 (https://tools.ietf.org/html/rfc3986#section-2).
App Builder unterstützt Deep Linking. Entwickler können Links erstellen, die auf eine bestimmte Anwendung oder Seite im App Builder verweisen. Wie bei Top-Level-Links, die auf das Stammverzeichnis der Website verweisen, prüft App Builder automatisch, ob der Benutzer eine Authentifizierung benötigt, und leitet den Browser zum Anmeldeformular oder zu einem externen Authentifizierungsanbieter weiter. Nach erfolgreicher Anmeldung leitet App Builder den Browser zur Deep-Link URL weiter.
Der einfachste Weg, einen Deep Link zu erstellen, besteht darin, zur Zielseite zu surfen. Die Adressleiste des Browsers enthält eine URL, die in etwa so aussieht:
https://example.com/App Builder/app/Sales/Leads?$activepanel=Leads&Leads.LeadId=123456
Der Teil der URL, der mit dem Fragezeichen (?) beginnt, ist die Abfrage. App Builder verwendet die Abfrage, um ausgewählte Bereiche und Zeilen, Filter- und Suchkriterien usw. zu verfolgen. Entfernen Sie die Abfrage, um die kanonische URL zur Seite zu erstellen.
In der URL verwendete Abfragezeichenfolge
Beim Erstellen der exakten Seiten-URL sorgt App Builder dafür, dass der gesamte Kontext Ihrer Sitzung erhalten bleibt. Im Allgemeinen gibt es verschiedene Komponenten einer App Builder Seite, die in die Abfrage URL aufgenommen werden können. Zu den Komponenten der URL können gehören: Primärschlüssel, Seitenname, Panelname und Steuerelementname.
Tipps zum Kürzen von URL
Manchmal generiert der App Builder sehr lange URL für Seiten. In diesem Abschnitt geben wir Ihnen einige allgemeine Tipps zum Kürzen der URL.
Definieren Sie Ihre Primärschlüssel. App Builder verwendet in der URL die Primärschlüssel, die er als Primärschlüssel ansieht, um ausgewählte Datensätze zu verfolgen. Manchmal verwendet App Builder alle oder die meisten Spalten, wenn dies in der Regel implizit festgelegt ist. Achten Sie daher immer darauf, die eindeutigen Spalten zu 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 diese mehr Platz in der URL einnimmt
- Halten Sie die Namen für Seiten, Bedienfelder und Steuerelemente kurz. Wenn Sie längere Namen benötigen, verwenden Sie das Feld Label (das nicht in die Abfrage URL aufgenommen wird).
Zusätzlich zu den aufgeführten Tipps kann es sinnvoll sein, die IIS-Einstellungen von Ihrem Systemadministrator überprüfen zu lassen. IIS beschränkt die URL Länge standardmäßig, und einige Einstellungen lassen sich so konfigurieren, dass längere URLs möglich sind. Zu den zu überprüfenden Einstellungen gehören:
- maxAllowedContentLength - Maximale Datei-Uploadgröße. Standardmäßig 30000000
- maxUrl - Maximale URL Länge. Standardmäßig 4096
- maxQueryString - Maximale Länge der URL Abfrage. Standardmäßig 2048
Siehe den Microsoft-Artikel zu Anforderungslimits <requestLimits> für weitere Informationen.
Warnung
Das Ändern eines Anwendungs- oder Seitennamens führt zum Verlust bestehender Deeplinks.
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 spezielle Autorisierung erfordert. Beispielsweise kann die Zielseite Daten anzeigen, die von Salesforce abgerufen wurden. In diesem Fall muss sich der Benutzer vor dem Zugriff auf die Seite bei Salesforce authentifizieren. Der Benutzer hat sich bereits bei einem Single Sign-On (SSO)-Anbieter authentifiziert. Beispielsweise folgt er einem Link innerhalb eines Portals. Um auf das Portal zuzugreifen, hat er sich über Active Directory Federation Services (ADFS) angemeldet. Sofern App Builder ebenfalls für die Authentifizierung über ADFS konfiguriert ist, kann der Benutzer das Anmeldeformular beim Folgen des Links umgehen.
Challenge URLs
Um Benutzer zur Authentifizierung bei einem bestimmten Sicherheitsanbieter zu zwingen, muss der Link so aufgebaut sein, dass er eine Abfrage auslöst. Das folgende Beispiel zeigt eine Abfrage für einen bestimmten Authentifizierungsanbieter:
Um Benutzer zur Authentifizierung bei einem bestimmten Sicherheitsanbieter zu zwingen, muss der Link so aufgebaut sein, dass er eine Abfrage auslöst. Das folgende Beispiel zeigt eine Abfrage für einen bestimmten Authentifizierungsanbieter:
Wir bezeichnen dies als Abfrage-URL. Die Abfrage-URL besteht aus:
<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. Der abschließende Schrägstrich ist nicht enthalten. In diesem Beispiel lautet das Stammverzeichnis https://example.com/App Builder.
- <provider-name> - Dies ist der Name des Sicherheitsanbieters, wie er im App Builder definiert ist. Im obigen Beispiel lautet der Anbietername SAML. Beachten Sie, dass der Anbietername URL codiert sein muss.
- <response-url> - Dies ist die Rückruf URL der App Builder-Webanwendung. Es handelt sich nicht um den Deep Link. Die Antwort-URL muss URL kodiert sein.
Im obigen Beispiel ergibt die Dekodierung der Antwort-URL:
https://example.com/App Builder/auth/authenticated?returnUrl=%2Fapp%2FSales%2FLeads
Die Antwort-URL besteht aus:
<vinyl-root>/auth/authenticated/?returnUrl=<relative-link>
Wo:
- <vinyl-root> - Absolute URL des Stammverzeichnisses der App Builder Webanwendung. Siehe oben.
- <relative-link> - Dies ist der Root-relative Teil des Deep Links der App Builder Webanwendung. Er ist URL codiert.
Im obigen Beispiel lautet der relative Link:
%2Fapp%2FSales%2FLeads
Die Dekodierung des relativen Links ergibt:
/app/Sales/Leads
Wie oben erwähnt, ist dies relativ zum Stammverzeichnis der App Builder Webanwendung (d. h. Vinyl-Root).
Erstellen einer Challenge URL
Um eine Challenge URL zu erstellen, müssen wir den Vorgang umkehren.
Schritt 1) Beginnen Sie mit dem Deep Link und entfernen Sie die Vinyl-Root, um einen relativen Link zu erhalten. Dieser sollte mit /app beginnen. Die URL kodiert den relativen Link.
Schritt 2) Erstellen Sie die Antwort-URL aus:
<vinyl-root>/auth/authenticated/?returnUrl=<relative-link>
URL -Kodierung der Antwort-URL.
Schritt 3) Erstellen Sie die Challenge-URL aus:
<vinyl-root>/service/authentication/external?provider=<provider-name>&returnUrl=<response-url>
Fiddle zum Generieren der Challenge URL
Mit dem folgenden JSFiddle kann eine Challenge URL generiert werden:
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());