Использование OAuth2 для доступа к Edge API

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Apigee Edge позволяет выполнять вызовы Edge API, аутентифицированные с помощью токенов OAuth2. Поддержка OAuth2 включена по умолчанию в Edge для учетных записей Cloud. Если вы используете Edge для частного облака, вы не сможете использовать OAuth2 без предварительной настройки SAML или LDAP.

Как работает OAuth2 (с API Apigee Edge)

Для вызовов API Apigee Edge требуется аутентификация, чтобы мы могли быть уверены, что вы тот, за кого себя выдаете. Для вашей аутентификации нам необходимо отправить токен доступа OAuth2 вместе с вашим запросом на доступ к API.

Например, если вы хотите получить подробную информацию об организации в Edge, вы должны отправить запрос на URL-адрес, подобный следующему:

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

Но вы не можете просто отправить этот запрос, не сообщив нам, кто вы. В противном случае любой сможет увидеть сведения о вашей организации.

Здесь на помощь приходит OAuth2: для вашей аутентификации нам нужно, чтобы вы также отправили нам токен доступа в этом запросе. Токен доступа сообщает нам, кто вы, поэтому мы можем быть уверены, что вам разрешено просматривать сведения об организации.

К счастью, вы можете получить токен, отправив свои учетные данные в службу Edge OAuth2. Служба отвечает токенами доступа и обновления.

Поток OAuth2: первоначальный запрос

На следующем изображении показан поток OAuth2 при первом доступе к Edge API:

Поток OAuth: первый запрос
Рисунок 1. Процесс OAuth: первый запрос

Как показано на рис. 1 , когда вы делаете первоначальный запрос к Edge API:

  1. Вы запрашиваете токен доступа. Вы можете сделать это с помощью Edge API , acurl или get_token . Например:
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
  2. Служба Edge OAuth2 отвечает токеном доступа и печатает его на stdout ; например:
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    Утилиты acurl и get_token автоматически сохраняют токены доступа и обновления в ~/.sso-cli (токен обновления не записывается в stdout ). Если вы используете службу Edge OAuth2 для получения токенов, вам необходимо сохранить их для дальнейшего использования самостоятельно. .

  3. Вы отправляете запрос в Edge API с токеном доступа. acurl автоматически прикрепляет токен; например:
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

    Если вы используете другой HTTP-клиент, обязательно добавьте токен доступа. Например:

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. Edge API выполняет ваш запрос и обычно возвращает ответ с данными.

Поток OAuth2: последующие запросы

При последующих запросах вам не нужно обменивать свои учетные данные на токен. Вместо этого вы можете просто включить уже имеющийся у вас токен доступа, если срок его действия еще не истек:

Поток OAuth: последующие запросы
Рисунок 2. Процесс OAuth: последующие запросы

Как показано на экране 2 , если у вас уже есть токен доступа:

  1. Вы отправляете запрос в Edge API с токеном доступа. acurl автоматически прикрепляет токен. Если вы используете другие инструменты, токен необходимо добавить вручную.
  2. Edge API выполняет ваш запрос и обычно возвращает ответ с данными.

Поток OAuth2: когда истекает срок действия вашего токена доступа

Когда срок действия токена доступа истечет (через 12 часов), вы можете использовать токен обновления, чтобы получить новый токен доступа:

Поток OAuth: обновление токена доступа
Рисунок 3. Процесс OAuth: обновление токена доступа.

Как показано на экране 3 , когда срок действия вашего токена доступа истек:

  1. Вы отправляете запрос в Edge API, но срок действия вашего токена доступа истек.
  2. Edge API отклоняет ваш запрос как неавторизованный.
  3. Вы отправляете токен обновления в службу Edge OAuth2. Если вы используете acurl , это делается автоматически.
  4. Служба Edge OAuth2 отвечает новым токеном доступа.
  5. Вы отправляете запрос в Edge API с новым токеном доступа.
  6. Edge API выполняет ваш запрос и обычно возвращает ответ с данными.

Получите жетоны

Чтобы получить токен доступа, который вы можете отправить в Edge API, вы можете использовать следующие утилиты Apigee в дополнение к такой утилите, как curl :

  • Утилита get_token : обменивает ваши учетные данные Apigee на токены доступа и обновления, которые вы можете использовать для вызова Edge API.
  • Утилита acurl : предоставляет удобную оболочку для стандартной команды curl . Создает HTTP-запросы к Edge API, получает токены доступа и обновления из get_token и передает токен доступа в Edge API.
  • Конечные точки токенов в службе Edge OAuth2 . Обменяйте свои учетные данные Apigee на токены доступа и обновления посредством вызова API Edge.

Эти утилиты обменивают учетные данные вашей учетной записи Apigee (адрес электронной почты и пароль) на токены со следующей продолжительностью:

  • Срок действия токенов доступа истекает через 12 часов.
  • Срок действия токенов обновления истекает через 30 дней.

В результате после успешного выполнения вызова API с помощью acurl или get_token вы можете продолжать использовать пару токенов в течение 30 дней. По истечении срока действия необходимо повторно ввести свои учетные данные и получить новые токены.

Доступ к Edge API с помощью OAuth2

Чтобы получить доступ к Edge API, вы отправляете запрос к конечной точке API и включаете токен доступа. Вы можете сделать это с помощью любого HTTP-клиента, включая утилиту командной строки, такую ​​как curl , пользовательский интерфейс на основе браузера, например Postman, или утилиту Apigee, такую ​​как acurl .

Доступ к Edge API с помощью acurl и curl описан в следующих разделах.

Используйте акерл

Чтобы получить доступ к Edge API с помощью acurl , ваш первоначальный запрос должен включать ваши учетные данные. Служба Edge OAuth2 отвечает токенами доступа и обновления. acurl сохраняет токены локально.

При последующих запросах acurl использует сохраненные токены в ~/.sso-cli , поэтому вам не нужно снова включать свои учетные данные до истечения срока действия токенов.

В следующем примере показан первоначальный запрос acurl , который получает сведения об организации «ahamilton-eval»:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

Помимо получения сведений об организации, в этом примере также показан второй запрос, который получает список политик в прокси-сервере API «helloworld». Второй запрос использует сокращение «o» для слова «организации» в URL-адресе.

Обратите внимание, что acurl автоматически передает токен доступа при втором запросе. Вам не нужно передавать свои учетные данные пользователя, как только acurl сохранит токены OAuth2. Он получает токен из ~/.sso-cli для последующих вызовов.

Дополнительные сведения см. в разделе Использование acurl для доступа к Edge API .

Используйте локон

Вы можете использовать curl для доступа к Edge API. Для этого вам необходимо сначала получить токены доступа и обновления. Вы можете получить их с помощью такой утилиты, как get_token или службы Edge OAuth2. .

После того как вы успешно сохранили свой токен доступа, вы передаете его в заголовке Authorization своих вызовов Edge API, как показано в следующем примере:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

Токен доступа действителен в течение 12 часов после его выдачи. После истечения срока действия токена доступа токен обновления можно использовать в течение 30 дней для выдачи другого токена доступа без необходимости ввода учетных данных. Apigee рекомендует запрашивать новый токен доступа только после истечения срока действия токена ссылки, а не вводить учетные данные и делать новый запрос при каждом вызове API.

Срок действия токена

По истечении срока действия вашего токена доступа вы можете использовать токен обновления, чтобы получить новый токен доступа без повторной отправки своих учетных данных.

Способ обновления токена доступа зависит от того, какой инструмент вы используете:

  • acurl : Никаких действий не требуется. acurl автоматически обновляет токен доступа, когда вы отправляете запрос, содержащий устаревший.
  • get_token : вызовите get_token , чтобы обновить токен доступа.
  • Служба Edge OAuth2 : отправьте запрос, который включает в себя:
    • Обновить токен
    • Для параметра формы grant_type установлено значение «refresh_token».

OAuth2 для пользователей компьютеров

Вы можете использовать утилиты acurl и get_token для создания сценариев автоматического доступа к API Edge с аутентификацией OAuth2 для пользователей компьютеров. В следующем примере показано, как использовать get_token для запроса токена доступа, а затем добавить значение токена в вызов curl :

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

Альтернативно вы можете объединить запрос токена и вызов curl с помощью утилиты acurl . Например:

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

В обоих примерах установка значения -m в пустую строку не позволит пользователю компьютера запрашивать код MFA.