我尝试使用AWS API Gateway,Lambda和Cognito设置测试API,以确保访问安全。由于我是AWS世界的新手,我不知道如何创建一个"登录"使用例如request library向AWS服务发布请求 我想在客户端我首先必须通过Cognito和AWS Api登录,然后使用我获得的信息创建一个签名请求,如下所述:http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html?
如果我走错了路,请告诉我并指出正确的方向:)
答案 0 :(得分:5)
序: 我将解释与Cognito的Google+集成流程,对其他人来说几乎是一样的。我将使用node.js(javascript),之后您可以让您的用户通过Google进行身份验证,并由IAM和Cognito授权访问API网关。
Cognito是一种联合登录服务,它可以让您同步"配置"您的移动/网络应用程序。首先,您必须与身份提供商设置cognito,比如说Google+。为此:
code
的回调网址,使用该代币var params = { IdentityPoolId: setting.POOL_ID, Logins: { 'accounts.google.com': google_token // Coming from Google OAuth2 } } // Get Id from Cognito cognitoIdentity.getId(params, resolverFunction);
IdentityId
(您的Google经过身份验证的用户:var params = { IdentityId: IdentityId, Logins: { 'accounts.google.com': google_token // Coming from Google OAuth2 } } cognitoIdentity.getCredentialsForIdentity(params, resolverFunction)
快速笔记和单挑:
希望它很清楚,或者至少它会给你一个开始的方向。
答案 1 :(得分:3)
使用API网关的一个好处是,您可以自动generate SDKs为您的API,它可以轻松地与Cognito凭据集成。这样可以免除自己实施SigV4 auth的麻烦。
以下是一些使用Cognito凭据和生成的JavaScript SDK的简单示例:
答案 2 :(得分:0)
正如Ryan所说,最好的方法是通过API Gateway SDK。使用此堆栈的缺点是,与现成的前端工具集成变得更加困难。您不能再直接向REST端点请求,您将需要通过SDK。
你肯定会失去一些开发的简易性,因为你不能只在你的终端上打一些像ngResource这样的东西并且称它为一天。您必须自己设置对服务层中每个AWS端点的调用。