5

Bir Lambda arka ucuna sahip bir AWS API Gateway uygulaması üzerinde çalışıyorum. Lambda'yı (entegre edilmeden önce önerilen yol) kullanarak özel bir yetkilendiriciyi oluşturmak yerine, API Gateway entegrasyonunu Cognito Userpools (oldukça yeni) ile kullanıyorum.AWS API Ağ Geçidi/Cognito Userpools/Lambdas arayan kimlik bilgilerini geçemiyor

Cognito ile bir kullanıcının kimliğini doğrulayan ve daha sonra API Ağ Geçidi'ne bu kimlik bilgileriyle çağrı yapan bir kavram (javascript) kanıtı oluşturdum. Yani, temel olarak, API Ağ Geçidi'ne yapılan son çağrı, Yetkilendirme başlığındaki Cognito'dan (result.idToken.jwtToken) aldığım JWT belirtecidir. Bu tüm çalışır ve ben sadece bu belirteci ile API erişebilirsiniz doğrulayabilirsiniz.

İyi çalışıyor, ama şimdi Lambda'mdaki Cognito kimliğine erişmek istiyorum; örneğin kimlik kimliği veya isim veya e-posta. Tüm parametreleri nasıl eşleyeceğimi okudum, ancak aslında entegrasyon isteğindeki standart 'Yöntem İsteği Geçişi' şablonunu kullanıyorum. Tüm parametreleri lambdaya kaydediyorum ve tüm 'cognito' parametreleri boş.

Birçok benzer soruyu inceledim ve hepsi de, tümleştirme isteğinde 'Arayan kimlik bilgileriyle davet et' onay kutusunu etkinleştirmeyi teklif ediyorlar. Bu mükemmel bir anlam ifade ediyor. Eğer yetkilendirme olarak AWS_IAM ve size Cognito UserPool seçtiyseniz değil kullanıyorsanız

Ancak, bu onay kutusu yalnızca etkinleştirilebilir. Bu yüzden onu seçmek mümkün değil ve aslında devre dışı.

Bu durumda ne yapılması gerektiğini bilen var mı? Bu hala devam eden bir çalışma mıdır, yoksa bunu etkinleştirememenizin ve Lambda'nızdaki dolandırıcılık bilgilerini almanın bir nedeni var mı?

Çok teşekkürler. Eğer arka uç kullanıcı bilgileri günlüğe gerekiyorsa

+0

size Lambda işlevinde asıl kullanıcı kimlik erişebilir beri Cognito UserPool dan arayan kimlik ihtiyacınız kullanım örneğini paylaşabilir miyim? –

+0

Elbette; Raporlama için hangi kullanıcının hangi verilere (artı daha fazla bilgi) eriştiği hakkında bazı bilgileri kaydetmemiz/kaydetmemiz gerekir. Bunun için daha fazla kullanıcı bilgisine ihtiyacımız var. Bunun, 'Yöntem İsteği Geçişi' şablonunda, bazı bilişsel alanların açıkça eşlendiği ('bilişsel kimlik doğrulama sağlayıcısı', 'bilişsel kimlik doğrulaması türü', 'bilişsel kimlik kimliği') olması için gönderilmesini beklerim. , 'cognito-identity-pool-id'. Ama hepsi lambda ulaştığında boşturlar.Ayrıca, boş olan 'authorizer-principal-id' i kontrol ettim Herhangi bir öneriniz? – evdh

+0

"sub" ye erişebilirsiniz. veya "$ context.authorizer.claims.sub" ile "e-posta", "$ context.authorizer.claims.email" –

cevap

2

, kendi Cognito kullanıcı havuzu için alt ve e almak için $context.authorizer.claims.sub ve $context.authorizer.claims.email kullanabilirsiniz. İşte

API ağ içinde Use Amazon Cognito Your User Pool hakkında belgelerdir

+1

Bu çalıştı ama arka uçta boş değerler alıyorum: { "bağlam": { "alt": "", "e-posta": "" } } – Tejas

+0

@Ka Hou Ieong, öyle Hala güncel cevap? Son günlerde, son günlerde eklediğim yorumlarınız gibi, bu "iddialar" ve "$ bağlamı" nın boş olduğuna dair birkaç cevap buldum. – nicq

İlgili konular