AWS有API Gateway,这使得设置,管理和监控API变得非常简单。 但是,您可以为资源方法设置的安全授权设置仅限于AWS-IAM(根据我的理解,这是一个内部vpn角色?)。
似乎我对这个主题的研究一直指向我设置AWS Cognito pool,但是当我在我的aws控制台中配置一个时,提供者的选项是:Amazon
,{ {1}},Facebook
,Google+
,Twitter
和OpenID
。我想,在那种情况下,我会使用Custom
?然后将我自己的EC2实例设置为OAuth2身份验证提供程序服务器。
鉴于Oauth2如今如此受欢迎,令我惊讶的是,没有针对此的AWS服务;看起来他们已经走了整个OpenId或SAML路线。令我惊讶的是,缺乏有关如何在云中快速设置Oauth2提供程序的指南。
任何帮助都将不胜感激。
答案 0 :(得分:30)
(1)您是否要在API网关上实施OAuth 2.0端点(authorization endpoint和token endpoint)?换句话说,您真的想在API网关上实现OAuth 2.0服务器(RFC 6749)吗?
(2)或者,您是否希望通过OAuth 2.0 access token保护在API网关上实现的Web API?
这两者完全不同。
因为您似乎想要选择OAuth 2.0而不是AWS-IAM,我想您想要做的是(2)。如果是,您可以在此处找到示例: Amazon API Gateway + AWS Lambda + OAuth
<小时/> 更新于2016年4月6日
2016年2月11日,AWS Compute Blog,&#34; Introducing custom authorizers in Amazon API Gateway&#34;的博客条目宣布已将自定义授权程序引入Amazon API网关。由于这种机制,在Amazon API Gateway上构建的API可以将客户端应用程序提供的承载令牌(例如OAuth或SAML令牌)的验证委托给外部授权人。
如何使用新机制Custom Authorier保护OAuth访问令牌在Amazon API Gateway上构建的API在&#34; Amazon APi Gateway Custom Authorizer + OAuth&#34;中描述。
供参考:
OAuth 2.0是一种授权机制,而不是身份验证机制。但人们经常使用OAuth 2.0进行身份验证,并且有许多使用OAuth 2.0进行身份验证的软件库和服务。
Cognito(身份)是与身份验证相关的解决方案,而非授权。
Cognito中的自定义是指定OpenID Connect Providers的位置。 OpenID Connect是一种身份验证解决方案。让事情变得复杂的是&#34; OpenID Connect建立在OAuth 2.0&#34;之上。有关详细信息,请参阅OpenID Connect site。
答案 1 :(得分:1)
AWS API网关支持Amazon Cognito OAuth2范围now。您可以创建Amazon Cognito用户池授权者并将其配置为Authorisation method in API Gateway.,以便利用OAuth范围,您需要使用Cognito用户池配置resource server and custom scopes。 您可以在Cognito用户池中为多个app clients配置不同的范围,或在从用户池对用户进行身份验证时从应用程序代码请求不同的范围。根据{{3}}中从Cognito收到的范围,API Gateway将允许/拒绝API的调用者。 access token
提供了实现此功能的分步指南