Как настроить маркеры и коды авторизации

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

О метаданных токенов

Apigee Edge создает токены доступа OAuth, токены обновления и коды авторизации, а затем передает их аутентифицированным приложениям. Во время генерации Edge сохраняет эти токены и коды. Когда Edge получает входящие запросы API с этими токенами или кодами, он использует сохраненную информацию для авторизации запросов.

Когда Edge создает эти артефакты OAuth, он также прикрепляет к токену или коду метаданные. Например, токен доступа связан с парами "название/значение", которые определяют срок действия, связанное приложение и разработчика, а также другую информацию.

Токен доступа Edge в формате JSON выглядит следующим образом:

{
  "issued_at" : "1372170159093",
  "application_name" : "ccd1803b-b557-4520-bd62-ddd3abf8e501",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[Product1,Product2]",
  "api_product_list_json" : ["Product1", "Product2"],
  "expires_in" : "3599", //--in seconds
  "developer.email" : "joe@weathersample.com",
  "organization_id" : "0",
  "refresh_token" : "82XMXgDyHTpFyXOaApj8C2AGIPnN2IZe",
  "client_id" : "deAVedE0W9Z9U35PAMaAJYphBJCGdrND",
  "access_token" : "shTUmeI1geSKin0TODcGLXBNe9vp",
  "organization_name" : "apifactory",
  "refresh_count" : "0"
}

Добавление настраиваемых атрибутов в токены OAuth

Иногда полезно прикреплять к токену доступа специальные метаданные. Например, вы можете добавить в токен имя пользователя, информацию о его членстве в группах или ролях, идентификатор клиента, идентификатор сеанса или другую произвольную информацию. В Apigee Edge эти данные называются специальными атрибутами. После этого, когда токен проверяется в рамках запроса API, эти данные становятся доступны прокси API через переменные контекста. Прокси API может принимать точные решения об авторизации или маршрутизации на основе специальных данных, прикрепленных к токену.

Чтобы прикрепить к токену произвольные данные, используйте элемент <Attributes> в правилах OAuthV2. Вы можете указать название настраиваемого атрибута и его значение. Например, ниже приведена конфигурация правил, которая создает токен и прикрепляет к нему настраиваемый атрибут tenant_list:

<OAuthV2 name="GenerateAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>600000</ExpiresIn>
  <GenerateResponse />
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <Attributes> 
    <Attribute name="tenant_list" ref="tenant_list_retrieved_from_external_service" display="false"/>
  </Attributes>
</OAuthV2>

Вы можете указать несколько специальных атрибутов и неявно прикрепить их к коду авторизации (<Operation>GenerateAuthorizationCode</Operation>) или токену (<Operation>GenerateAccessToken</Operation>) во время создания.

Если для правила display задано значение true (по умолчанию), специальные атрибуты возвращаются в ответе, где они могут быть доступны для просмотра в приложении или переданы конечному пользователю. Если для параметра display задано значение false, специальные атрибуты хранятся в хранилище данных, но не возвращаются в сообщении с ответом. В любом случае после проверки токена персонализированные данные становятся доступны правилам в API Proxy.

Подробнее о варианте display отображения или скрытия специальных атрибутов в ответе…

Как получать настраиваемые атрибуты во время выполнения

Когда происходит вызов OAuthV2/VerifyAccessToken, Apigee Edge проверяет токен, выполняя поиск в хранилище токенов. Затем Apigee Edge заполняет набор контекстных переменных, содержащих информацию о токене. Вот некоторые из них:

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • expires_in //--в секундах
  • статус
  • область действия
  • apiproduct.name*

Если в токене есть какие-либо пользовательские атрибуты, они становятся доступны в переменной контекста с именем accesstoken.{custom_attribute}. Например, предположим, что токен был выпущен в соответствии с правилами, приведенными выше. После проверки такого токена появится дополнительная контекстная переменная accesstoken.tenant_list, содержащая значение, которое было сохранено на момент создания токена.

Затем правила или условия могут ссылаться на эти переменные и изменять поведение в зависимости от хранящихся в них значений.

Настройка и обновление настраиваемых атрибутов во время выполнения

В некоторых случаях вам может понадобиться, чтобы прокси API обновлял метаданные, связанные с токеном доступа, во время выполнения вызова API в Apigee Edge. Для этого в Apigee предусмотрены правила для получения и установки атрибутов токена. Подробнее о правиле "Получить информацию о OAuth V2" и правиле "Задать информацию о OAuth V2"…

В каждом из этих правил элемент AccessToken должен ссылаться на переменную, содержащую токен доступа.

Вы также можете использовать Edge API, чтобы обновлять настраиваемые атрибуты, прикрепленные к токену. Подробную информацию можно найти в документации по API для метода Update OAuth 2.0 Access Token (Обновить токен доступа OAuth 2.0).