authress-login
Version:
Universal login sdk for Authress authentication as a service. Provides managed authentication for user identity, authentication, and token verification.
33 lines (28 loc) • 966 B
JavaScript
const base64url = require('./base64url');
class JwtManager {
decode(token) {
try {
return token && JSON.parse(base64url.decode(token.split('.')[1]));
} catch (error) {
return null;
}
}
decodeFull(token) {
try {
return token && {
header: JSON.parse(base64url.decode(token.split('.')[0])),
payload: JSON.parse(base64url.decode(token.split('.')[1]))
};
} catch (error) {
return null;
}
}
async getAuthCodes() {
const codeVerifier = base64url.encode((window.crypto || window.msCrypto).getRandomValues(new Uint32Array(16)).toString());
// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
const hashBuffer = await (window.crypto || window.msCrypto).subtle.digest('SHA-256', new TextEncoder().encode(codeVerifier));
const codeChallenge = base64url.encode(hashBuffer);
return { codeVerifier, codeChallenge };
}
}
module.exports = new JwtManager();