Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS authentication to Amazon Cognito

I'm a newbie on mobile dev. I'm trying to authenticate to Amazon Cognito. I first login to Credentials Provider using a username, pin, platform and deviceToken using custom services model - I then get identityId, endPoint and token back. I'm told that I need to swap the token I got back and refresh my credentials in order for me to be authenticated to AWS Cognito and S3. But all the process is confusing and have a lot of examples that are different.

I've created a SignInProvider, extending AWSSignInProvider to access the - (void) login: (void (^) (id result, NSError *error)) completionHanlder; I have my token, endpoint and identityId inside my login method..what do I do with the completion handler and whats next after.

@implementation SignInProvider

+(instanceType) sharedInstance{}

- (NSString) identityProviderName{}

- (AWSTask<NSString*>*) token{}

- (BOOL) isLoggedIn{}

- (NSSting*) userName{}

- (void) reloadSession{}

- (void) login: (void (^) (id result, NSError *error)) completionHanlder{

authRequest = [IMPCLDMobileAuthenticationRequest new];



     [authRequest setToken:@"930fc1b56d8ca19a84500f9a79af71b65f60331f0242ce4395cdf41186443692"];

        [authRequest setPassword:@"pin"];

        [authRequest setUsername:@"[email protected]"];

        [authRequest setPlatform:@"ios"];

        serviceClient = [IMPCLDImpressionInternalMicroserviceClient defaultClient];


        [[serviceClient mobileAuthenticationPost:authRequest] continueWithBlock:^id(AWSTask *loginTask)
     {


    //what to do here with my loginTask results (token, endpoint, identityId)

        }

    return nil;

    }
like image 483
Sipho Koza Avatar asked Aug 18 '16 13:08

Sipho Koza


People also ask

How do you authenticate on Amazon Cognito?

Go to AWS Cognito service and click “Manage Identity Pools”. 2. Enter “Identity pool name”, expand the “Authentication providers” section and select “Cognito” tab. This is where the Cognito authentication provider will be registered with the Identity pool.

Can AWS Cognito be used for authorization?

You can use Amazon Cognito to control permissions for different user groups in your app. This ensures that users have appropriate access to backend resources, determined by the group they belong to. Amazon Cognito makes it easier for you to manage user identities, authentication, and permissions.

Is AWS Cognito an identity provider?

Amazon Cognito User Pools is a standards-based Identity Provider and supports identity and access management standards, such as OAuth 2.0, SAML 2.0, and OpenID Connect. Amazon Cognito supports multi-factor authentication and encryption of data-at-rest and in-transit.


1 Answers

To swap/save token in AWS you need to do below in your continueWithBlock

[[serviceClient mobileAuthenticationPost:authRequest] continueWithBlock:^id(AWSTask *loginTask)
 {
     AWSSNSCreateEndpointResponse *response = loginTask.result;
     AWSSNSSubscribeInput *subscribeRequest = [AWSSNSSubscribeInput new];
     subscribeRequest.endpoint = response.endpointArn;
     subscribeRequest.protocols = @"application";
     subscribeRequest.topicArn = YOUR_TOPIC_ARN;
     return [sns subscribe:subscribeRequest];
 }] continueWithBlock:^id(AWSTask *task) {
     if (task.cancelled) {
         NSLog(@"Task cancelled");
     }
     else if (task.error) {
         NSLog(@"Error occurred: [%@]", task.error);
     }
     else {
         NSLog(@"Success");
     }
     return nil;
 }];
like image 53
ajay_nasa Avatar answered Sep 22 '22 23:09

ajay_nasa