Zespół Auth0 stworzył coś, co nazywa się "angular-jwt" i ma klasę jwtHelper. To coś skutecznie dekoduje lokalny JWT bez tajemnicy, której użyłem na serwerze. Jak to się stało? Jeśli nie są bezpieczne, jaki jest sens używania tajnego klucza do podpisywania/szyfrowania?W jaki sposób kątowe-jwt dekoduje moje JWT bez tajemnicy?
funkcji na serwerze, który szyfruje token (używając "jsonwebtoken"):
function createToken (user) {
return jwt.sign(_.omit(user, 'password'), config.secret, { expiresInMinutes: 60*5 });
}
Kod z klientem:
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);
});
Oto link do pełnej przykład: http://github.com/auth0/ang...
Aaaah ... są podpisane! Co ja sobie myślałem!?!? Dzięki, Yuri. –
Dla odniesienia, ta odpowiedź dotyczy tylko przy użyciu kluczy symetrycznych (np. HMAC-SHA256). Możliwe jest również użycie kluczy asymetrycznych (np. RSA-SHA256), co pozwala podpisywać tokeny za pomocą klucza prywatnego i sprawdzać je za pomocą klucza publicznego. Możliwe jest również posiadanie zaszyfrowanych roszczeń w tokenie, jeśli trzeba je ukryć przed klientem lub w pełni zaszyfrowane tokeny za pomocą JWE: https://tools.ietf.org/html/draft-ietf-jose-json- web-encryption-40 –
To sprawiło, że mój dzień ... Dziękuję – SoliQuiD