কীভাবে ব্যবহারকারীর স্থিতি পরিবর্তন করবেন?


97

এডাব্লুএস কগনিটো ব্যবহার করে, আমি পরীক্ষার উদ্দেশ্যে ডামি ব্যবহারকারী তৈরি করতে চাই।

এরপরে আমি এ জাতীয় ব্যবহারকারী তৈরি করতে AWS কনসোল ব্যবহার করি তবে ব্যবহারকারীর স্ট্যাটাস সেট করা আছে FORCE_CHANGE_PASSWORD। সেই মান সহ, এই ব্যবহারকারীর প্রমাণীকরণ করা যাবে না।

এই স্থিতি পরিবর্তন করার কোন উপায় আছে?

সিএলআই থেকে ব্যবহারকারী তৈরি করার সময় একই আচরণ আপডেট করুন


4
ব্যবহারকারীর উত্তর @ জো
দানিলিস

উত্তর:


15

দুঃখিত আপনি অসুবিধা হচ্ছে। আমাদের এক ধাপের প্রক্রিয়া নেই যেখানে আপনি কেবল ব্যবহারকারী তৈরি করতে পারেন এবং তাদের সরাসরি প্রমাণীকরণ করতে পারেন। আমরা ভবিষ্যতে এটি পরিবর্তন করতে পারি যেমন ব্যবহারকারীর দ্বারা ব্যবহারকারীদের সরাসরি ব্যবহারযোগ্য এমন পাসওয়ার্ড সেট করার অনুমতি দেওয়া। আপাতত, আপনি যখন ব্যবহারকারীদের AdminCreateUserঅ্যাপ্লিকেশনটি ব্যবহার করে বা সাইন আপ করে ব্যবহারকারী তৈরি করেন, তখন অতিরিক্ত পদক্ষেপের প্রয়োজন হয়, হয় ব্যবহারকারীদের লগইন করার সময় পাসওয়ার্ড পরিবর্তন করতে বাধ্য করা বা ব্যবহারকারীদের অবস্থার পরিবর্তন করতে ইমেল বা ফোন নম্বর যাচাই করা উচিত CONFIRMED


4
আপাতত, আপনি যখন অ্যাডমিনক্রিয়েট ব্যবহারকারী ব্যবহার করে বা অ্যাপ্লিকেশন দিয়ে ব্যবহারকারীদের সাইন আপ করার মাধ্যমে ব্যবহারকারী তৈরি করেন, তখন অতিরিক্ত পদক্ষেপের প্রয়োজন হয়, হয় ব্যবহারকারীদের লগইন করার সময় পাসওয়ার্ড পরিবর্তন করতে বাধ্য করা বা ব্যবহারকারীদের অবস্থার পরিবর্তন করতে ইমেল বা ফোন নম্বর যাচাই করা কনফার্মড এই অতিরিক্ত ইফোর্টগুলি ঠিক কী এবং আমি কীভাবে এটিকে জেএস এসডিকে থেকে ট্রিগার করতে পারি।
সৌরভ তিওয়ারি

4
@ জো উল্লেখ করেছেন যে এটি এখন সম্ভব হয়েছে, যেহেতু এটি যুক্ত করা হয়েছিল। সন্ধান --permanentপতাকা: stackoverflow.com/a/56948249/3165552
যিশাইয়-B

149

আমি জানি এটি কিছুক্ষণ হয়েছে তবে ভেবেছিলেন যে এটি এই পোস্টটি জুড়ে আসা অন্যান্য ব্যক্তিকে সহায়তা করতে পারে।

আপনি ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করতে AWS CLI ব্যবহার করতে পারেন, তবে এটি একটি বহু পদক্ষেপ প্রক্রিয়া:


পদক্ষেপ 1: পছন্দসই ব্যবহারকারীর জন্য একটি সেশন টোকন পান:

aws cognito-idp admin-initiate-auth --user-pool-id %USER POOL ID% --client-id %APP CLIENT ID% --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=%USERS USERNAME%,PASSWORD=%USERS CURRENT PASSWORD%

এমন কোনো ত্রুটির সম্মুখীন এই আয় তাহলে Unable to verify secret hash for client, একটি গোপন ছাড়া অন্য অ্যাপ্লিকেশন ক্লায়েন্ট তৈরি এবং যে ক্লায়েন্ট ID ব্যবহার করুন।

পদক্ষেপ 2: যদি পদক্ষেপ 1 সফল হয়, তবে এটি চ্যালেঞ্জ NEW_PASSWORD_REQUIRED, অন্যান্য চ্যালেঞ্জের পরামিতি এবং ব্যবহারকারীদের সেশন কী দিয়ে প্রতিক্রিয়া জানাবে । তারপরে, চ্যালেঞ্জ প্রতিক্রিয়া জানাতে আপনি দ্বিতীয় কমান্ডটি চালাতে পারেন:

aws cognito-idp admin-respond-to-auth-challenge --user-pool-id %USER POOL ID% --client-id %CLIENT ID% --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses NEW_PASSWORD=%DESIRED PASSWORD%,USERNAME=%USERS USERNAME% --session %SESSION KEY FROM PREVIOUS COMMAND with ""%

যদি আপনি Invalid attributes given, XXX is missingবিন্যাসটি ব্যবহার করে অনুপস্থিত বৈশিষ্ট্যগুলি পাস করার বিষয়ে ত্রুটি পানuserAttributes.$FIELD_NAME=$VALUE

উপরের কমান্ডটি একটি বৈধ প্রমাণীকরণ ফলাফল এবং উপযুক্ত টোকেন প্রদান করা উচিত।


গুরুত্বপূর্ণ: এটি কাজ করার জন্য, কগনিটো ইউজার পুলের কার্যকারিতা সহ একটি অ্যাপ্লিকেশন ক্লায়েন্ট কনফিগার করা উচিত ADMIN_NO_SRP_AUTH( ধাপে 5 এই দস্তাবেজের)।


24
আশ্চর্যজনক সহায়ক। আরও দুটি টিপস: আপনি যদি "ক্লায়েন্টের জন্য গোপন হ্যাশ যাচাই করতে অক্ষম" সম্পর্কে ত্রুটি পান তবে কোনও গোপন ছাড়াই অন্য একটি অ্যাপ্লিকেশন ক্লায়েন্ট তৈরি করুন এবং এটি ব্যবহার করুন ( stackoverflow.com/questions/37438879/… )। যদি আপনি "অবৈধ বৈশিষ্ট্য প্রদত্ত, XXX অনুপস্থিত," সম্পর্কে কোনও ত্রুটি পেয়ে থাকেন তবে userAttributes.$FIELD_NAME=$VALUE( github.com/aws/aws-sdk-js/issues/1290 ) ফর্ম্যাটটি ব্যবহার করে অনুপস্থিত বৈশিষ্ট্যগুলি পাস করুন ।
লেন রেটিগ

আপনি যদি কোনও সিএলআই কমান্ড সহ (যদি এই উত্তর সহ) ফোরসি.সি.এইচ.এন.এল.এইচ.এন.পি.এস.এইচ.আর.আরআউট থেকে আপনার ব্যবহারকারীকে বের করতে না পারেন তবে (প্রশাসনিক-অক্ষম-ব্যবহারকারীর চেষ্টা করুন) তবে 'অ্যাডমিন-সক্ষম-ব্যবহারকারী' চেষ্টা করুন বা কনসোলটি ব্যবহার করুন। এরপরে ব্যবহারকারীগণ এই প্রক্রিয়াটি ব্যবহার করুন বা আপনি সাধারণ পাসওয়ার্ড পুনরায় সেট করার প্রবাহটি ব্যবহার করতে সক্ষম হতে পারেন। পূর্বনির্ধারিত সীমাতে কগনিটোতে লগইন না করলে কোনও সময় কোনও ব্যবহারকারী 'মেয়াদ শেষ' হয়ে যাবে। (আমি মনে করি ডিফল্ট 7 দিন)
Comfytoday

এটি সিএলআই দিয়ে এবং একটি ল্যাম্বডারের অভ্যন্তরে চেষ্টা করা হয়েছিল, এই ত্রুটিটি পেয়েছে: অবৈধ বৈশিষ্ট্য দেওয়া হয়েছে, নামটি অনুপস্থিত
কলোদী

4
প্রয়োজনীয় বৈশিষ্ট্যের কারণে আপনি এটি পাচ্ছেন আপনি --challenge-responses NEW_PASSWORD=password,USERNAME=username,userAttributes.picture=picture,userAttributes.name=name
সেগুলিতে

88

এটি শেষ পর্যন্ত এডাব্লুএসসিএলআইতে যুক্ত হয়েছে: https://docs.aws.amazon.com/cli/latest/references/cognito-idp/admin-set-user-password.html

আপনি ব্যবহারকারীর পাসওয়ার্ড এবং স্থিতি আপডেট করতে পারবেন:

aws cognito-idp admin-set-user-password --user-pool-id <your user pool id> --username user1 --password password --permanent

এটি ব্যবহার করার আগে আপনাকে আপনার এডাব্লুএস সিএলআই ব্যবহার করে আপডেট করতে হবে:

pip3 install awscli --upgrade


13
এটি সর্বশেষ এবং সবচেয়ে কার্যকর সমাধান!
অনুদান দিন

7
এই উত্তর হওয়া উচিত।
মিঃ ইয়ং

4
২০২০ সালের সেরা এবং সহজ সমাধান Thanks ধন্যবাদ!
টিউডর

23

onSuccess: function (result) { ... },আপনার লগইন কার্যের মধ্যে আপনার কোডের পরে কেবল এই কোডটি যুক্ত করুন । আপনার ব্যবহারকারীর তারপরে স্বীকৃত স্থিতি থাকবে ।

newPasswordRequired: function(userAttributes, requiredAttributes) {
    // User was signed up by an admin and must provide new
    // password and required attributes, if any, to complete
    // authentication.

    // the api doesn't accept this field back
    delete userAttributes.email_verified;

    // unsure about this field, but I don't send this back
    delete userAttributes.phone_number_verified;

    // Get these details and call
    cognitoUser.completeNewPasswordChallenge(newPassword, userAttributes, this);
}

4
এটি আমার পক্ষে কাজ করে। আপনি যদি এটি পরিবর্তন করতে না চান তবে আপনি বর্তমান পাসওয়ার্ডেও পাস করতে পারেন।
mvandillen

পুনরাবৃত্তি এফটিডাব্লু! ধন্যবাদ! (পুনরাবৃত্তি thisসম্পূর্ণ নতুন পাসওয়ার্ড চ্যালেঞ্জের মধ্যে রয়েছে)
পল এস

22

আপনি FORCE_CHANGE_PASSWORDকল করে সেই ব্যবহারকারীর স্থিতি পরিবর্তন করতে পারেনrespondToAuthChallenge() করে সেই ব্যবহারকারীর :

var params = {
  ChallengeName: 'NEW_PASSWORD_REQUIRED', 
  ClientId: 'your_own3j6...0obh',
  ChallengeResponses: {
    USERNAME: 'user3',
    NEW_PASSWORD: 'changed12345'
  },
  Session: 'xxxxxxxxxxZDMcRu-5u...sCvrmZb6tHY'
};

cognitoidentityserviceprovider.respondToAuthChallenge(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

এর পরে, আপনি কনসোলে দেখতে পাবেন যে user3স্থিতিটি CONFIRMED


4
আপনি এখানে কিভাবে এসেছেন বুঝতে পারছি না। আপনি যে সেশনটি XXX এর বাইরে গেছেন তা পেতে আপনি কী ডাকলেন? যখন আমি অ্যাডমিনআইনিটিআউটকে ফোন করি তখন আমি ইউজারনটফাউন্ডএক্সসেপশন বলতে ত্রুটি পাই।
রায়ান শিলিংটন

4
দুঃখিত যদি উত্তরটি স্ফটিক পরিষ্কার না হত was এখানে আরও বিশদ রয়েছে: ১. ইউজার পুলটিতে 'your_own3j63rs8j16bxxxsto25db00obh' নামে একটি ক্লায়েন্ট রয়েছে যা একটি উত্পন্ন গোপন কী ছাড়াই তৈরি করা হয়েছে। ক্লায়েন্টকে কী প্রদান করা হলে উপরের কোডটি কাজ করবে না। 2) সেশন কী হ'ল কল করে ফেরত দেওয়া মানcognitoidentityserviceprovider.adminInitiateAuth({ AuthFlow: 'ADMIN_NO_SRP_AUTH', ClientId: 'your_own3j63rs8j16bxxxsto25db00obh', UserPoolId: 'us-east-1_DtNSUVT7n', AuthParameters: { USERNAME: 'user3', PASSWORD: 'original_password' } }, callback);
এরিয়েল আরাজা

3) user3কনসোলে তৈরি করা হয়েছিল এবং প্রাথমিকভাবে পাসওয়ার্ডটি দেওয়া হয়েছিল'original_password'
এরিয়েল আরাজা

ঠিক আছে. আমি এখনই পেয়েছি কেন আমি ব্যবহারকারীর নটফাউন্ডএক্সসেপশন পাচ্ছিলাম। আমি লগইন করতে ব্যবহারকারীর নাম হিসাবে একটি উপনাম ব্যবহার করছিলাম কারণ এটি জেএস এপিআইতে সুনির্দিষ্টভাবে কাজ করে তবে দৃশ্যত অ্যাডমিনিস্ট্রেশন আথের সাথে কাজ করে না। আপনাকে ধন্যবাদ আরিয়েল আরাজা, আমি আপনার সহায়তার প্রশংসা করি।
রায়ান শিলিংটন

হ্যাঁ! অবশেষে আমি এটি কাজ করতে পেলাম। ধন্যবাদ! আপনাকে ধন্যবাদ আরিয়েল!
রায়ান শিলিংটন

11

আপনি এখনও এটির সাথে লড়াই করছেন কিনা তা নিশ্চিত নন তবে কেবল পরীক্ষা ব্যবহারকারীদের একগুচ্ছ তৈরি করার জন্য, আমি এটি ব্যবহার করেছি awscli:

  1. ব্যবহারকারী তৈরি করতে কগনিটো-আইডিপি থেকে সাইন আপ সাবকম্যান্ড ব্যবহার করুন
aws cognito-idp sign-up \
   --region %aws_project_region% \
   --client-id %aws_user_pools_web_client_id% \
   --username %email_address% \
   --password %password% \
   --user-attributes Name=email,Value=%email_address%
  1. অ্যাডমিন-কনফার্ম-সাইন-আপ ব্যবহার করে ব্যবহারকারীকে নিশ্চিত করুন
aws cognito-idp admin-confirm-sign-up \
--user-pool-id %aws_user_pools_web_client_id% \
--username %email_address%

5

হালনাগাদ:

আমি এখন এটি ব্যবহার করছি, একটি নোডজেএস ল্যাম্বদার ভিতরে, প্রশস্ত করার জন্য অনুবাদ করা:

// enable node-fetch polyfill for Node.js
global.fetch = require("node-fetch").default;
global.navigator = {};

const AWS = require("aws-sdk");
const cisp = new AWS.CognitoIdentityServiceProvider();

const Amplify = require("@aws-amplify/core").default;
const Auth = require("@aws-amplify/auth").default;

...


/*
  this_user: {
    given_name: string,
    password: string,
    email: string,
    cell: string
  }
*/
const create_cognito = (this_user) => {
  let this_defaults = {
    password_temp: Math.random().toString(36).slice(-8),
    password: this_user.password,
    region: global._env === "prod" ? production_region : development_region,
    UserPoolId:
      global._env === "prod"
        ? production_user_pool
        : development_user_pool,
    ClientId:
      global._env === "prod"
        ? production_client_id
        : development_client_id,
    given_name: this_user.given_name,
    email: this_user.email,
    cell: this_user.cell,
  };

  // configure Amplify
  Amplify.configure({
    Auth: {
      region: this_defaults.region,
      userPoolId: this_defaults.UserPoolId,
      userPoolWebClientId: this_defaults.ClientId,
    },
  });
  if (!Auth.configure())
    return Promise.reject("could not configure amplify");

  return new Promise((resolve, reject) => {
    let _result = {};

    let this_account = undefined;
    let this_account_details = undefined;

    // create cognito account
    cisp
      .adminCreateUser({
        UserPoolId: this_defaults.UserPoolId,
        Username: this_defaults.given_name,
        DesiredDeliveryMediums: ["EMAIL"],
        ForceAliasCreation: false,
        MessageAction: "SUPPRESS",
        TemporaryPassword: this_defaults.password_temp,
        UserAttributes: [
          { Name: "given_name", Value: this_defaults.given_name },
          { Name: "email", Value: this_defaults.email },
          { Name: "phone_number", Value: this_defaults.cell },
          { Name: "email_verified", Value: "true" },
        ],
      })
      .promise()
      .then((user) => {
        console.warn(".. create_cognito: create..");
        _result.username = user.User.Username;
        _result.temporaryPassword = this_defaults.password_temp;
        _result.password = this_defaults.password;

        // sign into cognito account
        return Auth.signIn(_result.username, _result.temporaryPassword);
      })
      .then((user) => {
        console.warn(".. create_cognito: signin..");

        // complete challenge
        return Auth.completeNewPassword(user, _result.password, {
          email: this_defaults.email,
          phone_number: this_defaults.cell,
        });
      })
      .then((user) => {
        console.warn(".. create_cognito: confirmed..");
        this_account = user;
        // get details
        return Auth.currentAuthenticatedUser();
      })
      .then((this_details) => {
        if (!(this_details && this_details.attributes))
          throw "account creation failes";

        this_account_details = Object.assign({}, this_details.attributes);

        // signout
        return this_account.signOut();
      })
      .then(() => {
        console.warn(".. create_cognito: complete");
        resolve(this_account_details);
      })
      .catch((err) => {
        console.error(".. create_cognito: error");
        console.error(err);
        reject(err);
      });
  });
};

আমি একটি অস্থায়ী পাসওয়ার্ড সেট করছি এবং পরে এটি ব্যবহারকারীর অনুরোধ করা পাসওয়ার্ডে পুনরায় সেট করছি ting

পুরানো পোস্ট:

অ্যাকাউন্টটি তৈরির পরে অস্থায়ী পাসওয়ার্ড দিয়ে প্রমাণীকরণ করে cognitoidentityserviceprovider.adminCreateUser()এবং এর cognitoUser.completeNewPasswordChallenge()মধ্যে চলমান cognitoUser.authenticateUser( ,{newPasswordRequired})- আপনার ব্যবহারকারীর তৈরি ফাংশনের অভ্যন্তরে আপনি অ্যামাজন-কগনিটো-আইডেন্টিটি-জেএসডি কে ব্যবহার করে এটি সমাধান করতে পারেন ।

সক্ষম কগনিটো ব্যবহারকারী অ্যাকাউন্ট তৈরি করতে আমি ডাব্লুএস ল্যাম্বডায় নীচের কোডটি ব্যবহার করছি inside আমি নিশ্চিত এটি অনুকূলিত হতে পারে, আমার সাথে ধৈর্য রাখুন। এটি আমার প্রথম পোস্ট, এবং আমি এখনও জাভাস্ক্রিপ্টে বেশ নতুন।

var AWS = require("aws-sdk");
var AWSCognito = require("amazon-cognito-identity-js");

var params = {
    UserPoolId: your_poolId,
    Username: your_username,
    DesiredDeliveryMediums: ["EMAIL"],
    ForceAliasCreation: false,
    MessageAction: "SUPPRESS",
    TemporaryPassword: your_temporaryPassword,
    UserAttributes: [
        { Name: "given_name", Value: your_given_name },
        { Name: "email", Value: your_email },
        { Name: "phone_number", Value: your_phone_number },
        { Name: "email_verified", Value: "true" }
    ]
};

var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
let promise = new Promise((resolve, reject) => {
    cognitoidentityserviceprovider.adminCreateUser(params, function(err, data) {
        if (err) {
            reject(err);
        } else {
            resolve(data);
        }
    });
});

promise
    .then(data => {
        // login as new user and completeNewPasswordChallenge
        var anotherPromise = new Promise((resolve, reject) => {
            var authenticationDetails = new AWSCognito.AuthenticationDetails({
                Username: your_username,
                Password: your_temporaryPassword
            });
            var poolData = {
                UserPoolId: your_poolId,
                ClientId: your_clientId
            };
            var userPool = new AWSCognito.CognitoUserPool(poolData);
            var userData = {
                Username: your_username,
                Pool: userPool
            };

            var cognitoUser = new AWSCognito.CognitoUser(userData);
            let finalPromise = new Promise((resolve, reject) => {
                cognitoUser.authenticateUser(authenticationDetails, {
                    onSuccess: function(authResult) {
                        cognitoUser.getSession(function(err) {
                            if (err) {
                            } else {
                                cognitoUser.getUserAttributes(function(
                                    err,
                                    attResult
                                ) {
                                    if (err) {
                                    } else {
                                        resolve(authResult);
                                    }
                                });
                            }
                        });
                    },
                    onFailure: function(err) {
                        reject(err);
                    },
                    newPasswordRequired(userAttributes, []) {
                        delete userAttributes.email_verified;
                        cognitoUser.completeNewPasswordChallenge(
                            your_newPoassword,
                            userAttributes,
                            this
                        );
                    }
                });
            });

            finalPromise
                .then(finalResult => {
                    // signout
                    cognitoUser.signOut();
                    // further action, e.g. email to new user
                    resolve(finalResult);
                })
                .catch(err => {
                    reject(err);
                });
        });
        return anotherPromise;
    })
    .then(() => {
        resolve(finalResult);
    })
    .catch(err => {
        reject({ statusCode: 406, error: err });
    });

@ টম - এটি আপনার পক্ষে কাজ করে? আমি কিছু স্পষ্ট করতে পারি?
qqan.ny

এখন অনেকটা ভালো.
টম আরান্দা

@ qqan.ny একই সাথে প্রতিশ্রুতি এবং কলব্যাক ব্যবহার করবেন? কেন?
আইউরি গোলসকিই

@ ইউরি গলসকিই - এরপরে আমি আরও ভাল জানতাম না, সবে শুরু থেকে এডাব্লুএস এবং জেএস উভয়ই শিখতে শুরু করেছিলাম।
qqan.ny

4

জাভা এসডিকে জন্য, আপনার কগনিটো ক্লায়েন্টটি সেটআপ হয়ে গেছে তা ধরে নিচ্ছেন এবং আপনার ব্যবহারকারীকে FORCE_CHANGE_PASSWORD স্থিতিতে আপনার ব্যবহারকারীর কনফার্মড করার জন্য নিম্নলিখিতটি করতে পারেন ... এবং তারপরে সাধারণ হিসাবে প্রমাণিত হবে।

AdminCreateUserResult createUserResult = COGNITO_CLIENT.adminCreateUser(createUserRequest());

AdminInitiateAuthResult authResult = COGNITO_CLIENT.adminInitiateAuth(authUserRequest());


Map<String,String> challengeResponses = new HashMap<>();
challengeResponses.put("USERNAME", USERNAME);
challengeResponses.put("NEW_PASSWORD", PASSWORD);
RespondToAuthChallengeRequest respondToAuthChallengeRequest = new RespondToAuthChallengeRequest()
      .withChallengeName("NEW_PASSWORD_REQUIRED")
      .withClientId(CLIENT_ID)
      .withChallengeResponses(challengeResponses)
      .withSession(authResult.getSession());

COGNITO_CLIENT.respondToAuthChallenge(respondToAuthChallengeRequest);

আশা করি এটি সেই সংহত পরীক্ষাগুলিতে সহায়তা করেছে (বিন্যাস সম্পর্কে দুঃখিত)


4

মূলত এটি একই উত্তর কিন্তু। নেট সি # এসডিকে:

নিম্নলিখিতগুলি কাঙ্ক্ষিত ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ একটি পূর্ণ অ্যাডমিন ব্যবহারকারী তৈরি করবে। নিম্নলিখিত ব্যবহারকারী মডেল থাকা:

public class User
{
    public string Username { get; set; }
    public string Password { get; set; }
}

আপনি কোনও ব্যবহারকারী তৈরি করতে এবং এটি ব্যবহার করে প্রস্তুত করতে পারেন:

   public void AddUser(User user)
    {
        var tempPassword = "ANY";
        var request = new AdminCreateUserRequest()
        {
            Username = user.Username,
            UserPoolId = "MyuserPoolId",
            TemporaryPassword = tempPassword
        };
        var result = _cognitoClient.AdminCreateUserAsync(request).Result;
        var authResponse = _cognitoClient.AdminInitiateAuthAsync(new AdminInitiateAuthRequest()
        {
            UserPoolId = "MyuserPoolId",
            ClientId = "MyClientId",
            AuthFlow = AuthFlowType.ADMIN_NO_SRP_AUTH,
            AuthParameters = new Dictionary<string, string>()
            {
                {"USERNAME",user.Username },
                {"PASSWORD", tempPassword}
            }
        }).Result;
        _cognitoClient.RespondToAuthChallengeAsync(new RespondToAuthChallengeRequest()
        {
         ClientId = "MyClientId",
            ChallengeName = ChallengeNameType.NEW_PASSWORD_REQUIRED,
            ChallengeResponses = new Dictionary<string, string>()
            {
                {"USERNAME",user.Username },
                {"NEW_PASSWORD",user.Password }
            },
            Session = authResponse.Session
        });
    }

3

আপনি যদি কনসোল থেকে প্রশাসক হিসাবে স্থিতি পরিবর্তন করার চেষ্টা করছেন। তারপরে ব্যবহারকারী তৈরি করার পরে নীচের পদক্ষেপগুলি অনুসরণ করুন।

  1. কগনিটো গোটো -> "ব্যবহারকারীর পুল পরিচালনা করুন" ->
  2. অ্যাপ ইন্টিগ্রেশন বিভাগের অধীনে "অ্যাপ ক্লায়েন্ট সেটিংস" যান।
  3. নীচের আইটেমগুলি পরীক্ষা করুন i) কগনিটো ইউজার পুল ii) অনুমোদনের কোড অনুদান iii) অন্তর্ভুক্ত অনুদান iv) ফোন v) ইমেল vi) উন্মুক্ত vii) aws.cognito.signin.user.admin viii) প্রোফাইল
  4. আপনার অ্যাপ্লিকেশনটির কলব্যাক url লিখুন। আপনি যদি নিশ্চিত না হন তবে উদাহরণস্বরূপ প্রবেশ করুন: https://google.com এবং পরে আপনি এটিকে আপনার আসল কলব্যাক url এ পরিবর্তন করতে পারেন
  5. পরিবর্তনগুলি সংরক্ষণ করুন ক্লিক করুন।
  6. একবার পরিবর্তনগুলি সংরক্ষণ করা হলে "হোস্ট করা ইউআই চালু করুন" লিঙ্কটিতে ক্লিক করুন
  7. নতুন তৈরি করা ব্যবহারকারীর শংসাপত্রগুলি প্রবেশ করান
  8. নতুন শংসাপত্র সহ পাসওয়ার্ডটি পুনরায় সেট করুন এবং ব্যবহারকারীর সাথে এটি ভাগ করুন

ধাপ ২

পদক্ষেপ 3 4 5 6

পদক্ষেপ 7

পদক্ষেপ 8


2

আমি জানি এটি একই উত্তর, তবে ভেবেছিল এটি Goবিকাশকারী সম্প্রদায়কে সহায়তা করতে পারে । মূলত এটি প্রবন্ধের অনুরোধ শুরু করছে, অধিবেশনটি পান এবং চ্যালেঞ্জটির প্রতিক্রিয়া জানানNEW_PASSWORD_REQUIRED

func sessionWithDefaultRegion(region string) *session.Session {
    sess := Session.Copy()
    if v := aws.StringValue(sess.Config.Region); len(v) == 0 {
        sess.Config.Region = aws.String(region)
    }

    return sess
}



func (c *CognitoAppClient) ChangePassword(userName, currentPassword, newPassword string)   error {

    sess := sessionWithDefaultRegion(c.Region)
    svc := cognitoidentityprovider.New(sess)

    auth, err := svc.AdminInitiateAuth(&cognitoidentityprovider.AdminInitiateAuthInput{
        UserPoolId:aws.String(c.UserPoolID),
        ClientId:aws.String(c.ClientID),
        AuthFlow:aws.String("ADMIN_NO_SRP_AUTH"),
        AuthParameters: map[string]*string{
            "USERNAME": aws.String(userName),
            "PASSWORD": aws.String(currentPassword),
        },

    })



    if err != nil {
        return err
    }

    request := &cognitoidentityprovider.AdminRespondToAuthChallengeInput{
        ChallengeName: aws.String("NEW_PASSWORD_REQUIRED"),
        ClientId:aws.String(c.ClientID),
        UserPoolId: aws.String(c.UserPoolID),
        ChallengeResponses:map[string]*string{
            "USERNAME":aws.String(userName),
            "NEW_PASSWORD": aws.String(newPassword),
        },
        Session:auth.Session,
    }


    _, err = svc.AdminRespondToAuthChallenge(request)

    return err 
}

এখানে একটি ইউনিট পরীক্ষা রয়েছে:

import (
    "fmt"
    "github.com/aws/aws-sdk-go/service/cognitoidentityprovider"
    . "github.com/smartystreets/goconvey/convey"
    "testing"
)


func TestCognitoAppClient_ChangePassword(t *testing.T) {


    Convey("Testing ChangePassword!", t, func() {
        err := client.ChangePassword("user_name_here", "current_pass", "new_pass")



        Convey("Testing ChangePassword Results!", func() {
            So(err, ShouldBeNil)

        })

    })
}

1

ঠিক আছে. আমার অবশেষে কোড রয়েছে যেখানে প্রশাসক একটি নতুন ব্যবহারকারী তৈরি করতে পারেন। প্রক্রিয়াটি এরকম হয়:

  1. অ্যাডমিন ব্যবহারকারী তৈরি করে
  2. ব্যবহারকারী তাদের অস্থায়ী পাসওয়ার্ড সহ একটি ইমেল পান
  3. ব্যবহারকারীরা লগ ইন করে এবং তাদের পাসওয়ার্ড পরিবর্তন করতে বলা হয়

পদক্ষেপ 1 হার্ড অংশ। নোড জেএসে ব্যবহারকারী তৈরি করার জন্য আমার কোডটি এখানে:

let params = {
  UserPoolId: "@cognito_pool_id@",
  Username: username,
  DesiredDeliveryMediums: ["EMAIL"],
  ForceAliasCreation: false,
  UserAttributes: [
    { Name: "given_name", Value: firstName },
    { Name: "family_name", Value: lastName},
    { Name: "name", Value: firstName + " " + lastName},
    { Name: "email", Value: email},
    { Name: "custom:title", Value: title},
    { Name: "custom:company", Value: company + ""}
  ],
};
let cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();
cognitoIdentityServiceProvider.adminCreateUser(params, function(error, data) {
  if (error) {
    console.log("Error adding user to cognito: " + error, error.stack);
    reject(error);
  } else {
    // Uncomment for interesting but verbose logging...
    //console.log("Received back from cognito: " + CommonUtils.stringify(data));
    cognitoIdentityServiceProvider.adminUpdateUserAttributes({
      UserAttributes: [{
        Name: "email_verified",
        Value: "true"
      }],
      UserPoolId: "@cognito_pool_id@",
      Username: username
    }, function(err) {
      if (err) {
        console.log(err, err.stack);
      } else {
        console.log("Success!");
        resolve(data);
      }
    });
  }
});

মূলত, ইমেলটিকে যাচাই করার জন্য বাধ্য করতে আপনাকে একটি দ্বিতীয় কমান্ড প্রেরণ করতে হবে। অস্থায়ী পাসওয়ার্ড (যা ইমেলটিও যাচাই করে) পেতে ব্যবহারকারীকে এখনও তাদের ইমেলটিতে যেতে হবে। তবে সেই দ্বিতীয় কলটি যা ইমেলটি যাচাইকরণে সেট করে না করে আপনি তাদের পাসওয়ার্ড পুনরায় সেট করতে ডান কল ফিরে পাবেন না।


আমি এখনও ইমেইল পাচ্ছি না, কোনও পরামর্শ?
ভিনিসিয়াস

অদ্ভুত, আপনি কি এসইএস ইত্যাদির অ্যাক্সেস সহ কগনিটোতে ইমেল ঠিকানাটি সঠিকভাবে সেট আপ করেছেন? কগনিটিও কেবলমাত্র লোকদের ইমেল প্রেরণ করবে না যতক্ষণ না আপনি আপনি যে ইমেল ঠিকানাটি প্রেরণের চেষ্টা করছেন তা যাচাই করেছেন বা আপনি কারও কাছে প্রেরণের অনুমোদন পেয়েছেন।
রায়ান শিলিংটন

আমি কনফার্মেশন কোড ইমেলগুলি পাই, তাই সেটিংসটি সঠিক। অস্থায়ী পাসওয়ার্ড সহ কেবল ইমেলটি কখনই আসে না ... আমি ই-মেইল প্রেরণের জন্য প্রাক-সাইনআপ ট্রিগারের সাথে সংযুক্ত একটি ল্যাম্বডা তৈরি শেষ করেছি।
ভিনিসিয়াস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.