Sie befinden sich hier:
Dynamische Clientregistrierung in OpenID Connect für externe API-Gateways
Auch wenn kein typischer Autorisierungs-Flow vorhanden ist, können Sie die dynamische Client-Registrierung in OpenID Connect verwenden, um Ihre Salesforce-Instanz als einen eigenständigen OAuth-Autorisierungsserver zum Schutz von Ressourcen, die auf einem externen API-Gateway gehostet werden, zu aktivieren.
Erforderliche Editionen
| Verfügbarkeit: Salesforce Classic und Lightning Experience |
| Verfügbarkeit: Alle Editionen |
Weitere Details finden Sie unter Neue verbundene Anwendungen können in der Version Spring '26 nicht mehr erstellt werden.
Mit der dynamischen Clientregistrierung können Ressourcenserver Clientanwendungen direkt als verbundene Anwendungen bei Salesforce registrieren. Bei den Clientanwendungen handelt es sich um externe Anwendungen, die Zugriff auf die geschützten Ressourcen anfordern. Der Ressourcenserver sendet eine Anforderung, um Clientanwendungen als verbundene Anwendungen zu registrieren. Der Autorisierungsserver überprüft die Anforderung des Ressourcenservers und erstellt die verbundene Anwendung, wodurch sie eine eindeutige Client-ID und ein Client-Geheimnis erhält.
Im Rahmen des Autorisierungsvorgangs können alle über OAuth verbundenen Anwendungen mithilfe der Tokenselbstprüfung den aktuellen Zustand eines OAuth 2.0-Zugriffs- oder -Aktualisierungstokens überprüfen. Der Ressourcenserver oder verbundene Anwendungen senden die Client-ID und das Geheimnis der Client-Anwendung an den Autorisierungsserver, wodurch ein OAuth-Autorisierungs-Flow initiiert wird. Im Rahmen dieses Flows validiert der Autorisierungsserver das Zugriffstoken der Clientanwendung oder führt zu diesem Zweck eine Selbstprüfung durch. Wenn das Zugriffstoken aktuell und gültig ist, erhält die Clientanwendung Zugriff.
Beispiel: Sie möchten, dass Ihre Salesforce-Partner unabhängig auf Auftragsstatusdaten zugreifen können. Sie erstellen also einen Service, der den Auftragsstatus über mehrere Systeme hinweg zur Verfügung stellt. Dazu wird dem System ein API-Gateway vorgeschaltet, das auf der Anypoint-Plattform von MuleSoft bereitgestellt wird. Führen Sie die folgenden Schritte aus, um den geschützten Zugriff auf diese Daten zu ermöglichen.
- Wenden Sie auf dem API-Gateway eine Richtlinie zum Erzwingen von OpenID-Token an.
- Konfigurieren Sie Ihre Salesforce-Instanz als Clientverwaltungsanbieter auf der Anypoint-Plattform von MuleSoft.
Mit dieser Konfiguration verwendet das API-Gateway Ihre Salesforce-Instanz im dynamischen Clientregistrierungs-Flow von OpenID Connect als Autorisierungsanbieter.
Im Folgenden werden die Schritte für diesen Flow erläutert.
- Erstellen Sie eine verbundene Anwendung für das API-Gateway und generieren Sie dafür ein Token für den Erstzugriff. Salesforce schreibt dieses Token für die Authentifizierung der Registrierungsanforderungen des dynamischen Clients vor. Informationen finden Sie unter Generieren eines Tokens für den Erstzugriff.
- Konfigurieren Ihres API-Gateways:
- Wenden Sie eine Richtlinie zum Erzwingen von OpenID-Token an.
- Konfigurieren Sie Ihre Salesforce-Instanz als Clientverwaltungsanbieter.
- Registrieren Sie Ihr Token für den Erstzugriff, sofern dies im API-Gateway erforderlich ist.
- Zum Einleiten des Flows registriert das API-Gateway eine verbundene Anwendung mit dem Endpunkt für die dynamische Salesforce-Clientregistrierung.
- Nach einer erfolgreichen Registrierung antwortet Salesforce mit den Metadaten der registrierten verbundenen Anwendung.
- Das API-Gateway sendet eine Anforderung an den Salesforce-Autorisierungsendpunkt, um die registrierte verbundene Anwendung basierend auf dem zugeordneten Autorisierungsberechtigungstyp zu genehmigen. Nach einer erfolgreichen Validierung generiert Salesforce ein Zugriffstoken für die registrierte verbundene Anwendung.
- Das API-Gateway sendet eine Anforderung an den Salesforce-Token-Endpunkt für die Selbstprüfung, um das Zugriffstoken zu überprüfen.
- Nach erfolgreicher Validierung gewährt das API-Gateway der registrierten verbundenen Anwendung Zugriff auf die geschützten Daten.
Registrieren einer verbundenen Anwendung
Die verbundene Anwendung, die das externe API-Gateway repräsentiert, registriert mit dem Endpunkt für die dynamische Salesforce-Clientregistrierung eine neue Clientanwendung als verbundene Anwendung. Das Format des Endpunkt-URLs für die dynamische Clientregistrierung lautet https://Hostname/services/oauth2/register.
Salesforce schreibt vor, dass die anfordernde verbundene OAuth 2.0-Anwendung das Token für den Erstzugriff in der Kopfzeile der Anforderung angibt. Dieses Beispiel stellt eine Anforderung dar, die am Endpunkt der dynamischen Clientregistrierung gepostet wird:
POST /services/oauth2/register HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Bearer <initial.access.token>
Host: myorg.salesforce.com
{"redirect_uris":["https://client.salesforce.com/redirect.html",
"https://client.salesforce.com/callback","http://localhost"],
"response_types":["code","token","id_token"],
"grant_types":["authorization_code","implicit","refresh_token"],
"application_type":"web",
"contacts":["abc@sf.com","ve7jtb@example.org"],
"client_name","Client Name Example",
"logo_uri":"https://client.salesforce.com/logo.png",
"client_uri":"https://client.salesforce.com/info.html"}Fügen Sie der Registrierungsanforderung die folgenden Parameter hinzu. Weitere Informationen zu diesen Parametern finden Sie im Abschnitt 3.1 Client Registration Request in OpenID Connect Dynamic Client Registration 1.0 incorporating errata set 1.
| Parameter | Beschreibung |
|---|---|
redirect_url
|
Der URL, an den Benutzer nach einer erfolgreichen Authentifizierung umgeleitet werden. Der Umleitungs-URI muss mit einem der im Feld "Rückmeldungs-URL" der verbundenen Anwendung angegebenen Werte übereinstimmen. Andernfalls tritt bei der Genehmigung ein Fehler auf. Der Umleitungs-URI befindet sich auf der Seite "Verbundene Anwendungen verwalten" oder in der Definition der verbundenen Anwendung. Dieser Wert muss URL-codiert sein. |
response_types
|
(Optional) OAuth 2.0-Antwortwerte, auf deren Verwendung der Client sich selbst beschränkt. Von Salesforce werden Antworttypen für Clients weder gespeichert noch eingeschränkt. |
grant_types
|
(Optional) OAuth 2.0-Gewährungstypen, auf deren Verwendung der Client sich selbst beschränkt. Von Salesforce werden Gewährungstypen für Clients weder gespeichert noch eingeschränkt. |
application_type
|
(Optional) Anwendungstyp, beispielsweise native oder Web. Von Salesforce wird der Anwendungstyp nicht mit dem Client gespeichert. |
contacts
|
(Optional) Wenn Sie keinen Kontaktwert angeben, generiert Salesforce automatisch einen Standardkontakt. |
client_name
|
(Optional) Wenn Sie keinen Clientnamenswert angeben, generiert Salesforce automatisch einen standardmäßigen Clientnamen. |
scopes
|
(Optional) Berechtigungen, die den Typ der geschützten Ressourcen definieren, auf die eine verbundene Anwendung zugreifen kann. Sie weisen einer verbundenen Anwendung Geltungsbereiche zu, wenn Sie sie erstellen. Diese werden während des Autorisierungs-Flows in die OAuth-Token aufgenommen. Wenn Sie diesen Parameter nicht einschließen, werden alle Geltungsbereiche angefordert, die der verbundenen Anwendung zugeordnet sind. Die in diesem Parameter übergebenen Bereiche müssen eine Teilmenge der registrierten Geltungsbereiche sein. Gültige Parameter finden Sie unter OAuth-Geltungsbereiche. Wenn Sie keine Geltungsbereiche angeben, fügt Salesforce id, api und openid für den Client hinzu. Wenn Sie den Gewährungstyp refresh_token in der Anforderung hinzufügen, jedoch keinen Geltungsbereich angeben, fügt Salesforce den Geltungsbereich refresh_token hinzu. |
Salesforce antwortet mit den Metadaten der registrierten verbundenen Anwendung.
Nach einer erfolgreichen Registrierung sendet Salesforce dem API-Gateway eine Antwort mit der client_id, dem client_secret und allen registrierten Metadaten zur neuen verbundenen Anwendung. Dieses Beispiel zeigt eine Antwort von Salesforce an die verbundene Anwendung, die das API-Gateway darstellt.
HTTP/1.1 201 Created
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{"client_id":"client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1
uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE",
"client_secret":"client_secret=
1955279925675241571",
"registration_access_token":"00DR00000009GVP!ARQAQE5XuPV7J4GoOu3wvLZjZI_TxoBpeZpRb6d8AVdII6cz
_BY_uu1PKxGeAjkSvO0LpWoL_qfbQWKlXoz1f2ICNiy.6Ndr",
"registration_client_uri":"https://login.salesforce.com/
services/oauth2/register/3MVG9qKMKuRGRcbs8STMW7uUqqf0OP5l1GeQt1qRF6_
UyAqTC1ky0RlpN3L9Z8PSo4nTTTmDzymYy4tEbrKY.",
"client_id_issued_at":1534292303,
"client_secret_expires_at":0,
"token_endpoint_auth_method":"client_secret_post",
"redirect_uris":["https://login.salesforce.com/redirect.html",
"https://client.salesforce.com/callback","http://localhost"],
"response_types":["code","token","id_token"],
"grant_types":["authorization_code","implicit","refresh_token"],
"contacts":["abc@sf.com"],
"client_name":"Client Name Example",
"logo_uri":"https://client.salesforce.com/logo.png",
"client_uri":"https://client.salesforce.com/info.html",
"scopes":["openid","refresh_token","id","api"]}
Anforderungstoken-Selbstprüfung
Die verbundene Anwendung, die das externe API-Gateway repräsentiert, sendet eine Anforderung an den Salesforce-Token-Endpunkt für die Selbstprüfung, um das Zugriffstoken zu überprüfen. Spezifische Details zu dieser Anforderung finden Sie unter Token-Selbstprüfung in OpenID Connect.
Salesforce validiert das Token
Salesforce überprüft die Clientanmeldeinformationen in der Kopfzeile und sendet eine Antwort, die angibt, ob das Token aktiv ist. Diese Antwort gibt an, dass das Token noch aktiv ist.
HTTP/1.1 200 OK
Content-Type: application/json
{
"active":true,
"scope":"id api web full refresh_token openid",
"client_id":"OAuthSp",
"username":"myuser@salesforce.com",
"sub":"https://login.salesforce.com/id/00Dxx0000001gEREAY/005xx000001Sv6AAAS",
"token_type":"access_token",
"exp":1528502109,
"iat":1528494909,
"nbf":1528494909"
}Wenn Sie den Parameter "child_sessions" in die Anforderung einfügen, enthält die Antwort Informationen zur Gültigkeit der untergeordneten Sitzungen, wie im folgenden Beispiel dargestellt:
HTTP/1.1 200 OK
Content-Type: application/json
{
"active":true,
"scope":"id api web full refresh_token openid",
"client_id":"OAuthSp",
"username":"myuser@salesforce.com",
"sub":"https://login.salesforce.com/id/00Dxx0000001gEREAY/005xx000001Sv6AAAS",
"token_type":"access_token",
"exp":1528502109,
"iat":1528494909,
"nbf":1528494909
child_sessions":{
"content":"inactive",
"lightning":"active",
"visualforce":"missing"}
}Wenn das Token nicht aktiv ist, sendet Salesforce die folgende Antwort.
HTTP/1.1 200 OK
Content-Type: application/json
{
"active": false
}