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
- Attempt to adhere to the Ember Simple Auth principles while exposing a subset
of AWS Amplify's
Auth
's features through thesession
service. - Support sign in/out
- Append access & identity JWT to Ember Data adapter
- Expose
CognitoUser
'sattributes
,idToken Payload
, &accessToken Payload
in thesession.data.authenticated
property storage - Support automatic refreshing of access token
- Support Multi-Factor Authentication
- Support user sign up via email address identifier
- Support user password change, password reset, and profile attribute updates
- WORK IN PROGRESS - Support Federated Identities
- WORK IN PROGRESS - Tests (SFA tested so far)
Add issues if there are features you're looking for.
Motivation
- Hide details of the AWS Amplify
Auth
&CognitoUser
- Fold into familiar
ember-simple-auth
ecosystem - Automatically refresh access tokens on a schedule using
ember-concurrency
Built With
Tested Against
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 Hubember-auto-import
- Pleasantly importauth
andcore
ember-concurrency
- Timed task for refreshing tokenember-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.jsmodule { 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
Check out CONTRIBUTING.md.
License
This project is licensed under the MIT License.