Skip to content

Instantly share code, notes, and snippets.

@ytensor42
Created October 24, 2018 20:40
Show Gist options
  • Save ytensor42/ad95f702362f7c73401c422bcdac8c52 to your computer and use it in GitHub Desktop.
Save ytensor42/ad95f702362f7c73401c422bcdac8c52 to your computer and use it in GitHub Desktop.
Cognito Tokens in NodeJS
- https://codewithintent.com/how-to-authenticate-users-with-tokens-using-cognito/
* Getting the tokens on login
const authenticationData = {
Username: user.email,
Password: user.password,
};
const authenticationDetails = new AuthenticationDetails(authenticationData);
const userData = {
Username: user.email,
Pool: this.userPool
};
const cognitoUser = new CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (session) {
const tokens = {
accessToken: session.getAccessToken().getJwtToken(),
idToken: session.getIdToken().getJwtToken(),
refreshToken: session.getRefreshToken().getToken()
};
cognitoUser['tokens'] = tokens; // Save tokens for later use
resolve(cognitoUser); // Resolve user
},
onFailure: function (err) {
return reject(err); // Reject out errors
},
});
* Using the tokens to get a valid CognitoUser
const AccessToken = new CognitoAccessToken({ AccessToken: tokens.accessToken });
const IdToken = new CognitoIdToken({ IdToken: tokens.idToken });
const RefreshToken = new CognitoRefreshToken({ RefreshToken: tokens.refreshToken });
const sessionData = {
IdToken: IdToken,
AccessToken: AccessToken,
RefreshToken: RefreshToken
};
const userSession = new CognitoUserSession(sessionData);
const userData = {
Username: email,
Pool: this.userPool
};
const cognitoUser = new CognitoUser(userData);
cognitoUser.setSignInUserSession(userSession);
cognitoUser.getSession(function (err, session) { // You must run this to verify that session (internally)
if (session.isValid()) {
// Update attributes or whatever else you want to do
} else {
// TODO: What to do if session is invalid?
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment