Apigee делегированного управления token
Музыка OAuth 2.0 Делегирование аутентификации API Bundle
Этот API пакет предоставляет пример API Proxy обеспеченных на основе ресурса по делегированного службы маркеров и Apigee. Таким образом, токен доступа может быть сгенерирован третьей стороной, такой как API Google OAuth, и все же использовать тот же токен, чтобы ограничить доступ к ресурсу на Apigee.
Типичное использование этого потока может быть лучше описать следующей схемой последовательности:

Источник: http://goo.gl/LgeuYw
Apigee делегированного управления token поток пробы
Развертывание API с Grunt.js
Этот набор API может быть развернут путем использования Apigee Deploy Grunt.js Plugin или с помощью любого инструмента, который может импортировать пакеты Apigee proxy.
Шаг 1: Тест OAuth делегировал/generatetoken ресурс
Следующая команда показывает, как отправить запрос с маркером доступа, который получает запасенную Apigee OAuthV2 политики, а затем используется для последующих запросов.
В реальном сценарии клиент никогда не будет устанавливать токен доступа, однако этот пример дает вам представление о том, как установить переменные, которые будут храниться в Apigee, чтобы сохранить их как токен вместо Apechee Generated token , Независимо от того, генерируются ли эти значения либо клиентом, либо серверным приложением. Реализация, более близкая к более продуктивной, сделает запрос поставщику OAuth, например службе Google OAuth, а затем сохранит токены и обновит токены в Apigee в качестве пользовательских атрибутов. См. Предложение из ответа StackOverflow.
curl https://testmyapi-test.apigee.net/oauth-delegated/generatetoken\?external_access_token\=123456 \
-d 'client_id=sxnS7SddD6494Akbqk74ej4SmvvqjL0O&grant_type=client_credentials' -v
будет производить:
{
"issued_at" : "1415467907287",
"application_name" : "99d3f4de-e501-4836-9bdd-f552e1d4b923",
"scope" : "WRITE",
"status" : "approved",
"api_product_list" : "[PremiumWeatherAPI]",
"expires_in" : "1799",
"developer.email" : "[email protected]",
"organization_id" : "0",
"token_type" : "BearerToken",
"client_id" : "sxnS7SddD6494Akbqk74ej4SmvvqjL0O",
"access_token" : "123456",
"organization_name" : "testmyapi",
"refresh_token_expires_in" : "0",
"refresh_count" : "0"
}
Примечания: маркер доступа генерируется таким же, как маркер доступа, отправленный в локоне команды с шага 1.
Шаг 2: Тест/oauth- external/testtoken
Следующие запросы проверяют, что токен доступа, «сгенерированный» на шаге 1, действителен для доступа к защищенному ресо urce, в нашем случае/музыка.
локон https://testmyapi-test.apigee.net/oauth-delegated/music \ FUNC \ = getSong \ & художник \ = Radiohead \ & FMT \ = -H JSON 'Authorization: Bearer 123456'? будет производить:
200 OK
{
"artist": "Radiohead",
"albums": [
{
"album": "Pablo Honey",
"year": "1993",
}, ...
]
}
Как нам удалось сохранить токен?
Политики под apiproxy определены для реализации этого поведения.
OAuth-v20-Verify-Token.xml политика
Обратите внимание на следующие параметры параметров в этой политике:
ExternalAuthoriation набор для истинного ExternalAccessToken набора для request.queryparam.external_access_token. В запросе предоставляется токен внешнего доступа, однако этот параметр может быть установлен с любой другой переменной, сгенерированной из внешней службы токенов. StoreToken установлен в true. В противном случае токен никогда не будет сохранен.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="OAuth-v20-Verify-Token">
<DisplayName>OAuth v2.0 1</DisplayName>
<FaultRules/>
<Properties/>
<Attributes/>
<ExternalAuthorization>true</ExternalAuthorization>
<Operation>GenerateAccessToken</Operation>
<SupportedGrantTypes> <!-- Optional -->
<GrantType>client_credentials</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="true"/>
<ExternalAccessToken>request.queryparam.external_access_token</ExternalAccessToken>
<StoreToken>true</StoreToken>
<Tokens/>
</OAuthV2>
Присвоить-Message-Set-Variables.xml политики
Эта политика устанавливает переменную, необходимую для включения внешней авторизации.
<AssignVariable>
<Name>oauth_external_authorization_status</Name>
<Value>true</Value>
</AssignVariable>
Запуск тестов через Мокко
Тесты могут быть выполнены либо развернув API с помощью этой команды:
grunt --env=test --username=$ae_username --password=$ae_password --debug
или выполнение тестов непосредственно:
grunt mochaTest --env=test
Источник : My git repo.
Думая, что вам, возможно, повезло задать этот вопрос на сайте сообщества Apigee - это для программирования и смежных вопросов, в то время как ваш довольно широкий и ориентированный на архитектуру. – brandonscript