Ingress-Links im Jitterbit App Builder
Entwickler müssen möglicherweise eine Verknüpfung herstellen zu App Builder aus externen Quellen wie:
- Andere Anwendungen
- Email Nachrichten
- Portale
- iframes
Solche Links können den Benutzer zur Standardanwendung oder zu einer bestimmten Anwendung weiterleiten. Sie können dem Benutzer die Auswahl der Authentifizierungsmethode oder die Einleitung des Anmeldevorgangs bei einem bestimmten Sicherheitsanbieter ermöglichen. Der Entwickler kann diese Verhaltensweisen steuern, indem er die Links entsprechend erstellt.
Top-Level-Links
Normalerweise beim Verlinken auf App Builder konstruieren die Entwickler eine URL zur App Builder Stammverzeichnis. Die URL könnte etwa so aussehen:
https://example.com/App Builder/
Dieser Link setzt voraus, dass App Builder befindet sich in an App Builder Verzeichnis unterhalb des Stammverzeichnisses der Website. In vielen Fällen App Builder wird im Stammverzeichnis der Website gehostet.
Wenn ein Benutzer einem solchen Link folgt, App Builder leitet den Browser zum Anmeldeformular um. Wenn jedoch ein externer Authentifizierungsanbieter als Standardauthentifizierungsanbieter konfiguriert wurde, App Builder umgeht das Anmeldeformular und leitet den Browser stattdessen zum externen Authentifizierungsanbieter um.
Unabhängig davon, sobald sich der Benutzer erfolgreich angemeldet hat, App Builder bestimmt die entsprechende Standardanwendung basierend auf den Berechtigungen des Benutzers. App Builder leitet den Browser dann auf die Homepage der Anwendung um.
Deeplinks
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 gemäß RFC 3986, Abschnitt 2 (https://tools.ietf.org/html/rfc3986#section-2).
App Builder unterstützt Deep Linking. Insbesondere können Entwickler Links erstellen, die auf eine bestimmte Anwendung oder Seite innerhalb von App Builder. Wie bei Top-Level-Links, die auf die Stammwebsite verweisen, App Builder ermittelt automatisch, ob der Benutzer sich authentifizieren muss, und leitet den Browser zum Anmeldeformular oder zu einem externen Authentifizierungsanbieter um. Sobald sich der Benutzer erfolgreich angemeldet hat, App Builder leitet 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 ungefähr 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 genauen Seiten URL, App Builder tut, was es braucht, um den gesamten Kontext Ihrer Sitzung aufrechtzuerhalten. Im Allgemeinen gibt es verschiedene Komponenten einer bestimmten App Builder Seite, die möglicherweise als Teil der Abfrage URL enthalten ist. Zu den Komponenten, die möglicherweise in der URL enthalten sind, gehören: Primärschlüssel, Seitenname, Panelname und Steuerelementname.
Tipps zum Kürzen von URL
Es gibt Fälle, in denen App Builder generiert eine sehr lange URL für Seiten. In diesem Abschnitt geben wir einige allgemeine Tipps zum Kürzen der URL.
-
Definieren Sie Ihre Primärschlüssel. App Builder verwendet in der URL das, was es als PKs ansieht, um ausgewählte Datensätze zu verfolgen, und manchmal App Builder verwendet alle oder die meisten Spalten, wenn dies in der Regel implizit gelassen wird. Stellen Sie daher immer sicher, dass Sie die tatsächlich 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 diese mehr Platz in der URL einnimmt
-
Halten Sie die Namen für Seiten, Bedienfelder und Steuerelemente kurz. Wenn Sie möchten, dass sie als längere Namenswerte angezeigt werden, verwenden Sie das Feld Label (das nicht als Teil der Abfrage URL enthalten ist).
Zusätzlich zu den aufgeführten Tipps sollten Sie die IIS-Einstellungen ggf. von Ihrem Systemadministrator überprüfen lassen. IIS legt standardmäßig einige Beschränkungen für die URL Länge fest und einige Einstellungen können so konfiguriert werden, 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 Unterbrechen bestehender Deeplinks.
Authentifizierung
Wie oben erwähnt, App Builder leitet 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 von 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. Beispielsweise kann der Benutzer einem Link innerhalb eines Portals folgen. Um auf das Portal zuzugreifen, hat sich der Benutzer bei Active Directory Federation Services (ADFS) angemeldet. Vorausgesetzt App Builder ist auch so konfiguriert, dass Benutzer über ADFS authentifiziert werden. Der Benutzer kann das Anmeldeformular beim Folgen des Links effektiv umgehen.
Challenge URLs
Um Benutzer zu zwingen, sich bei einem bestimmten Sicherheitsanbieter zu authentifizieren, 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 zu zwingen, sich bei einem bestimmten Sicherheitsanbieter zu authentifizieren, 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 zur App Builder Stammverzeichnis der Webanwendung. Es enthält nicht den abschließenden Schrägstrich. In diesem Beispiel ist vinyl-root https://example.com/App Builder.
- <provider-name> - Dies ist der Name des Sicherheitsanbieters, wie in App Builder. Im obigen Beispiel lautet der Anbietername SAML. Beachten Sie, dass der Anbietername URL codiert sein muss.
- <response-url> - Dies ist die App Builder Rückruf URL der Webanwendung. Es ist nicht der Deep Link. Die Antwort-URL muss URL codiert 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 der App Builder Stammverzeichnis der Webanwendung. Siehe oben.
- <relative-link> - Dies ist der App Builder Stammbezogener Teil des Deeplinks der Webanwendung. Er ist URL codiert.
Im obigen Beispiel lautet der relative Link:
%2Fapp%2FSales%2FLeads
Durch die Dekodierung des relativen Links erhalten wir:
/app/Sales/Leads
Wie oben erwähnt, ist dies relativ zum App Builder Stammverzeichnis der Webanwendung (z. B. 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());