আমি কগনিটো আইডেন্টিটি পুলের সাথে অ্যাকাউন্ট ম্যানেজমেন্টের জন্য এডাব্লুএস কঙ্গিটো ইউজার পুলগুলি ব্যবহার করছি যার পরিচয় সরবরাহকারী হিসাবে এই ইউজার পুল রয়েছে। লাম্বডায় অনুরোধগুলি প্রেরণ করে এমন এপিআই গেটওয়ের মাধ্যমে কোনও এপিআইতে অ্যাক্সেস নিয়ন্ত্রণ করতে আমি এটি ব্যবহার করছি। আমার ল্যাম্বদা মাইক্রোনট ব্যবহার করে জাভা 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 এটি আমার কাছে আইএএম রোল ইস্যু নয়, ব্যবহারকারীর অনুমতি বলে মনে হচ্ছে।