sqs - Obtener acceso completo a DynamoDB desde mi aplicación ios usando AWS Cognito Developer Identities
aws s3 android (2)
Implementé una función AWS Lambda y utilicé la puerta de enlace para devolver los datos de relleno:
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
});
Por lo tanto, el ID de identidad y el token se envían de vuelta al dispositivo ios. En mi dispositivo, intento conectarme a una tabla DynamoDB de AWS, pero se deniega el acceso. ¿Cómo uso identityId y token para obtener acceso a las tablas?
He configurado roles en IAM para Unauth, que niega Dydnamo y Auth, que da acceso a las tablas a través de sus políticas.
Estoy intentando implementar la autenticación usando: http://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html
Veo que hay dos flujos que son Básicos y Mejorados. La documentación dice que la mayoría de los usuarios usarán el flujo mejorado y que implementa GetCredentialForIdentity.
¿Cómo se implementa eso en mi código ios para poder cambiar mi rol de unauth a auth y poder acceder a dynamodb? ¿Cuánto durará este acceso? Me gustaría hacer todo esto en mi código ios en lugar de usar lambda o algo así.
Si su usuario no está autenticado, entonces inicia sesión necesita borrar sus credenciales, y su método ''inicios de sesión'' ahora debe devolver un mapa de inicio de sesión actualizado correctamente.
Aquí está la documentación para ayudarlo: http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html
Comprueba dos veces tus funciones de DynanoDB para obtener acceso autenticado a tu recurso de DynamoDB. Un papel ejemplar para esto se encuentra en la siguiente página de la guía para desarrolladores a la que se hace referencia . La página se llama " Roles IAM " y la última sección es la importante: " Acceso fino a Amazon DynamoDB ".
Quédese con su plan para usar Enhanced Authflow. Se recomienda y realiza menos llamadas para autenticarse (sus usuarios apreciarán esto). Solo asegúrese de que sus clientes móviles llamen a GetCredentialsForIdentity
desde iOS.
De la documentación mejorada de Authflow más abajo en su página:
Se puede llamar a la API GetCredentialsForIdentity después de establecer una ID de identidad. Esta API es funcionalmente equivalente a llamar a GetOpenIdToken seguido de AssumeRoleWithWebIdentity .
El AssumeRoleWithWebIdentity es la pieza importante que le permite a su usuario asumir el rol que obtiene acceso al recurso DynamoDB. Cognito se encargará del resto siempre que configure los Roles correctamente dentro de la consola Cognito:
Para que Amazon Cognito llame a AssumeRoleWithWebIdentity en su nombre, su grupo de identidades debe tener roles de IAM asociados. Puede hacerlo a través de la consola de Amazon Cognito o manualmente a través de la operación SetIdentityPoolRoles (consulte la referencia de la API)