具有无服务器框架的lambda AWS中的授权代码授予

时间:2018-12-07 05:39:48

标签: amazon-web-services amazon-cognito serverless-framework

我正在使用Serverless Framework开发lambda服务,该服务负责登录Cognito。

const aws_cognito = require('amazon-cognito-identity-js');

const authDetails = new aws_cognito.AuthenticationDetails({
    Username: usuario,
    Password: password
});

const poolData = {
    UserPoolId: XXXXXXXX,
    ClientId: XXXXXXX
};

const userPool = new aws_cognito.CognitoUserPool(poolData);

const userData = {
    Username: usuario,
    Pool: userPool
};

const cognitoUser = new aws_cognito.CognitoUser(userData);

cognitoUser.authenticateUser(authDetails, {
    onSuccess: () => {
        console.log('OK');
    },
    onFailure: (err) => {
        console.log(err);
    }
});

出于商业原因,我需要模拟Cognito生成的UI。系统应支持OAUTH流:“授权码授予”和“隐式授予”。

“隐式授予”工作正常,但是我无法获得“授权码授予”的授权码。 是否可以通过AWS开发工具包获取授权代码?

谢谢!

1 个答案:

答案 0 :(得分:-1)

我了解您可以在不使用托管用户界面的情况下实现“隐式流程”,但是您想知道如何实现“授权授权流程”。

  

您可以在Web应用程序中使用任何HTTP客户端来发送HTTP   向Cognito身份验证端点请求以通过代码授予流程。   这些是REST API端点,并且不需要SDK即可执行   操作。

请参阅以下步骤以了解使用API​​调用的流程:

1)向AUTHORIZATION端点发出GET请求,以接收XSRF令牌[1]。 发出此请求时,您将需要传递必需的参数。必需的参数是response_type(代码或令牌),client_id和redirect_uri。根据您的用例,由于您使用的是“授权授予流”,因此需要将response_type的值设置为“ code”。 发出此请求后,您将在响应中收到一个Cookie的XSRF令牌。下一步将需要此XSRF令牌。

2)向LOGIN端点发出POST请求以接收令牌[2]。 您需要传递进行授权请求时提到的相同必需参数。 连同所需的参数一起,您可以传递POST正文参数:CSRF令牌,用户名和密码。 提出请求后,您将能够在响应中接收令牌。它还在响应中提供了Cookie,您可以稍后使用该Cookie来请求刷新令牌。

3)向TOKEN端点发出POST请求,以接收刷新令牌[3]。 发出请求时,我们需要传递所需的参数。必需的请求参数是grant_type和client_id。 成功提出请求后,您将在响应中收到一组新的令牌。

============

参考文献:

[1]授权端点:http://docs.aws.amazon.com/cognito/latest/developerguide/authorization-endpoint.html

[2]登录端点:http://docs.aws.amazon.com/cognito/latest/developerguide/login-endpoint.html

[3]令牌端点:http://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html

相关问题