Kimlik Sağlayıcı olarak bu Kullanıcı Havuzuna sahip bir Cognito Kimlik Havuzu ile hesap yönetimi için AWS Congito Kullanıcı Havuzları kullanıyorum. Lambda istek gönderir API ağ geçidi üzerinden bir API erişimi denetlemek için bunu kullanıyorum. Lambda'm, Micronaut kullanılarak Java 8 ile uygulandı. Bütün bunlar iyi çalışıyor.
Lambda, ben adını alıyorum Principal
içinde 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;
}
Cognito identityId öğesinin dize adında ne geliyor? Bunun gibi bir şey:
Bize-doğu-1: xxxxe650-53f4-4cba-b553-5dff42bexxxx
Ben ya gerçek kullanıcı giriş günlüğü ya da en azından gerektiğinde kimlik giriş için dönüştürmek için bir yol var istiyorum.
LookupDeveloperIdentity API çağrısı bu konuda en doğru yol gibi görünmektedir, ama işe almak veremiyoruz.
Bunu Java ve AWS Java SDK 2 ile yapmaya çalışmak:
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;
}
bir istisna atar
software.amazon.awssdk.services.cognitoidentity.model.NotAuthorizedException: Bu kimliğe erişiminiz yok (Hizmet: CognitoIdentity, Durum Kodu: 400, İstek Kimliği: 64e36646-612b-4985-91d1-82aca770XXXX)
Bunu CLI aracılığıyla yapmaya çalışmak benzer bir sonuç doğurur:
aws cognito-kimlik arama-geliştirici-kimlik - kimlik-kimliği us-east-1: xxxxe650-53f4-4cba-b553-5dff42bexxxx --identity-pool-id us-east-1: xxxx0aa1-89f9-4418-be04- 7e83c838xxxx --max-sonuçları = 10
LookupDeveloperIdentity işlemi çağrılırken bir hata oluştu (NotAuthorizedException): Bu kimliğe erişiminiz yok
Yürürlükteki IAM politikasının bununla başa çıkabileceğinden emin oldum ve bu politikaya sahip olmayan bir rolle denediğimde farklı bir hata alıyorum
{
"Effect": "Allow",
"Action": [
"cognito-identity:LookupDeveloperIdentity"
],
"Resource": [
"arn:aws:cognito-identity:us-east-1:##########:identitypool/us-east-1:xxxx0aa1-89f9-4418-be04-7e83c838xxxx"
]
}
Sorular şu şekilde kayboluyor:
- Kimlik havuzu kimliğinden kullanıcı havuzu kullanıcı adını almanın en iyi yolu bu mu?
- Eğer öyleyse - yanlış ne yapıyorum?
- Değilse - bunu yapmanın daha iyi bir yolu nedir?
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 Benim için IAM rol sorunu değil, bir kullanıcı izni gibi görünüyor.