Amazon web services 使用从AWS cognito获得的访问令牌保护Web API调用-初学者

Amazon web services 使用从AWS cognito获得的访问令牌保护Web API调用-初学者,amazon-web-services,amazon-cognito,aws-api-gateway,Amazon Web Services,Amazon Cognito,Aws Api Gateway,最后,我好不容易才让用户登录成功。我的代码如下。我还将访问令牌打印到控制台。所以一切都很好 现在,我需要访问我的AWS API网关函数,该函数名为saveHospitalInformation(也可以从https://awsxxxxxxxx/save-Hospital-Information ). 如何将从上述步骤获得的访问令牌发送到AWS API网关功能?它在页眉里吗?有人能给我看一个代码示例吗 我知道访问令牌仅在1小时内有效。那么,如果过期了,发送给客户端的错误消息是什么 我是AWS新手,可

最后,我好不容易才让用户登录成功。我的代码如下。我还将
访问令牌
打印到控制台。所以一切都很好

现在,我需要访问我的
AWS API网关
函数,该函数名为
saveHospitalInformation
(也可以从https://awsxxxxxxxx/save-Hospital-Information ). 如何将从上述步骤获得的
访问令牌
发送到
AWS API网关
功能?它在页眉里吗?有人能给我看一个代码示例吗

我知道
访问令牌
仅在1小时内有效。那么,如果过期了,发送给客户端的错误消息是什么

我是AWS新手,可以访问令牌,所以有人可以在这里指导我

我用于用户登录的代码如下所示:

   // Cognito User Pool Id
AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1: XxxxxxxxxxxXxxxxxxxxxx'
});


var authenticationData = {
    Username : 'username111',
    Password : 'password123'
};
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
var poolData = { 
    UserPoolId : 'us-east-1_XXXXXXXXX',
    ClientId : 'XXXXXXXXXXXXXXXXXXXXXX'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
    Username : 'username111',
    Pool : userPool
   };
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result) {
        console.log('22222222 1' );
        console.log('access token + ' + result.getAccessToken().getJwtToken());
    },

    onFailure: function(err) {
       // alert(err);
       console.log('ERRR IS '+ err );
    },

}); 

最近我不得不处理OAuth2身份验证,但我不知道AWS。如果您处于相同的情况,下面是一个带有令牌的HTTP请求示例: GET/resource HTTP/1.1 主机:server.example.com 授权:持票人mF_9.B5f-4.1JqM


如果有帮助的话,请提供更多有关这方面的文档

对于缺乏针对您的具体问题的示例表示歉意。有很多方法可以集成这些服务,这就是为什么您可能无法找到特定用例的示例

让我试着分部分回答你的问题:

如何将从上述步骤获得的访问令牌发送到 AWS API网关功能?它在页眉里吗?有人能展示吗 给我一个代码示例

您当前有2个选项:

  • 使用Cognito联合身份生成AWS凭据。有关创建凭据提供程序以及将该凭据提供程序与生成的Javascript SDK集成的信息,请参阅
  • 使用API网关自己验证访问令牌。我们有一个验证Cognito生成的JWT的方法
  • 在选项1中,令牌永远不会发送到API网关,只发送到Cognito标识。SDK应该管理令牌的生命周期,在当前令牌过期时获取新的访问令牌

    在选项2中,您负责将令牌传递给API。自定义授权者当前支持在传入请求上使用头来传递令牌,您可以在配置令牌时定义该令牌

    我知道访问令牌仅在1小时内有效。那么,万一 它已过期发送到客户端的错误消息是什么

    这将取决于您从上面选择的选项

    在选项1中,SDK应该为您处理这个问题。如果由于某种原因会话过期,您将收到一个错误,指示用户需要再次登录


    在选项2中,如果您返回错误,当前自定义授权人将只返回403。我们希望改善这一体验,但我无法承诺这些更新的时间表。

    感谢您的回复。我来看看。不幸的是,AWS没有一个好的文档来解释这一点,也没有一个支持团队可以提供帮助。由于我自己解决了大部分问题,因此我能够编写比亚马逊员工更好的教程。我希望在接下来的几周内这样做。谢谢。我来看看。我还有一个问题也与此有关。有时,尽管输入了正确的用户名和密码,但我还是会收到错误消息
    NotAuthorizedException:用户名或密码不正确。
    。这是虫子吗。。用户登录也需要很长时间。这也是一个bug吗?@Illep请在Cognito论坛上发布详细信息,有人可以对此进行调查。