Proxy Apigee云设置如何与CAS背后的本地公开服务协同工作?
我正在致力于向外部客户提供企业API。Apigee为API作为产品销售和API货币化提供了强大的功能 用例:我们有自己的内部CAS,带有LDAP实现,用于在多个应用程序之间支持SSO(单点登录)。我们一直计划在Apigee中制作代理时使用API作为后端。例如 1-为每个可用后端服务创建API代理 2-使用API代理即时制作API产品 问题陈述:当客户使用Apigee云上可用的代理层时,API路由是什么?例如 1-Apigee在客户/开发者访问代理层时对他们进行身份验证和授权 2-稍后代理付款人使用使用者密钥访问后端服务 3-后端服务使用使用者密钥通过本地CAS服务器进行身份验证(假设LDAP中存在帐户作为使用LDAP的CAS),并启动会话 4-令牌由CAS生成。。。。客户或应用程序开发人员如何在下次通话中使用该令牌?牢记下一个调用是在apigee上设置的另一个代理(反过来,它使用任何可用的后端服务) 我假设,agigee云上的代理调用如下所示 …apigee.example.org/customer/。。。。 而与本地CAS对话的后端服务调用如下所示 …example.org/customerProxy Apigee云设置如何与CAS背后的本地公开服务协同工作?,proxy,cas,restful-architecture,apigee,Proxy,Cas,Restful Architecture,Apigee,我正在致力于向外部客户提供企业API。Apigee为API作为产品销售和API货币化提供了强大的功能 用例:我们有自己的内部CAS,带有LDAP实现,用于在多个应用程序之间支持SSO(单点登录)。我们一直计划在Apigee中制作代理时使用API作为后端。例如 1-为每个可用后端服务创建API代理 2-使用API代理即时制作API产品 问题陈述:当客户使用Apigee云上可用的代理层时,API路由是什么?例如 1-Apigee在客户/开发者访问代理层时对他们进行身份验证和授权 2-稍后代理付款人使
谢谢 Apigee委托代币管理 音乐OAuth 2.0授权认证API捆绑包 此API捆绑包提供了一个由委托令牌服务和Apigee保护的基于API代理的资源示例。因此,访问令牌可以由第三方(如Google OAuth API)生成,但使用相同的令牌限制对Apigee上资源的访问 以下序列图可以更好地描述此流程的典型用途: 资料来源:
Apigee委托代币管理样本流 使用Grunt.js部署API包 此API捆绑包可以通过利用Apigee Deploy Grunt.js插件或通过任何可以导入Apigee代理捆绑包的工具进行部署 步骤1:测试oauth委托/生成肯资源 下面的命令演示如何使用Apigee OAuthV2策略存储的访问令牌发送请求,然后用于后续请求 在实际场景中,客户机永远不会设置访问令牌,但是本例让您了解如何设置将存储在Apigee中的变量,以便能够将它们保存为令牌,而不是Apigee生成的令牌。不管这些值是由客户端还是服务器应用程序生成的。更接近于生产的实现将向OAuth提供者发出请求,例如GoogleOAuth服务,然后将访问和刷新令牌作为自定义属性存储在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" : "tesla@weathersample.com",
"organization_id" : "0",
"token_type" : "BearerToken",
"client_id" : "sxnS7SddD6494Akbqk74ej4SmvvqjL0O",
"access_token" : "123456",
"organization_name" : "testmyapi",
"refresh_token_expires_in" : "0",
"refresh_count" : "0"
}
注意:生成的访问令牌与步骤1中cURL命令中发送的访问令牌相同
步骤2:测试/oauth外部/testtoken
下面的请求测试步骤1中“生成”的访问令牌对于访问受保护的资源(在我们的示例/music中)是否有效
curl\?func\=getSong\&artist\=radiohead\&fmt\=json-H'授权:承载123456'
将产生:
{
"issued_at" : "1415467907287",
"application_name" : "99d3f4de-e501-4836-9bdd-f552e1d4b923",
"scope" : "WRITE",
"status" : "approved",
"api_product_list" : "[PremiumWeatherAPI]",
"expires_in" : "1799",
"developer.email" : "tesla@weathersample.com",
"organization_id" : "0",
"token_type" : "BearerToken",
"client_id" : "sxnS7SddD6494Akbqk74ej4SmvvqjL0O",
"access_token" : "123456",
"organization_name" : "testmyapi",
"refresh_token_expires_in" : "0",
"refresh_count" : "0"
}
200行
{
"artist": "Radiohead",
"albums": [
{
"album": "Pablo Honey",
"year": "1993",
}, ...
]
}
我们是如何储存代币的?
定义apiproxy下的策略以实现此行为
OAuth-v20-Verify-Token.xml策略
注意:此策略中的以下参数:
外部授权设置为true
ExternalAccessToken设置为request.queryparam.external\u access\u令牌。请求中提供了外部访问令牌,但是可以使用外部令牌服务生成的任何其他变量设置此参数。
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>
或直接运行测试:
grunt mochaTest --env=test
来源:我想你可能会在Apigee社区网站上问这个问题,编程和相关问题也是如此,而你的问题非常广泛,而且面向架构。
grunt mochaTest --env=test