Skip to content

Latest commit

 

History

History
175 lines (123 loc) · 6.72 KB

README.md

File metadata and controls

175 lines (123 loc) · 6.72 KB

ember-simple-auth-aws-amplify

Using AWS Amplify Auth & Core library to authenticate with your AWS Cognito User Pool.

ALPHA ADD-ON: I have just started playing with Cognito and AWS Amplify.

Features

  1. Attempt to adhere to the Ember Simple Auth principles while exposing a subset of AWS Amplify's Auth's features through the session service.
  2. Support sign in/out
  3. Append access & identity JWT to Ember Data adapter
  4. Expose CognitoUser's attributes, idToken Payload, & accessToken Payload in the session.data.authenticated property storage
  5. Support automatic refreshing of access token
  6. Support Multi-Factor Authentication
  7. Support user sign up via email address identifier
  8. Support user password change, password reset, and profile attribute updates
  9. WORK IN PROGRESS - Support Federated Identities
  10. WORK IN PROGRESS - Tests (SFA tested so far)

Add issues if there are features you're looking for.

npm version downloads CircleCI Code Climate

Dependencies ember-observer-badge License

Motivation

  1. Hide details of the AWS Amplify Auth & CognitoUser
  2. Fold into familiar ember-simple-auth ecosystem
  3. Automatically refresh access tokens on a schedule using ember-concurrency

Built With

ember-cli-3.4.3

Compatibility

  • Ember.js v3.4 or above
  • Ember CLI v2.13 or above
  • Node.js v8 or above

Tested Against

ember-lts-2.4 ember-lts-2.8 ember-lts-2.12 ember-lts-2.16

ember-release-2.18 ember-default ember-beta ember-canary

Installation

ember install ember-simple-auth-aws-amplify

Upgrading

When working through the Ember upgrade process, I recommend invoking the ember install ember-simple-auth-aws-amplify command once you are done to get the latest version of the add-on.

If you've already got the package installed and just want to run the add-on blueprint: ember g ember-simple-auth-aws-amplify.

Dependencies

  • @aws-amplify/auth - Authentication library from AWS Amplify; interacts with AWS Cognito User Pool
  • @aws-amplify/core - Introduced to take advantage of AWS Amplify's event Hub
  • ember-auto-import - Pleasantly import auth and core
  • ember-concurrency - Timed task for refreshing token
  • ember-simple-auth - The EmberJs foundation auth add-on

Quick Start

EmberJs Configuration

Configure your AWS Congnito region, userPoolId, & userPoolWebClientId in your config/environment.js under the APP.ember-simple-auth-aws-amplify object path.

// config/environment.js
module.exports = function (environment) {
  let ENV = {
    // ...
    APP: {
      'ember-simple-auth-aws-amplify': {
        awsAmplifyAuth: {
          // @see https://aws-amplify.github.io/docs/js/authentication#manual-setup
          config: {
            // Amazon Cognito Region
            region: 'xx-yyyyyy-#',
            // Amazon Cognito User Pool ID
            userPoolId: 'xx-yyyyyy-#_zzzzzzzzz',
            // Amazon Cognito Web Client ID (26-char alphanumeric string)
            userPoolWebClientId: 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
          }
        },
        // `mixins/adapters/token-headers.js` uses this field to attach your ACCESS token to your Ember-Data requests
        headerAuthorization: 'Authorization',
        // `mixins/adapters/token-headers.js` uses this field to attach your ID token to your Ember-Data requests
        headerIdentification: 'Identification',
        // `utils/mfa-activation-state.js` takes this in it's constructor and uses it when naming your app 
        // inside the MFA Authenticator App
        totpIssuerName: 'Ember-Simple-Auth-Issuer-Example'
      }
      // ...
    }
    // ...
  };
  // ...
  return ENV;
};

AWS Cognito Configuration

Pool Attributes

Pool Policies

Pool MFA And Verifications

Pool Devices

Pool App Clients

Client Settings

Examples & Workflow

Sign Up

Sign In

Sign Out

Usage

[I'll add some more here before official release]

Contributing & Yadda-Yadda-Yadda

See the Contributing guide for details.

License

This project is licensed under the MIT License.