অ্যামাজন কগনিটো ইউজারপুলগুলিতে ক্লায়েন্টের জন্য গোপন হ্যাশ যাচাই করতে অক্ষম


131

আমি "অ্যামাজন কগনিটো আইডেন্টিটি ব্যবহারকারী পুল" প্রক্রিয়াতে আটকে আছি।

কগনিটো ইউজারপুলে ব্যবহারকারীর অনুমোদনের জন্য আমি সমস্ত সম্ভাব্য কোড চেষ্টা করেছি। তবে আমি সর্বদা "ত্রুটি: ক্লায়েন্ট 4 বি ******* এফডি এর জন্য গোপন হ্যাশ যাচাই করতে অক্ষম" বলে ত্রুটি পাই

এখানে কোড:

AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:b64bb629-ec73-4569-91eb-0d950f854f4f'
});

AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:b6b629-er73-9969-91eb-0dfffff445d'
});

AWSCognito.config.update({accessKeyId: 'AKIAJNYLRONAKTKBXGMWA', secretAccessKey: 'PITHVAS5/UBADLU/dHITesd7ilsBCm'})

var poolData = { 
    UserPoolId : 'us-east-1_l2arPB10',
    ClientId : '4bmsrr65ah3oas5d4sd54st11k'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);

var userData = {
     Username : 'ronakpatel@gmail.com',
     Pool : userPool
};

var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);

cognitoUser.confirmRegistration('123456', true,function(err, result) {
if (err) {
    alert(err);
    return;
}
console.log('call result: ' + result);
});

9
গৃহীত উত্তর আর বৈধ নয়। কীভাবে গোপন হ্যাশ জেনারেট করা যায় সে সম্পর্কে এখানে নির্দেশাবলী
হ'ল ডকস.ওএস.মাজোন.

হ্যাঁ, এবং একটি জাভাস্ক্রিপ্ট বাস্তবায়নের জন্য নীচে @ সিমন বুচন উত্তর দেখুন। এটি পুরোপুরি কাজ করে।
গুজমনে

উত্তর:


179

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

আমার জন্য এটি ক্লায়েন্ট সিক্রেট ব্যতীত কোনও অ্যাপ্লিকেশনটির জন্য দুর্দান্ত কাজ করছে তবে ক্লায়েন্ট সিক্রেট সহ একটি অ্যাপ্লিকেশন ব্যর্থ হয়।

সুতরাং আপনার ব্যবহারকারী পুলে ক্লায়েন্টের গোপনীয়তা তৈরি না করেই একটি নতুন অ্যাপ তৈরি করার চেষ্টা করুন। তারপরে কোনও নতুন ব্যবহারকারীর সাইন আপ করতে বা নিবন্ধকরণ নিশ্চিত করতে সেই অ্যাপটি ব্যবহার করুন।


14
এফওয়াইআই: ঠিক এখনই আমার সাথে এটি ঘটেছে। এটি এখনও এইভাবে কাজ করছে, জানুয়ারী 2017. আমি যখন ক্লায়েন্ট_সেক্রেটবিহীন একটি অ্যাপ্লিকেশন তৈরি করেছি তখন আমি জেএস এসডিকে ব্যবহার করতে সক্ষম হয়েছি। আমি যখন ক্লায়েন্ট_সেক্রেট দিয়ে একটি অ্যাপ তৈরি করেছি, তখন আমি মূল প্রশ্নের মতোই ব্যর্থতা পেয়েছি।
চিজো

5
21 এপ্রিল 2017 পর্যন্ত, অ্যাপ ক্লায়েন্টের জন্য সিক্রেট কীটি সক্ষম করা থাকলেও এটি ডাব্লুএসএস সিএলআই ব্যবহার করে এখনও কাজ করে না। অ্যাডস কগনিটো-আইডিপি অ্যাডমিন-আরম্ভ-অউথ \ - অঞ্চল এপি-উত্তর-পূর্বে -১ u - ব্যবহারকারী-পুল-আইডি MY_POOL_ID \ - ক্লায়েন্ট-আইডি MY_CLIENT_ID a --aut- প্রবাহ ADMIN_NO_SRP_AUTH \ --aut- পরামিতিগুলি USERNAME = ব্যবহারকারীর নাম @ gmail.com, পাসওয়ার্ড = som3PassW0rd
স্ট্যানলি

26
2018 সালের জানুয়ারি পর্যন্ত এটি এখনও সমর্থিত নয়। গিথুব রেপোতে ডকুমেন্টেশন github.com/aws/amazon-cognito-identity-js এ উল্লেখ করেছে:"When creating the App, the generate client secret box must be unchecked because the JavaScript SDK doesn't support apps that have a client secret."
কাকোমা

5
মে 1919, একই ত্রুটিটি আমাদের ক্লায়েন্ট সিক্রেট ছাড়াই অ্যাপ তৈরি করতে হবে।
দিলিপ

4
সেপ্টেম্বর 12 2018 - একই সমস্যা। এমনকি কোনও গোপন তৈরি করা ক্লায়েন্ট ব্যবহার না করার পরেও, আমি ব্যবহারকারীকে সত্যায়িত করা হোক বা না থাকুক আমি 400 পাই। এটি সত্ত্বেও প্রত্যাশার মতো অ্যাপ্লিকেশন ফাংশনগুলি।
foxtrotuniform6969

70

দস্তাবেজ অনুসারে: http://docs.aws.amazon.com/cognito/latest/developerguide/setting-up-the-javascript-sdk.html

জাভাস্ক্রিপ্ট এসডিকে ক্লায়েন্ট সিক্রেট সহ অ্যাপ্লিকেশনগুলিকে সমর্থন করে না।

এখনই নির্দেশাবলীতে বলা হয়েছে যে ইউজার পুলের জন্য অ্যাপটি তৈরি করার সময় আপনার "ক্লায়েন্ট সিক্রেট তৈরি করুন" আনচেক করা দরকার।


এটি সার্ভারের পাশে Node.js ব্যবহার করে আমার পক্ষে কাজ করেছে। ধন্যবাদ ডক!
রিক

37

এটি কয়েক বছর দেরি হতে পারে তবে কেবল "ক্লায়েন্ট সিক্রেট জেনারেট করুন" অপশনটি নির্বাচন করুন এবং এটি আপনার ওয়েব ক্লায়েন্টদের জন্য কাজ করবে।

অ্যাপ্লিকেশন ক্লায়েন্ট বিকল্প উত্পন্ন করুন


8
নোট করুন যে ক্লায়েন্ট তৈরি হওয়ার পরে আপনি এটি সম্পাদনা করতে পারবেন না, সুতরাং প্রয়োজনে একটি নতুন তৈরি করুন।
ইউআরএল ৮৮

যদি আপনি একটি নতুন অ্যাপ্লিকেশন ক্লায়েন্ট তৈরি করেন এবং আপনার একটি পরিচয় পুল রয়েছে ("ফেডারেটেড আইডেন্টিটিসে") যা কোনও কগনিটো প্রমাণীকরণ সরবরাহকারী ব্যবহার করে, তবে নতুন অ্যাপ্লিকেশন ক্লায়েন্টের আইডি সহ অ্যাপ্লিকেশন ক্লায়েন্ট আইডি ফিল্ডটি আপডেট করতে ভুলবেন না।
এএমএস 777

21

যেহেতু প্রত্যেকে প্রত্যেকে তাদের ভাষা পোস্ট করেছে, তাই এখানে নোড রয়েছে (এবং এটি ব্রাউজারে কাজ করে browserify-crypto, আপনি ওয়েবপ্যাক ব্যবহার করেন বা ব্রাউজ করুন যদি স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়):

const crypto = require('crypto');

...

crypto.createHmac('SHA256', clientSecret)
  .update(username + clientId)
  .digest('base64')

4
এটি সমাধান এবং বিল্ড নোড.জেস সমাধানে নির্মিত, ধন্যবাদ @ সিমন
ইঞ্জিনিয়ার

19

নেট নেট এসকেকে আমারও একই সমস্যা ছিল।

অন্য কারওর প্রয়োজনে আমি কীভাবে সমাধান করেছি তা এখানে:

public static class CognitoHashCalculator
{
    public static string GetSecretHash(string username, string appClientId, string appSecretKey)
    {
        var dataString = username + appClientId;

        var data = Encoding.UTF8.GetBytes(dataString);
        var key = Encoding.UTF8.GetBytes(appSecretKey);

        return Convert.ToBase64String(HmacSHA256(data, key));
    }

    public static byte[] HmacSHA256(byte[] data, byte[] key)
    {
        using (var shaAlgorithm = new System.Security.Cryptography.HMACSHA256(key))
        {
            var result = shaAlgorithm.ComputeHash(data);
            return result;
        }
    }
}

সাইন আপ করার পরে এটির মতো দেখাচ্ছে:

public class CognitoSignUpController
{
    private readonly IAmazonCognitoIdentityProvider _amazonCognitoIdentityProvider;

    public CognitoSignUpController(IAmazonCognitoIdentityProvider amazonCognitoIdentityProvider)
    {
        _amazonCognitoIdentityProvider = amazonCognitoIdentityProvider;
    }

    public async Task<bool> SignUpAsync(string userName, string password, string email)
    {
        try
        {
            var request = CreateSignUpRequest(userName, password, email);
            var authResp = await _amazonCognitoIdentityProvider.SignUpAsync(request);

            return true;
        }
        catch
        {
            return false;
        }
    }

    private static SignUpRequest CreateSignUpRequest(string userName, string password, string email)
    {
        var clientId = ConfigurationManager.AppSettings["ClientId"];
        var clientSecretId = ConfigurationManager.AppSettings["ClientSecretId"];

        var request = new SignUpRequest
        {
            ClientId = clientId,
            SecretHash = CognitoHashCalculator.GetSecretHash(userName, clientId, clientSecretId),
            Username = userName,
            Password = password,
        };

        request.UserAttributes.Add("email", email);
        return request;
    }
}

এটি এখনও প্রয়োজনীয় এবং এটি এখনও v3.5 এডাব্লুএস। নেট এসডিকে (পূর্বরূপ) কাজ করে তা নিশ্চিত করে।
পাইস্কয়ার্ড

13

এডাব্লুএস ল্যাম্বডা ব্যবহার করে যে কোনও ব্যবহারকারীকে এডাব্লুএস জেএস এসডিকে ব্যবহার করে সাইন আপ করতে আগ্রহী যে কেউ, এই পদক্ষেপগুলি আমি করেছি:

কী উত্পন্ন করতে পাইথনে আরও একটি ল্যাম্বদা ফাংশন তৈরি করুন:

import hashlib
import hmac
import base64

secretKey = "key"
clientId = "clientid"
digest = hmac.new(secretKey,
                  msg=username + clientId,
                  digestmod=hashlib.sha256
                 ).digest()
signature = base64.b64encode(digest).decode()

এডাব্লুএসে নোডজেএস ফাংশনের মাধ্যমে ফাংশনটি কল করুন। স্বাক্ষরটি কগনিটোর গোপন হ্যাশ হিসাবে কাজ করেছিল

দ্রষ্টব্য: উত্তরটি নীচের লিঙ্কে জর্জ ক্যাম্পবেলের উত্তরের উপর ভিত্তি করে তৈরি হয়েছে: পাইথনে স্ট্রিং + গোপন কী সহ একটি এসএএএ হ্যাশ গণনা করা হচ্ছে


12

জন্য সমাধান golang। দেখে মনে হচ্ছে এটি এসডিকে যুক্ত করা উচিত।

import (
    "crypto/hmac"
    "crypto/sha256"
    "encoding/base64"
)

func SecretHash(username, clientID, clientSecret string) string {
    mac := hmac.New(sha256.New, []byte(clientSecret))
    mac.Write([]byte(username + ClientID))
    return base64.StdEncoding.EncodeToString(mac.Sum(nil))
}

8

সিক্রেটহ্যাশ সহ নোডজেএসের সমাধান

এটি নির্বোধ বলে মনে হয় যে নডজেএসে প্রকাশিত হবে না বলে এডাব্লুএস এসডিকে থেকে গোপন কীটি সরিয়ে নিয়েছে।

আমি আনতে আটকাচ্ছে এবং ব্যবহার কুচি-কুচি করিয়া কাটা বস্তু কী তে যোগ করে NodeJS কর্মরত বুঝেছি @Simon Buchan এর উত্তর।

cognito.js

import { CognitoUserPool, CognitoUserAttribute, CognitoUser } from 'amazon-cognito-identity-js'
import crypto from 'crypto'
import * as fetchIntercept from './fetch-intercept'

const COGNITO_SECRET_HASH_API = [
  'AWSCognitoIdentityProviderService.ConfirmForgotPassword',
  'AWSCognitoIdentityProviderService.ConfirmSignUp',
  'AWSCognitoIdentityProviderService.ForgotPassword',
  'AWSCognitoIdentityProviderService.ResendConfirmationCode',
  'AWSCognitoIdentityProviderService.SignUp',
]

const CLIENT_ID = 'xxx'
const CLIENT_SECRET = 'xxx'
const USER_POOL_ID = 'xxx'

const hashSecret = (clientSecret, username, clientId) => crypto.createHmac('SHA256', clientSecret)
  .update(username + clientId)
  .digest('base64')

fetchIntercept.register({
  request(url, config) {
    const { headers } = config
    if (headers && COGNITO_SECRET_HASH_API.includes(headers['X-Amz-Target'])) {
      const body = JSON.parse(config.body)
      const { ClientId: clientId, Username: username } = body
      // eslint-disable-next-line no-param-reassign
      config.body = JSON.stringify({
        ...body,
        SecretHash: hashSecret(CLIENT_SECRET, username, clientId),
      })
    }
    return [url, config]
  },
})

const userPool = new CognitoUserPool({
  UserPoolId: USER_POOL_ID,
  ClientId: CLIENT_ID,
})

const register = ({ email, password, mobileNumber }) => {
  const dataEmail = { Name: 'email', Value: email }
  const dataPhoneNumber = { Name: 'phone_number', Value: mobileNumber }

  const attributeList = [
    new CognitoUserAttribute(dataEmail),
    new CognitoUserAttribute(dataPhoneNumber),
  ]

  return userPool.signUp(email, password, attributeList, null, (err, result) => {
    if (err) {
      console.log((err.message || JSON.stringify(err)))
      return
    }
    const cognitoUser = result.user
    console.log(`user name is ${cognitoUser.getUsername()}`)
  })
}

export {
  register,
}

ফেচ-ইনসেপ্টর.জেএস ( https://github.com/werk85/fetch-intercep/blob/develop/src/index.js এর কাঁটাচামচ থেকে নোডজেএসের জন্য ফোর্ক এবং সম্পাদিত )

let interceptors = []

if (!global.fetch) {
  try {
    // eslint-disable-next-line global-require
    global.fetch = require('node-fetch')
  } catch (err) {
    throw Error('No fetch available. Unable to register fetch-intercept')
  }
}
global.fetch = (function (fetch) {
  return (...args) => interceptor(fetch, ...args)
}(global.fetch))

const interceptor = (fetch, ...args) => {
  const reversedInterceptors = interceptors.reduce((array, _interceptor) => [_interceptor].concat(array), [])
  let promise = Promise.resolve(args)

  // Register request interceptors
  reversedInterceptors.forEach(({ request, requestError }) => {
    if (request || requestError) {
      promise = promise.then(_args => request(..._args), requestError)
    }
  })

  // Register fetch call
  promise = promise.then(_args => fetch(..._args))

  // Register response interceptors
  reversedInterceptors.forEach(({ response, responseError }) => {
    if (response || responseError) {
      promise = promise.then(response, responseError)
    }
  })

  return promise
}

const register = (_interceptor) => {
  interceptors.push(_interceptor)
  return () => {
    const index = interceptors.indexOf(_interceptor)
    if (index >= 0) {
      interceptors.splice(index, 1)
    }
  }
}

const clear = () => {
  interceptors = []
}

export {
  register,
  clear,
}

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

7

জাভাতে আপনি এই কোডটি ব্যবহার করতে পারেন:

private String getSecretHash(String email, String appClientId, String appSecretKey) throws Exception {
    byte[] data = (email + appClientId).getBytes("UTF-8");
    byte[] key = appSecretKey.getBytes("UTF-8");

    return Base64.encodeAsString(HmacSHA256(data, key));
}

static byte[] HmacSHA256(byte[] data, byte[] key) throws Exception {
    String algorithm = "HmacSHA256";
    Mac mac = Mac.getInstance(algorithm);
    mac.init(new SecretKeySpec(key, algorithm));
    return mac.doFinal(data);
}

আপনি এই গোপন হ্যাশটি স্ক্রিনে আউটপুট দেওয়ার পাশাপাশি এসডিকে কোথায় ব্যবহার করবেন?
অ্যারন

1
অনলাইনে যে কোনও এডাব্লুএস ডক্সের দিকে ইঙ্গিত করতে পারবেন যেখানে ক্লায়েন্ট সিক্রেটের বিরুদ্ধে প্রমাণীকরণের ব্যাখ্যা দেওয়া হয়েছে? বেস 64 / sha256 স্বাক্ষর-এনকোডিংগুলি বাধ্যতামূলক সমাধানগুলি হয় - তবে অকার্যকর যদি না তারা ক্লায়েন্ট সিক্রেটের বিরুদ্ধে কীভাবে প্রমাণীকরণ করতে পারে তার বানান স্পষ্টভাবে AWS ডক্সের সাথে মেনে চলতে না পারে।
কোডে চার্লি

7

আমাজন জাভা অ্যাপ্লিকেশন কোড সহ তাদের ডকুমেন্টেশনে অ্যামাজন কগনিটোর জন্য কীভাবে কম্পিউটারে সিক্রেটহ্যাশ মানগুলি গণনা করে তা উল্লেখ করে Amazon এখানে এই কোডটি বোটো 3 পাইথন এসডিকে নিয়ে কাজ করে

অ্যাপ্লিকেশন ক্লায়েন্ট বিশদ

আপনি নীচে আপনার App clientsবাম দিকের মেনুটি খুঁজে পেতে পারেন General settings। সেগুলি পান App client idএবং App client secretতৈরি করুন SECRET_HASH। আপনার আরও ভাল বোঝার জন্য আমি প্রতিটি লাইনের সমস্ত আউটপুট মন্তব্য করেছি।

import hashlib
import hmac
import base64

app_client_secret = 'u8f323eb3itbr3731014d25spqtv5r6pu01olpp5tm8ebicb8qa'
app_client_id = '396u9ekukfo77nhcfbmqnrec8p'
username = 'wasdkiller'

# convert str to bytes
key = bytes(app_client_secret, 'latin-1')  # b'u8f323eb3itbr3731014d25spqtv5r6pu01olpp5tm8ebicb8qa'
msg = bytes(username + app_client_id, 'latin-1')  # b'wasdkiller396u9ekukfo77nhcfbmqnrec8p'

new_digest = hmac.new(key, msg, hashlib.sha256).digest()  # b'P$#\xd6\xc1\xc0U\xce\xc1$\x17\xa1=\x18L\xc5\x1b\xa4\xc8\xea,\x92\xf5\xb9\xcdM\xe4\x084\xf5\x03~'
SECRET_HASH = base64.b64encode(new_digest).decode()  # UCQj1sHAVc7BJBehPRhMxRukyOoskvW5zU3kCDT1A34=

ইন boto 3 ডকুমেন্টেশন, আমরা সময় অনেক সম্পর্কে জিজ্ঞাসা দেখতে পারেন SECRET_HASH। সুতরাং উপরের কোড লাইনগুলি আপনাকে এটি তৈরি করতে সহায়তা করেSECRET_HASH

আপনি যদি কোনও অ্যাপ্লিকেশন তৈরি করার সময় SECRET_HASHকেবল আনচেক ব্যবহার করতে না চান Generate client secret

নতুন অ্যাপ তৈরি করুন


1
আমার জন্য, এটি কেবল তখনই কাজ করেছিল যদি আমি = = বাইটস (অ্যাপ্লিকেশন_ক্লিয়েন্ট_আইডি + ব্যবহারকারীর নাম, 'ল্যাটিন -1') কে = = বাইটে (ব্যবহারকারীর নাম + অ্যাপ্লিকেশন_ক্লিয়েন্ট_আইডি, 'ল্যাটিন -1') পরিবর্তন করি। স্পষ্টতই, আমি ক্লায়েন্টআইডির অর্ডার এবং ইউজারনেমটি এমনভাবে পরিবর্তন করেছিলাম যে প্রথমে ব্যবহারকারীর নামটি উপস্থিত হয়।
জোশ ওল্ফ

1
অনেক ধন্যবাদ @ জোশ ওল্ফ, আমি ভুল করে অদলবদল app_client_idএবং username। তবে আমি একটি মন্তব্য হিসাবে সঠিক আউটপুট প্রদর্শন করি যা username+ অনুযায়ী প্রদর্শিত হয় app_client_id। বার বার অনেক অনেক ধন্যবাদ।
কুশান গুণসেকের

1
মোটেই কোন সমস্যা নেই! @ কুশন গুণাসেকেরা
জোশ ওল্ফ

6

এটি একটি নমুনা পিএইচপি কোড যা আমি গোপন হ্যাশ উত্পন্ন করতে ব্যবহার করি

<?php
    $userId = "aaa";
    $clientId = "bbb";
    $clientSecret = "ccc";
    $s = hash_hmac('sha256', $userId.$clientId, $clientSecret, true);
    echo base64_encode($s);
?>

এই ক্ষেত্রে ফলাফল:

DdSuILDJ2V84zfOChcn6TfgmlfnHsUYq0J6c01QV43I=

5

জাভা এবং .NET এর জন্য আপনাকে নামের সাথে লেখকের পরামিতিতে গোপনীয়তাটি পাস করতে হবে SECRET_HASH

AdminInitiateAuthRequest request = new AdminInitiateAuthRequest
{
  ClientId = this.authorizationSettings.AppClientId,
  AuthFlow = AuthFlowType.ADMIN_NO_SRP_AUTH,
  AuthParameters = new Dictionary<string, string>
  {
    {"USERNAME", username},
    {"PASSWORD", password},
    {
      "SECRET_HASH", EncryptionHelper.GetSecretHash(username, AppClientId, AppClientSecret)
    }
  },
  UserPoolId = this.authorizationSettings.UserPoolId
};

এবং এটি কাজ করা উচিত।


3

সি ++ Qt ফ্রেমওয়ার্ক সহ

QByteArray MyObject::secretHash(
     const QByteArray& email,
     const QByteArray& appClientId, 
     const QByteArray& appSecretKey)
{
            QMessageAuthenticationCode code(QCryptographicHash::Sha256);
            code.setKey(appSecretKey);
            code.addData(email);
            code.addData(appClientId);
            return code.result().toBase64();
};

1

আরও কমপ্যাক্ট সংস্করণ থাকতে পারে, তবে এটি রুবির পক্ষে কাজ করে, বিশেষতঃ রুবে অন কিছুটা প্রয়োজন ছাড়াই:

key = ENV['COGNITO_SECRET_HASH']
data = username + ENV['COGNITO_CLIENT_ID']
digest = OpenSSL::Digest.new('sha256')

hmac = Base64.strict_encode64(OpenSSL::HMAC.digest(digest, key, data))

0

কগনিটো প্রমাণীকরণ

ত্রুটি: অ্যাপ্লিকেশন ক্লায়েন্টটি গোপনের জন্য কনফিগার করা হয়নি তবে গোপন হ্যাশ পেয়েছে

গোপনকি সরবরাহ করা শূন্য হিসাবে আমার জন্য কাজ করে। প্রদত্ত শংসাপত্রগুলির মধ্যে রয়েছে: -

  • কগনিটোএডেন্টিটি ইউজারপুলরিজিওন (অঞ্চল)
  • কগনিটোআইডেন্টিটি ইউজারপুলআইডি (ইউজারপুলআইডি)
  • কগনিটোআইডেন্টিটি ইউজারপুল অ্যাপ্লিকেশন ক্লায়েন্টআইডি (ক্লায়েন্টআইডি)
  • এডাব্লুএসসিগনিটো ইউজারপুলস সিগাইন ইনপ্রভাইডারকি (অ্যাক্সেসকি আইআইডি)

    // setup service configuration
    let serviceConfiguration = AWSServiceConfiguration(region: CognitoIdentityUserPoolRegion, credentialsProvider: nil)
    
    // create pool configuration
    let poolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: CognitoIdentityUserPoolAppClientId,
                                                                    clientSecret: nil,
                                                                    poolId: CognitoIdentityUserPoolId)
    
    // initialize user pool client
    AWSCognitoIdentityUserPool.register(with: serviceConfiguration, userPoolConfiguration: poolConfiguration, forKey: AWSCognitoUserPoolsSignInProviderKey)
    

উপরের সমস্ত জিনিস নীচে লিঙ্কযুক্ত কোড নমুনা নিয়ে কাজ করে।

এডাব্লুএসের নমুনা কোড: https://github.com/awslabs/aws-sdk-ios-sample/tree/master/CognitoYourUserPools- নমুনা / সুইফট

যদি এটি আপনার পক্ষে কাজ করে না তবে আমাকে জানান।


এটি একটি মৃত লিঙ্ক
Jpnh

0

এখানে আমার 1 কমান্ড, এবং এটি কার্যকর (নিশ্চিত :))

EMAIL="EMAIL@HERE.com" \
CLIENT_ID="[CLIENT_ID]" \
CLIENT_SECRET="[CLIENT_ID]" \
&& SECRET_HASH=$(echo -n "${EMAIL}${CLIENT_ID}" | openssl dgst -sha256 -hmac "${CLIENT_SECRET}" | xxd -r -p | openssl base64) \
&& aws cognito-idp ...  --secret-hash "${SECRET_HASH}"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.