Korzystanie z SAML w zadaniach automatycznych

Edge for Private Cloud w wersji 4.18.01

Gdy używasz protokołu SAML z interfejsem Edge API, proces, którego używasz do uzyskiwania tokenów dostępu OAuth2 i odświeżania tokenów z oświadczenia SAML, nazywa się przepływem kodu dostępu. W ramach procesu z kodem dostępu używasz przeglądarki do uzyskania jednorazowego kodu dostępu, którego używasz do uzyskania tokenów OAuth 2.

Twoje środowisko programistyczne może jednak obsługiwać automatyzację typowych zadań programistycznych, takich jak automatyzacja testów czy ciągła integracja i ciągłe wdrażanie (CI/CD). Aby zautomatyzować te zadania po włączeniu SAML, musisz znaleźć sposób na uzyskanie i odświeżanie tokenów OAuth2 bez konieczności kopiowania i wklejania kodu dostępu z przeglądarki.

Edge obsługuje automatyczne generowanie tokenów za pomocą użytkowników maszynowych. Użytkownik maszyny może uzyskiwać tokeny OAuth2 bez konieczności podawania kodu dostępu. Oznacza to, że możesz całkowicie zautomatyzować proces uzyskiwania i odświeżania tokenów OAuth2, korzystając z interfejsu Edge Management API.

Tworzenie konta użytkownika maszyny

Użyj narzędzia apigee-ssoadminapi.sh, aby utworzyć użytkownika maszynowego dla organizacji SAML. Więcej informacji znajdziesz w pliku apigee-ssoadminapi.sh. Możesz utworzyć jednego użytkownika maszyny używanego przez wszystkie organizacje lub osobnego użytkownika maszyny dla każdej organizacji.

Użytkownik maszyny jest tworzony i przechowywany w magazynie danych Edge, a nie w dostawcy tożsamości SAML. Dlatego nie ponosisz odpowiedzialności za obsługę użytkownika maszyny za pomocą interfejsu użytkownika i interfejsu API do zarządzania Edge.

Podczas tworzenia użytkownika maszyny musisz podać adres e-mail i hasło. Po utworzeniu użytkownika maszynowego przypisz go do co najmniej jednej organizacji.

Aby utworzyć użytkownika maszyny:

  1. Aby utworzyć użytkownika maszyny, użyj tego polecenia apigee-ssoadminapi.sh:
    > 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

    gdzie:
    • SSO_ADMIN_NAME to nazwa użytkownika administratora zdefiniowana w pliku konfiguracji służącym do konfigurowania modułu SSO w Edge (SSO_ADMIN_NAME). Wartość domyślna to ssoadmin.
    • SSO_ADMIN_SECRET to hasło administratora określone w pliku konfiguracyjnym za pomocą właściwości SSO_ADMIN_SECRET.

      W tym przykładzie możesz pominąć wartości parametrów --port i --ssl, ponieważ moduł apigee-sso używa domyślnych wartości 9099 dla parametru --port i http dla parametru --ssl. Jeśli Twoja instalacja nie używa tych wartości domyślnych, określ je odpowiednio.
  2. Zaloguj się w interfejsie Edge, dodaj adres e-mail użytkownika maszyny do swoich organizacji i przypisz mu odpowiednią rolę. Więcej informacji znajdziesz w artykule Dodawanie kont użytkowników globalnych.

Pobieranie i odświeżanie tokenu użytkownika maszyny

Użyj interfejsu Edge API, aby uzyskać i odświeżyć tokeny OAuth 2, przekazując dane logowania użytkownika maszyny zamiast kodu dostępu.

Aby uzyskać tokeny OAuth2 dla użytkownika maszyny:

  1. Aby wygenerować początkowy token dostępu i token odświeżania, użyj tego wywołania interfejsu API:
    > 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
    '
    Wywołanie wyświetla na ekranie tokeny dostępu i odświeżania. Zapisz tokeny do późniejszego użycia.
  2. Przekaż token dostępu do wywołania interfejsu API zarządzania Edge jako nagłówek Bearer:
    > curl -H "Authorization: Bearer access_token" http://ms_IP_DNS:8080/v1/organizations/orgName

    gdzie orgName to nazwa organizacji zawierającej użytkownika maszynowego.
  3. Aby później odświeżyć token dostępu, użyj tego wywołania, które zawiera token odświeżania:
    > 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'

Tworzenie użytkownika maszynowego za pomocą interfejsu Edge Management API

Użytkownika maszynowego możesz utworzyć, korzystając z interfejsu Edge management API zamiast narzędzia apigee-ssoadminapi.sh. Aby utworzyć użytkownika maszyny:

  1. Aby uzyskać token dla użytkownika ssoadmin, czyli nazwy użytkownika konta administratora apigee-sso, użyj tego polecenia cURL:
    > 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"


    gdzie SSO_ADMIN_SECRET to hasło administratora ustawione podczas instalacji apigee-sso zgodnie z właściwością SSO_ADMIN_SECRET w pliku konfiguracyjnym.

    To polecenie wyświetla token, którego potrzebujesz do wykonania następnego wywołania.
  2. Aby utworzyć konto użytkownika maszyny, użyj tego polecenia cURL, podając token otrzymany w poprzednim kroku:
    > 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"


    W kolejnych krokach będziesz potrzebować hasła konta użytkownika maszyny.
  3. Zaloguj się w interfejsie Edge, dodaj adres e-mail użytkownika maszyny do swoich organizacji i przypisz mu odpowiednią rolę. Więcej informacji znajdziesz w artykule Dodawanie kont użytkowników globalnych.