简体   繁体   English

如果我已经有了 aws-sdk (javascript),我还需要 amazon-cognito-identity-js 吗?

[英]Do I need amazon-cognito-identity-js if I already have the aws-sdk (javascript)?

I have a javascript project where I use the aws-sdk.我有一个使用 aws-sdk 的 javascript 项目。 No I want to use amazon-cognito-identity-js .不,我想使用amazon-cognito-identity-js On the page it says:页面上写着:

Note that the Amazon Cognito AWS SDK for JavaScript is just a slimmed down version of the AWS Javascript SDK namespaced as AWSCognito instead of AWS.请注意,Amazon Cognito AWS SDK for JavaScript 只是 AWS Javascript SDK 命名空间的精简版,命名为 AWSCognito 而不是 AWS。 It references only the Amazon Cognito Identity service.它仅引用 Amazon Cognito Identity 服务。

and indeed, I can for example create CognitoIdentityServiceProvider with:事实上,例如,我可以使用以下命令创建 CognitoIdentityServiceProvider:

CognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();

But how do I do thinks like authenticate a user?但是我该怎么做,比如对用户进行身份验证? According to the amazon-cognito-identity-js documentation:根据amazon-cognito-identity-js文档:

authenticationDetails = new CognitoIdentityServiceProvider.AuthenticationDetails({Userame: ..., Password: ...});
cognitoUser.authenticateUser(authenticationDetails, ...)

But the CognitoIdentityServiceProvider object does not have a AuthenticationDetails property.但是 CognitoIdentityServiceProvider 对象没有 AuthenticationDetails 属性。

Do I have to do something different when I use the aws-sdk instead of amazon-cognito-identity-js?当我使用 aws-sdk 而不是 amazon-cognito-identity-js 时,我是否必须做一些不同的事情?

Or is my assumption wrong, and I need both, the aws-sdk and amazon-cognito-identity-js?或者我的假设是错误的,我同时需要 aws-sdk 和 amazon-cognito-identity-js?

No, you don't.不,你没有。 You can login using aws-sdk like this:您可以像这样使用 aws-sdk 登录:

const cognito = new aws.CognitoIdentityServiceProvider({ region });
cognito.adminInitiateAuth({
  AuthFlow: 'ADMIN_NO_SRP_AUTH',
  ClientId: clientId,
  UserPoolId: poolId,
  AuthParameters: {
    USERNAME: email,
    PASSWORD: password,
  },
});

For userName password authentication, it needs to have ADMIN_NO_SRP_AUTH.用户名密码认证需要ADMIN_NO_SRP_AUTH。 I also added function to handle err and success.我还添加了处理错误和成功的功能。 For more details about response and token sent in data, you can check was reference.有关数据中发送的响应和令牌的更多详细信息,您可以查看参考。

const cognito = new AWS.CognitoIdentityServiceProvider();
    cognito.adminInitiateAuth({
        AuthFlow: 'ADMIN_NO_SRP_AUTH',
        ClientId: 'clientId',
        UserPoolId: 'poolId'
        AuthParameters: {
            USERNAME: 'userName',
            PASSWORD: 'password',
        },
    }, function(err, data) {
        if (err) {
            console.log(err, err.stack);
        }
        else {
            console.log(data);
        }
    });

for any coming in the future对于未来的任何到来

the following is what i did for register and login using以下是我为注册和登录所做的使用

    private cognito = new AWS.CognitoIdentityServiceProvider();
  • register:登记:

     public async register(event) { try { if(!this.validator.isObjectNotEmpty(event.body)){ throw new Error("you have to include body to insert into DB !!"); } const usermodel = event.body; if (this.validator.isEmailNotValid(usermodel)) { throw new Error("Not Valid username or password"); } const email = usermodel.email.toLowerCase(); const password = usermodel.password; const createUserParams = { UserPoolId: Cognito_User_Pool, // From Cognito dashboard 'Pool Id' Username: email, MessageAction: "SUPPRESS", // Do not send welcome email TemporaryPassword: password, }; const user = await this.cognito.adminCreateUser(createUserParams).promise(); this.logger.info("created user: ",user); const initiateAuthParams = { AuthFlow: "ADMIN_USER_PASSWORD_AUTH", ClientId: Cognito_User_Pool_Client, UserPoolId: Cognito_User_Pool, AuthParameters: { USERNAME: email, PASSWORD: password } }; const challengesResponse = await this.cognito.adminInitiateAuth(initiateAuthParams).promise(); this.logger.info("challengesResponse: ",challengesResponse); const userPasswordParams = { Password: password, UserPoolId: Cognito_User_Pool, Username: email, Permanent: true }; return this.cognito.adminSetUserPassword(userPasswordParams).promise(); } catch (error) { console.log("error: ", error); throw error; } }

  • login登录

    public async login(event) { try { this.logger.info("login - event: ",JSON.stringify(event)); this.logger.info("register - Cognito_User_Pool: ",Cognito_User_Pool); this.logger.info("register - Cognito_User_Pool_Client: ",Cognito_User_Pool_Client); if(!this.validator.isObjectNotEmpty(event.body)){ throw new Error("you have to include body to insert into DB !!"); } const usermodel = event.body; if (this.validator.isEmailNotValid(usermodel)) { throw new Error("Not Valid username or password"); } const email = usermodel.email.toLowerCase(); const password = usermodel.password; const initiateAuthParams = { AuthFlow: "ADMIN_USER_PASSWORD_AUTH", ClientId: Cognito_User_Pool_Client, UserPoolId: Cognito_User_Pool, AuthParameters: { USERNAME: email, PASSWORD: password } }; return await this.cognito.adminInitiateAuth(initiateAuthParams).promise(); } catch (error) { console.log("error: ", error); throw error; } }

the login function return response like this:登录函数返回这样的响应:

   "tokenObj": {
    "ChallengeParameters": {},
    "AuthenticationResult": {
        "AccessToken": "eyJraWQiOiI1ZFN5R0tEUFE2WnhTbzJ4N01QTXpxaVRPNXZoK3p5NkJaOFZhRzV1M0Z3PSIsImFsZyI6IlJTMjU2In0.eyJvcmlnaW5fanRpIjoiMGYzY2RmZTItZTM3Zi00NGRiLWJiMWQtMDIzYjFiZTdlZGVjIiwic3ViIjoiZWJjN2M4YzctZjllYS00MTMxLTgxNDQtNjdkM2ZmYzg1ZTdlIiwiZXZlbnRfaWQiOiJhYWJhNzgyZi1iZTVhLTQxMjItYjljYS0yNjg5NTY2ZDVkMTgiLCJ0b2tlbl91c2UiOiJhY2Nlc3MiLCJzY29wZSI6ImF3cy5jb2duaXRvLnNpZ25pbi51c2VyLmFkbWluIiwiYXV0aF90aW1lIjoxNjM4MTI0NTY3LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtd2VzdC0yLmFtYXpvbmF3cy5jb21cL3VzLXdlc3QtMl9vVmFnb3hFd0wiLCJleHAiOjE2MzgxMjgxNjcsImlhdCI6MTYzODEyNDU2NywianRpIjoiZjE0MTBjMGEtOWM4ZS00YjMzLWJkMjEtNmQ1ZDIwYzJiNDU5IiwiY2xpZW50X2lkIjoiNnVvc2dxNzNtYjFlYmk5c3BnbDV0N282Z2QiLCJ1c2VybmFtZSI6ImViYzdjOGM3LWY5ZWEtNDEzMS04MTQ0LTY3ZDNmZmM4NWU3ZSJ9.4vswc6-ei6SFlbN0k_C8PAtmEK294oFfylYZW3hhmHqMT49d_JWdDPR8XgA7n5cLqtLJsiG4PVh9SyxdirpUTmC0yra2GZejNWP8eVHG9-JUq_xXQ81a8AYEb1KZJBAv0j2F1ZLuCFaiFvbOBFEGSlJXp4e2bLz-NWlSbEAUbxZV5BKrRmZEeXJUxw_DO5R30SG1D2qcOn_1mnbdfTH-W0ZMuuMJsHWQBsO7QEtyMI62XG35WRDijzzMr6ekbLyIQ7J77dYcsmTdR6S5nTNWE1yrGYtkdxk2x35nYob06PAWdnWL5OK2G1aiJ97BMvM65VtjX8VQZbAoalIII-PbCA",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.FKN-KM415xH-TioTkKjmoy_NV1AssBq9GlkweHAK7TuYzMeI_qMfeL00Qv6MiOPFMJ6UG7cLKfJjkdyI1vK09p9lk5_wor3FoCX1Dvt3DK3SKzeyqW6ULQL1IQmNunPhpC3sARom0q74YxSaQKdF_6PgDjNnf0-aI1XGkZYZUw69BZGQDVobTx8nR_Lf6srF622s0JuhaClDfvIgqjZun7AIFlxgNUKL6uuMgmSrRJm7GvAqAnTQpmQD2sdz6D3fWeoVja8LRpc_QMbZPhjZmOoRrQJ3VA-m0M0TsNMvQSw6px-WS-hMUH4RFeFasrbmoiUKIU8-MXltyPVltoy0qg.dHBgjs1NAOAROzD6.vi7DzrqzLkuHGuuGY1vNZaYmdDp0-EliwxTtEOaMboVlMCm9KZv0tU06ovQ9Z2CbplqJdEaAu-YZSG3Oeagqj5JJ2-739C0yvA0J_qE2Ehn5gCUMuiPPOjakIczOcI8wcRItsTGqt1GFmyq4DSnX-pjc9GG2QWpgmcsoDyxodIv1wTu7YN15cGK0YN_xSKolcCn04gCzqXCDkQyUqX-Sr7QqD2o-aQC1ynmKz1tJGxRM3I6rzbcRZkNvUK02wSIUMeY05hJNAdKBItIE0t45Sk5_EV3mzLgebC39Q6z-kRKNQwhyQKrcXg71aRJGjD3HH61VEoops4wcgRCmNnI7u-9JjJic_SDU_Fw-9W1L8BxZZKPsJrjOvJroDFc1xX2njgeivo6ZpRWTg3nQphMTqJFSYHnWcEmw3EW1uUhN7e1J2bdGuebW40Opf5zMXo2V4-OBI3UMxTOVZEPit4g3yLDHQDAfPZllPPRf5H8Kf1Qe54fEq77sKb32I5PH7t-7xQ79iE5KX6BZjsLjwHMAlGNtS7WSE-U0yAsjUFFH8pA7eYR5ysz3o9L7jJsNCyNb06YU_QX5mozGlspLMNs4qpUcWkFGhSNG6qTRMREpzRfELU82Dc-LirJ1425zPQNsQV1CGGtlDoXVA-RCIgnMG1hslfpIllKm_IH-5yyPMfH2UFdr7jdRjt9crFyFu9ktGkHjnAqH_ZUcueL0q_vrIqmkGcBcrQQRY9jCSC4VNeGhKe9ecJciAHUCktkZuut5yI0De0hXANoaoxeIucJlox57nxHnQTD0Q0LEuXvfqG9M9sNdB4GGrt1rYR58ZWa8zc5udoKDMxvrb6GEeDI1co2mLEt3XghjcJBJqB8nqwofXZDxiDSXQ53R9L5U8wDlxhxZxPMDKFL6wu4gqDjw4m60R8mOvfOI2Gz_yelqfk5CxD6Ts_HVbv9TRbsV0adQ4S8n5Cktf5miWUtFCOktruS2_fKfB6TF1yzisgxQpJFD7B1qdTcBu0N82KgHrljoBlVKiwGdalL52H-cJkNkagZIBQYXvlvkBrbsSNAp1CeUiqXbddHku47RNjXSPUMN1aoHdEL14_7zbaPYBMxgEsmqjP67B45QKmTyDDsOkf8aSdAWYFKvj3c_4Cn_LczLU-YcuzE4UZvd6BQK70MiKBIsd3DU4rdKTDjAsN73mJ_U-_8r34jocny4rzbO_NostPjgqUugoO2bGhfr_PUgXb7sm_wrKlvjFnUcOLpQSBxlZL_z25e8vZokRn4QiNa83_VG6xyp77-c_DQqLC3RdwXOyRmCEXkM2D10cBNQpkAzCBMyP9FO3mJZcQ.aAJlWM76hqlRprKY8P_Qmw",
        "IdToken": "eyJraWQiOiJoWmpBMXl1d2JjT1lyNks5dnhQc2ZKVDhXSHRrYm51WmZlTURlK0dBbWR3PSIsImFsZyI6IlJTMjU2In0.eyJvcmlnaW5fanRpIjoiMGYzY2RmZTItZTM3Zi00NGRiLWJiMWQtMDIzYjFiZTdlZGVjIiwic3ViIjoiZWJjN2M4YzctZjllYS00MTMxLTgxNDQtNjdkM2ZmYzg1ZTdlIiwiYXVkIjoiNnVvc2dxNzNtYjFlYmk5c3BnbDV0N282Z2QiLCJldmVudF9pZCI6ImFhYmE3ODJmLWJlNWEtNDEyMi1iOWNhLTI2ODk1NjZkNWQxOCIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjM4MTI0NTY3LCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtd2VzdC0yLmFtYXpvbmF3cy5jb21cL3VzLXdlc3QtMl9vVmFnb3hFd0wiLCJjb2duaXRvOnVzZXJuYW1lIjoiZWJjN2M4YzctZjllYS00MTMxLTgxNDQtNjdkM2ZmYzg1ZTdlIiwiZXhwIjoxNjM4MTI0ODY3LCJpYXQiOjE2MzgxMjQ1NjcsImp0aSI6ImRmMzVlZWQ1LWZjNGItNDBlZS1hYWEwLTYxNTViZWNiNjIyNyIsImVtYWlsIjoidGVzdDJAdGVzdC5jb20ifQ.L9nNSlcQakRfVpAo-bf9jnXFrhov8iD9j3R2UI7x5eUT42OBrvSdEk3Y2JtFKQt1FpxBFLqtWCRyY0Wxlcq3MzZE04zIFBC02WmV24vF1QS9TxpBYAm8NkyNoW-7Lqe7CIWhK_DHMxSRpzo87txmwpID6xwd9JOlZG04L76hkXr0_2JgM2KuvB0lKL0v4heHK8e2ht_VuKBPNpVvMIbIA2xN22LRhivfG8EMeHmF3jhhQYggi1Pczb2WEviPUqebmLhdvjJpHC9OMVhvN4GMcr0JVv-GepxSCrNSFoXPDNZaznJbDJW0Zt3xY9bWek_l62v1Wm0a1h7V7nxw8a0Csw"
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 SDK amazon-cognito-identity-js问题 - Problem with SDK amazon-cognito-identity-js AWS Cognito:生成令牌并在使用 amazon-cognito-identity-js SDK 刷新后 - AWS Cognito: Generate token and after refresh it with amazon-cognito-identity-js SDK NodeJ的amazon-cognito-identity-js signUp成功但未返回结果 - NodeJs amazon-cognito-identity-js signUp succeeding without returning a result 如何使用AWS-SDK for Javascript搜索我的CloudSearch域? - How do i search my CloudSearch domain using AWS-SDK for Javascript? 如何在没有Amazon Cognito的情况下使用AWS S3? - How do I use AWS S3 without Amazon Cognito? 带有aws-sdk的Amazon SQS receiveMessage Stall - Amazon SQS with aws-sdk receiveMessage Stall 如何在节点 js lambda 代码(aws-sdk)中获取旧的 cloud-watch 日志 - How can I get old cloud-watch logs in node js lambda code (aws-sdk) 如何捕获在我的调用堆栈之外发生的 aws-sdk 错误? - How do I catch aws-sdk errors that occur outside of my call stack? 我是否需要将 AWS SDK 导入 lambda - Do I need to import AWS SDK into lambda Dynamoose .update无法像AWS javascript SDK一样工作。 我需要使用SDK来更新项目吗? - Dynamoose .update not working like the AWS javascript SDK. Do I need to use the SDK to update items?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM