কনিগনিটি আইডেন্টিটি পুল পরিচয় আইডি থেকে কগনিটো ইউজার পুল ব্যবহারকারীর নাম পাচ্ছেন


10

আমি কগনিটো আইডেন্টিটি পুলের সাথে অ্যাকাউন্ট ম্যানেজমেন্টের জন্য এডাব্লুএস কঙ্গিটো ইউজার পুলগুলি ব্যবহার করছি যার পরিচয় সরবরাহকারী হিসাবে এই ইউজার পুল রয়েছে। লাম্বডায় অনুরোধগুলি প্রেরণ করে এমন এপিআই গেটওয়ের মাধ্যমে কোনও এপিআইতে অ্যাক্সেস নিয়ন্ত্রণ করতে আমি এটি ব্যবহার করছি। আমার ল্যাম্বদা মাইক্রোনট ব্যবহার করে জাভা 8 এর সাথে প্রয়োগ করা হয়েছে। এই সব ঠিকঠাক কাজ করছে।

ল্যামডা, আমি থেকে নাম পেয়ে করছি Principalমধ্যে HttpRequest:

  protected String resolveUser( HttpRequest request ){
    String ret = null;

    Optional<Principal> principal = request.getUserPrincipal();
    if( principal.isPresent() ){
      ret = principal.get().getName();
    }

    if( ret == null || ret.length() == 0 ){
      ret = "unknown";
    }
    return ret;
  }

কগনিটো পরিচয় আইডির স্ট্রিং নামে কী ফিরে আসছে। এটার মতো কিছু:

উস-পূর্ব-1: xxxxe650-53f4-4cba-b553-5dff42bexxxx

আমি হয় প্রকৃত ব্যবহারকারীর লগইনটি লগইন করতে চাইব বা প্রয়োজনবোধে পরিচয়টি আইডিতে রূপান্তর করার জন্য কোনও উপায় আছে।

LookupDeveloperIdentity API কল এই সম্পর্কে দিক থেকে ঠিক পন্থা উপস্থিত হতে পারে, কিন্তু আমি কাজ এটি পেতে অসমর্থ আছি।

জাভা এবং এডাব্লুএস জাভা এসডিকে 2 দিয়ে এটি করার চেষ্টা করা হচ্ছে:

  protected String loadUsername( String user ){
    String ret = "unknown:"+user;
    CognitoIdentityClient cognito = CognitoIdentityClient.create();

    LookupDeveloperIdentityRequest request = LookupDeveloperIdentityRequest.builder()
      .identityPoolId( identityPoolId )
      .identityId( user )
      .build();
    LookupDeveloperIdentityResponse response = cognito.lookupDeveloperIdentity( request );
    List<String> identifiers = response.developerUserIdentifierList();
    if( identifiers != null && identifiers.size() > 0 ){
      ret = identifiers.get( 0 );
    }

    return ret;    
  }

একটি ব্যতিক্রম নিক্ষেপ

সফটওয়্যার.আমজোন.এভিএসডি.কোর্সেস.সিগনিটিভিটিটি.মোডেল.নোটঅর্টিফাইজড এক্সসেপশন: আপনার এই পরিচয়টির অ্যাক্সেস নেই (পরিষেবা: কগনিটো আইডেন্টিটি, স্ট্যাটাস কোড: 400, অনুরোধ আইডি: 64e36646-612b-4985-91d1-82aca770XXXX)

সি এল এলির মাধ্যমে এটি করার চেষ্টা একই ধরণের ফলাফল দেয়:

অ্যাডস কগনিটো-আইডেন্টিটি লুকোয়ার-ডেভেলপার-পরিচয় - প্রাক্তনতা-আইডি আমাদের-পূর্ব -1: xxxxee505033f4-4cba-b553-5dff42bexxxxxx - পূর্ব-পুল-আইডি ইউএস-পূর্ব -1: xxxx0aa1-89f9-4418-be04- 7e83c838xxxx - ম্যাক্স-ফলাফল = 10

লুকআপ ডেভেলপারআইডেন্টিটি অপারেশনটি কল করার সময় একটি ত্রুটি ঘটেছে (নোটঅর্ডাইজডএক্সেপশন): আপনার এই পরিচয়টির অ্যাক্সেস নেই

আমি নিশ্চিত করেছি যে স্থানে আইএএম নীতিটি এটি পরিচালনা করতে সক্ষম হবে এবং আমি যখন এই নীতিমালা না করে এমন একটি ভূমিকায় চেষ্টা করি তখন আমি একটি ভিন্ন ত্রুটি পাই

    {
        "Effect": "Allow",
        "Action": [
            "cognito-identity:LookupDeveloperIdentity"
        ],
        "Resource": [
            "arn:aws:cognito-identity:us-east-1:##########:identitypool/us-east-1:xxxx0aa1-89f9-4418-be04-7e83c838xxxx"
        ]
    }

সুতরাং প্রশ্নগুলি এখানে সিদ্ধ:

  • পরিচয় পুল আইডি থেকে ব্যবহারকারী পুলের ব্যবহারকারী নামটি পাওয়ার কি এটি সেরা উপায়?
    • যদি তা হয় - আমি ভুলভাবে কী করছি?
    • যদি তা না হয় - এটি করার আরও ভাল উপায় কী?

আপনি কী ডকস.ওএস.আমাজন / কগনিটোভিটিটি / এলিটস্ট / এপিআইরফারেন্স / কে চেষ্টা করতে পারেন যা উচ্চ-ভলিউম ক্রিয়াকলাপের জন্য প্রস্তাবিত পদ্ধতির প্রস্তাব দেয়। Are you sure you are using the credentials from the account which owns the identity pool you are requesting lookupDeveloperIdentity for?- forums.aws.amazon.com/thread.jspa?threadID=231354 এটি আমার কাছে আইএএম রোল ইস্যু নয়, ব্যবহারকারীর অনুমতি বলে মনে হচ্ছে।
জান গারাজ

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

উত্তর:


6

বিকল্প পথ বা পন্থা

ব্যবহারকারীর পুল পুল ব্যবহারকারী আইডি পুনরুদ্ধার করতে আপনি আপনার ল্যাম্বডায় পুনরুদ্ধার করতে পারেন:

authProvider = event.requestContext.identity.cognitoAuthenticationProvider;

এটি এমন একটি স্ট্রিং ফিরিয়ে দেবে যা ব্যবহারকারীর ইউজার পুল ব্যবহারকারী আইডি অন্তর্ভুক্ত করবে এবং এটি এর মতো দেখতে পাবেন:

cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxx,cognito-idp.us-east-1.amazonaws.com/us-east-1_aaaaaaaaa:CognitoSignIn:qqqqqqqq-1111-2222-3333-rrrrrrrrrrrr

যেখানে আমাদের-পূর্ব -1_aaaaaaa হ'ল ইউজার পুল আইডি এবং Qqqqqqqqq-1111-2222-3333-rrrrrrrrrrrr হল ইউজার পুল ইউজার আইডি। তারপরে আপনি স্ট্রিংকে বিভক্ত করতে পারেন এবং ব্যবহারকারীর আইডি বের করতে পারেন।

আপনি যে প্রমাণীকরণ সরবরাহকারীর ব্যবহার করছেন তার উপর নির্ভর করে এই তথ্যগুলি পৃথক হবে Note

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

উল্লেখ

https://serverless-stack.com/chapters/mapping-cognito-identity-id-and-user-pool-id.html


স্বীকৃত (বিস্মৃতভাবে, তবে আপনি বোনাস রেপ পেয়েছিলেন বলে আনন্দিত), এমনকি এই পৃষ্ঠায় থাকা ডকুমেন্টেশনটি বলে: "নীচের প্রক্রিয়াটি নথিভুক্ত না হওয়াতে" কাশ এটি করার কোনও প্রকৃত নথিভুক্ত উপায় থাকলে।
বন্দী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.