Il team Auth0 ha creato qualcosa chiamato "angular-jwt" che ha una classe jwtHelper. Questa cosa decodifica correttamente un JWT locale senza il segreto che ho usato sul server. Come è successo? Se non sono sicuri, allora qual è il punto di usare un segreto per firmarli/crittografarli?In che modo l'angolare-jwt decodifica il mio JWT senza un segreto?
funzione sul server che cripta il token (usando "jsonwebtoken"):
function createToken (user) {
return jwt.sign(_.omit(user, 'password'), config.secret, { expiresInMinutes: 60*5 });
}
Codice da parte del cliente:
angular
.module('sample.home', [
'ui.router',
'angular-storage',
'angular-jwt'
])
.config(function ($stateProvider) {
$stateProvider
.state('home', {
url: '/',
controller: 'HomeCtrl',
templateUrl: 'modules/home/home.html',
data: { requiresLogin: true }
})
})
.controller('HomeCtrl', function homeController ($scope, $http, store, jwtHelper) {
$scope.jwt = store.get('jwt');
$scope.decodedJwt = $scope.jwt && jwtHelper.decodeToken($scope.jwt);
});
Ecco un link per l'esempio completo: http://github.com/auth0/ang...
Aaaah ... sono firmati! Cosa stavo pensando!?!? Grazie, Yuri. –
Per riferimento, questa risposta si applica solo quando si utilizzano le chiavi simmetriche (ad esempio HMAC-SHA256). È anche possibile utilizzare chiavi asimmetriche (ad esempio RSA-SHA256), che consentono di firmare i token con la chiave privata e di convalidarli con la chiave pubblica. È anche possibile avere attestazioni crittografate in un token se devono essere nascoste dal client o avere token completamente crittografati utilizzando JWE: https://tools.ietf.org/html/draft-ietf-jose-json- web-encryption-40 –
Questo ha reso la mia giornata ... Grazie – SoliQuiD