9

tôi đã thực hiện một chức năng AWS Lambda và sử dụng cửa ngõ để trả lại dữ liệu fulling:Tiếp cận đầy đủ tới DynamoDB từ ứng dụng ios tôi sử dụng sắc Developer AWS Cognito

var param = 
{ 
    IdentityPoolId: "actualIdentityPoolId", 
    Logins: {} // To have provider name in a variable 
}; 
param.Logins["com.testing.userLogin"] = userId; 

cognitoidentity.getOpenIdTokenForDeveloperIdentity(param, 
function(err, data) 
{ 
    if (err) return fn(err); // an error occurred 
    else fn(null, data.IdentityId, data.Token); // successful response 
}); 

Vì vậy, các identityId và mã thông báo được gửi trở lại thiết bị ios. Trong thiết bị của tôi, tôi cố gắng kết nối với một bảng AWS DynamoDB nhưng truy cập bị từ chối. Làm cách nào để sử dụng ID và mã nhận dạng để truy cập vào các bảng?

Tôi đã thiết lập vai trò trong IAM cho Unauth, từ chối Dydnamo và Auth cho phép truy cập vào các bảng thông qua các chính sách của nó.

Tôi cố gắng để thực hiện xác thực sử dụng: http://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html

tôi thấy có hai dòng chảy đó là cơ bản và nâng cao. Tài liệu cho biết hầu hết người dùng sẽ sử dụng luồng nâng cao và triển khai GetCredentialForIdentity.

Làm cách nào được triển khai trong mã ios của tôi để tôi có thể chuyển vai trò của mình khỏi trạng thái không xác thực thành auth và có thể truy cập vào dynamodb? Quyền truy cập này kéo dài bao lâu? Tôi muốn làm điều này tất cả trong mã ios của tôi thay vì sử dụng lambda hoặc cái gì khác như thế.

Trả lời

3

Nếu người dùng của bạn chưa được xác thực, khi đó nhật ký bạn cần xóa thông tin xác thực và phương thức 'đăng nhập' của bạn sẽ trả lại bản đồ đăng nhập được cập nhật đúng cách.

Đây là tài liệu hướng dẫn để giúp bạn: http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html

+0

Tôi đã sử dụng liên kết đó nhưng vẫn không có xúc xắc và dynamodb vẫn chưa được xác thực. – cdub

2

Kiểm tra Vai trò DynanoDB bạn để truy cập tài nguyên thực DynamoDB của bạn. Một ví dụ về vai trò này là trên following page of the developer guide you referenced. Trang được gọi là "Vai trò IAM" và phần cuối cùng là phần quan trọng: "Truy cập hạt mịn tới Amazon DynamoDB".

Gắn bó với kế hoạch của bạn để sử dụng Dòng xác thực nâng cao. Chúng tôi khuyên bạn nên thực hiện ít cuộc gọi hơn để xác thực (người dùng của bạn sẽ đánh giá cao điều này). Chỉ cần đảm bảo rằng khách hàng di động của bạn gọi số GetCredentialsForIdentity từ iOS.

enter image description here

Từ các tài liệu Authflow Tăng cường hơn nữa xuống trang của bạn:

Các GetCredentialsForIdentity API có thể được gọi sau khi bạn thiết lập một ID sắc. API này có chức năng tương đương với việc gọi GetOpenIdToken theo sau là AssumeRoleWithWebIdentity.

AssumeRoleWithWebIdentity là phần quan trọng cho phép người dùng của bạn đảm nhận vai trò truy cập vào tài nguyên DynamoDB. Cognito sẽ chăm sóc phần còn lại chừng nào bạn thiết lập vai trò một cách chính xác trong phạm vi Cognito console:

Để cho Amazon Cognito gọi AssumeRoleWithWebIdentity thay cho bạn, hồ bơi danh tính của bạn phải có vai trò IAM liên kết với nó. Bạn có thể thực hiện việc này thông qua Bảng điều khiển Cognito Amazon hoặc thủ công thông qua thao tác SetIdentityPoolRoles (xem tham chiếu API)

+0

Tôi đã thiết lập mọi thứ bằng lambda và nhận mã nhận diện và mã thông báo. Đó là tìm ra những gì và làm thế nào để thiết lập phần mục tiêu-c gây nhầm lẫn cho tôi và gọi GetCredentialsForIdentity. Tôi có congnito và tất cả các vai trò thiết lập chính xác cho người dùng auth và truy cập đầy đủ trên vai trò xác thực. – cdub

+0

tham khảo http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-auth.html. Chi tiết 2 bước cuối cùng tất cả những gì bạn cần làm cho IOS - Truy xuất ID nhận dạng Amazon và thông tin đăng nhập AWS. Bạn không thực sự gọi GetCredentialsForIdentity, nhưng nó được gọi cho bạn khi bạn sử dụng mã AWS SDK và mã khách hàng DynamoDB. Ví dụ: http://docs.aws.amazon.com/mobile/sdkforios/developerguide/dynamodb_om.html – Taterhead

+0

Tại sao tôi gọi GetOpenIdTokenForDeveloperIdentity nếu identityId và mã thông báo không bao giờ được thêm vào mã bạn đã đề cập ở trên? Tôi cũng muốn chuyển từ vai trò unauth sang vai trò auth của mình. – cdub

Các vấn đề liên quan