Wenn Sie einen externen IDP mit der Edge API verwenden, wird der Prozess, mit dem Sie OAuth2 Zugriffs- und Aktualisierungstokens aus der IdP-Interaktion abrufen, als Passcode-Flow bezeichnet. Beim Passcode-Flow rufen Sie mit einem Browser einen einmaligen Sicherheitscode ab, mit dem Sie dann OAuth2 Tokens abrufen.
Ihre Entwicklungsumgebung unterstützt jedoch möglicherweise die Automatisierung für häufige Entwicklungsaufgaben, wie Testautomatisierung oder CI/CD. Wenn Sie diese Aufgaben automatisieren möchten, wenn ein externer IdP aktiviert ist, benötigen Sie eine Möglichkeit, OAuth2-Tokens abzurufen und zu aktualisieren, ohne einen Passcode aus einem Browser kopieren und einfügen zu müssen.
Edge unterstützt die automatische Tokengenerierung durch die Verwendung von Maschinenusern in Organisationen in denen ein IdP aktiviert ist. Ein Maschinenuser kann OAuth2-Tokens abrufen, ohne einen Passcode angeben zu müssen. Das bedeutet, dass Sie den Prozess zum Abrufen und Aktualisieren von OAuth2-Tokens mithilfe der Edge Management API vollständig automatisieren können.
Es gibt zwei Möglichkeiten, einen Maschinenuser für eine Organisation mit aktiviertem IdP zu erstellen:
Jede dieser Methoden wird in den folgenden Abschnitten beschrieben.
Sie können keinen Maschinenuser für Organisationen erstellen, in denen kein externer IdP aktiviert ist.
Maschinenuser mit apigee-ssoadminapi.sh erstellen
Verwenden Sie das apigee-ssoadminapi.sh
Dienstprogramm, um einen Maschinenuser in einer Organisation mit aktiviertem IdP zu erstellen. Weitere Informationen finden Sie unter apigee-ssoadminapi.sh verwenden. Sie können einen einzelnen Maschinenuser erstellen, der von all Ihren Organisationen verwendet wird, oder für jede Organisation einen separaten Maschinenuser erstellen.
Der Maschinenuser wird im Edge-Datenspeicher und nicht in Ihrem IdP erstellt und gespeichert. Daher sind Sie nicht für die Verwaltung des Maschinenusers über die Edge-UI und die Edge Management API verantwortlich.
Wenn Sie den Maschinenuser erstellen, müssen Sie eine E-Mail-Adresse und ein Passwort angeben. Nachdem Sie den Maschinenuser erstellt haben, weisen Sie ihn einer oder mehreren Organisationen zu.
So erstellen Sie einen Maschinenuser mit apigee-ssoadminapi.sh:
- Verwenden Sie den folgenden
apigee-ssoadminapi.sh-Befehl, um den Maschinenuser zu erstellen:apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME \ --secret SSO_ADMIN_SECRET --host Edge_SSO_IP_or_DNS \ -u machine_user_email -p machine_user_password
Wobei:
- SSO_ADMIN_NAME ist der Administratornutzername, der durch die
SSO_ADMIN_NAMEEigenschaft in der Konfigurationsdatei definiert wird, die zum Konfigurieren des Apigee SSO-Moduls verwendet wird. Der Standardwert istssoadmin. - SSO_ADMIN_SECRET ist das Administratorpasswort, das durch die
SSO_ADMIN_SECRETEigenschaft in der Konfigurationsdatei angegeben wird.In diesem Beispiel können Sie die Werte für
--portund--sslweglassen, da dasapigee-ssoModul die Standard werte 9099 für--portund http für--sslverwendet. Wenn Ihre Installation diese Standardwerte nicht verwendet, geben Sie sie entsprechend an.
- SSO_ADMIN_NAME ist der Administratornutzername, der durch die
- Melden Sie sich in der Edge-UI an, fügen Sie die E-Mail-Adresse des Maschinenusers Ihren Organisationen hinzu und weisen Sie dem Maschinenuser die erforderliche Rolle zu. Weitere Informationen finden Sie unter Globale Nutzer hinzufügen für mehr.
Maschinenuser mit der Edge Management API erstellen
Sie können einen Maschinenuser mit der Edge Management API anstelle des
apigee-ssoadminapi.sh Dienstprogramms erstellen.
So erstellen Sie einen Maschinenuser mit der Management API:
- Verwenden Sie den folgenden
curlBefehl, um ein Token für denssoadminNutzer abzurufen, den Nutzernamen des Administratorkontos fürapigee-sso:curl "http://Edge_SSO_IP_DNS:9099/oauth/token" -i -X POST \ -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' \ -d "response_type=token" -d "grant_type=client_credentials" \ --data-urlencode "client_secret=SSO_ADMIN_SECRET" \ --data-urlencode "client_id=ssoadmin"
Dabei ist SSO_ADMIN_SECRET das Administratorpasswort, das Sie bei der Installation von
apigee-ssofestgelegt haben, wie durch die EigenschaftSSO_ADMIN_SECRETin der Konfigurationsdatei angegeben.Dieser Befehl gibt ein Token aus, das Sie für den nächsten Aufruf benötigen.
- Verwenden Sie den folgenden
curlBefehl, um den Maschinenuser zu erstellen, und übergeben Sie das Token, das Sie erhalten haben:curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST \ -H "Accept: application/json" -H "Content-Type: application/json" \ -d '{"userName" : "machine_user_email", "name" : {"formatted":"DevOps", "familyName" : "last_name", "givenName" : "first_name"}, "emails" : [ {"value" : "machine_user_email", "primary" : true } ], "active" : true, "verified" : true, "password" : "machine_user_password" }' \ -H "Authorization: Bearer token"Sie benötigen das Passwort des Maschinenusers in späteren Schritten.
- Melden Sie sich in der Edge-UI an.
- Fügen Sie die E-Mail-Adresse des Maschinenusers Ihren Organisationen hinzu und weisen Sie dem Maschinenuser die erforderliche Rolle zu. Weitere Informationen finden Sie unter Globale Nutzer hinzufügen.
Maschinenuser-Tokens abrufen und aktualisieren
Verwenden Sie die Edge API, um OAuth2-Tokens abzurufen und zu aktualisieren, indem Sie die Anmeldedaten des Maschinenusers anstelle eines Sicherheitscodes übergeben.
So rufen Sie OAuth2-Tokens für den Maschinenuser ab :
- Verwenden Sie den folgenden API-Aufruf, um die ersten Zugriffs- und Aktualisierungstokens zu generieren:
curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \ -H "accept: application/json;charset=utf-8" \ -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \ http://Edge_SSO_IP_DNS:9099/oauth/token -s \ -d 'grant_type=password&username=m_user_email&password=m_user_password'
Speichern Sie die Tokens für die spätere Verwendung.
- Übergeben Sie das Zugriffstoken an einen Edge Management API-Aufruf als den
BearerHeader, wie im folgenden Beispiel gezeigt:curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
Dabei ist org_name der Name der Organisation, die den Maschinenuser enthält.
- Wenn Sie das Zugriffstoken später aktualisieren möchten, verwenden Sie den folgenden Aufruf, der das Aktualisierungstoken enthält:
curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \ -H "Accept: application/json;charset=utf-8" \ -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \ http://edge_sso_IP_DNS:9099/oauth/token \ -d 'grant_type=refresh_token&refresh_token=refreshToken'