Apigee:使用现有的OAuth 2.0 id-provider添加登录

时间:2014-04-12 05:17:39

标签: apigee

我有一个现有服务的管理控制台,我希望通过使用我们公司的OAuth 2.0服务添加登录来提供访问权限。我想在这里使用Apigee,因此带有admin-console的web-app不必实现登录逻辑。

我的想法是使用AuthorizationCode流程并让Apigee管理令牌,我查看了https://github.com/apigee/api-platform-samples/tree/master/sample-proxies/oauth-login-app,但我真的无法看到我们现有的OAuth服务如何适应。

有这样的样本吗?也许使用谷歌或Facebook的OAuth服务来验证用户?

1 个答案:

答案 0 :(得分:1)

首先,Apigee需要成为管理控制台的代理。这意味着管理控制台的所有流量都必须通过Apigee。否则,您将无法执行身份验证。

其次,有两种不同的选项可以与外部oauth 2.0服务集成。 Apigee能够存储外部访问令牌并将其用作自己的令牌,或者Apigee可以生成令牌并将外部访问令牌存储为自定义属性。

关于Apigee代理如何看起来的高层次想法:

ProxyEndpoint - 暴露给连接到管理控制台的客户端的端点
TargetEndpoint(未在oauth login-app示例中显示) - 实际管理控制台的端点

在将请求发送到管理控制台之前在Apigee代理中执行的流将需要实现检查身份验证令牌的逻辑。如果它有效,请将请求传递到TargetEndpoint(管理控制台)。如果请求无效,则逐步执行调用外部oauth 2.0服务器的身份验证代码流的逻辑。这将需要以下内容:

  1. Apigee需要在外部oauth 2.0服务器上注册。
  2. 需要在此代理中构建逻辑,以支持基于重定向的授权代码grant_type流程(获取授权代码,接收授权代码,获取令牌 - >所有这些都是基于重定向并且对用户透明)。
  3. 除了#2之外,Apigee还需要将外部令牌存储为自定义属性并公开apigee令牌,或者存储外部令牌以便以后进行验证。 http://apigee.com/docs/api-services/content/authorize-requests-using-oauth-20(请参阅委派令牌管理)。存储令牌后,您需要使用另一个302重定向到初始uri +令牌进行响应,以便请求可以作为经过身份验证的请求传递到admin-console。
  4. #2并非完全直截了当,并且不会成为显示此实现的示例代理。如果oauth 2.0服务支持密码授权,则可以简化实施,但允许凭证通过apigee而不是直接通过授权服务器。