2015-08-11 27 views
9

Auth0 ekibi, jwtHelper sınıfına sahip "angular-jwt" adlı bir şey oluşturdu. Bu şey, sunucuda kullandığım gizli bir yerel JWT'yi başarıyla çözer. Bu nasıl oldu? Güvenli değilse, o zaman onları imzalamak/şifrelemek için bir sır kullanmanın amacı nedir? ("Jsonwebtoken" kullanarak) belirteci şifreler sunucudaAçısal-jwt JWT'yi bir sırrı olmadan nasıl çözebilir?

İşlev: istemciden

function createToken (user) { 
    return jwt.sign(_.omit(user, 'password'), config.secret, { expiresInMinutes: 60*5 }); 
} 

Kodu: http://github.com/auth0/ang...

cevap

11
: Burada

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); 

    }); 

tam örnek bir bağlantı var

JWT, şifrelemeyi değil şifrelemeyi kullanır. Jetonun içerdiği veriler bir sır değildir, herkes onu çözebilir ve görüntüleyebilir. Sunucu ne yapar, bir sır kullanarak belirteç işaretler mi (sizin durumunuzda, config.secret), bu da sırrı bilmeden belirteci değiştirmeyi imkansız kılar. Dolayısıyla, yalnızca sunucu belirtecin içeriğini değiştirebilir, ancak herkes okuyabilir.

+1

Aaaah ... imzalandılar! Ne düşünüyordum!?!? Sağol Yuri. –

+1

Referans olarak, bu cevap sadece simetrik tuşlar (örn., HMAC-SHA256) kullanıldığında geçerlidir. Ayrıca asimetrik anahtarları (örn. RSA-SHA256) kullanmak da mümkündür; bu, jetonları özel anahtarla imzalamanıza ve bunları ortak anahtarla doğrulamanıza olanak tanır. onlar müşteriden gizlenmesine gerek, ya jWe kullanarak tamamen şifreli belirteçleri varsa bir belirteci şifrelenmiş iddiaları olması da mümkündür: https://tools.ietf.org/html/draft-ietf-jose-json- web-şifreleme-40 –

+0

Bu benim günüm yaptı ... Teşekkür ederim – SoliQuiD