2016-11-27 2 views
0

abzurufen Ich bin neu bei der Verwendung von Json Web Tokens und vor kurzem ein Angular Authorization-Tutorial für ein Projekt implementiert, die gut für meine Autorisierung Bedürfnisse funktioniert.Ich versuche, Parameter von JWT

https://devdactic.com/restful-api-user-authentication-1/

Jetzt möchte ich die JWT auf der Clientseite entschlüsseln und den Benutzer _id in oder ziehen Sie es als eine eindeutige ID zu verwenden, für andere API-Aufrufe, aber ich sehe nicht, wie das zu tun .

Hat jemand ein gutes Beispiel für das Ziehen und Verwenden der Informationen von einem JWT mit eckigen?

Hier ist mein Auth Service:

'use strict'; 

angular.module('App') 

.service('AuthService', function($q, $http, API_ENDPOINT) { 
    var LOCAL_TOKEN_KEY = 'My big secret here'; 
    var isAuthenticated = false; 
    var authToken; 

    function loadUserCredentials() { 
    var token = window.localStorage.getItem(LOCAL_TOKEN_KEY); 
    if (token) { 
     useCredentials(token); 
    } 
    } 

    function storeUserCredentials(token) { 
    window.localStorage.setItem(LOCAL_TOKEN_KEY, token); 
    useCredentials(token); 
    } 

    function useCredentials(token) { 
    isAuthenticated = true; 
    authToken = token; 

    // Set the token as header for your requests! 
    $http.defaults.headers.common.Authorization = authToken; 
    } 

    function destroyUserCredentials() { 
    authToken = undefined; 
    isAuthenticated = false; 
    $http.defaults.headers.common.Authorization = undefined; 
    window.localStorage.removeItem(LOCAL_TOKEN_KEY); 
    } 

    var register = function(user) { 
    return $q(function(resolve, reject) { 
     $http.post(API_ENDPOINT.url + '/signup', user).then(function(result) { 
     if (result.data.success) { 
      resolve(result.data.msg); 
     } else { 
      reject(result.data.msg); 
     } 
     }); 
    }); 
    }; 

    var login = function(user) { 
    return $q(function(resolve, reject) { 
     $http.post(API_ENDPOINT.url + '/authenticate', user).then(function(result) { 
     if (result.data.success) { 
      storeUserCredentials(result.data.token); 
      resolve(result.data.msg); 
     } else { 
      reject(result.data.msg); 
     } 
     }); 
    }); 
    }; 

    var logout = function() { 
    destroyUserCredentials(); 
    }; 

    loadUserCredentials(); 

    return { 
    login: login, 
    register: register, 
    logout: logout, 
    isAuthenticated: function() {return isAuthenticated;}, 
    }; 
}) 

.factory('AuthInterceptor', function ($rootScope, $q, AUTH_EVENTS) { 
    return { 
    responseError: function (response) { 
     $rootScope.$broadcast({ 
     401: AUTH_EVENTS.notAuthenticated, 
     }[response.status], response); 
     return $q.reject(response); 
    } 
    }; 
}) 

.config(function ($httpProvider) { 
    $httpProvider.interceptors.push('AuthInterceptor'); 
}); 

Mein Ziel ist es, eine Funktion hinzuzufügen, die das Token analysiert und sie mir einen oder mehrere params ziehen.

Antwort

0

Ein JWT (Learn JSON Web Tokens) ermöglicht die Signierung und/oder Verschlüsselung der darin enthaltenen Daten. Wenn Sie einen JWT für die Authentifizierung angeben, ist es fast sicher, dass das Token, das Sie erhalten, gerade signiert ist. Die Prämisse für diese Annahme ist, dass, wenn es nicht signiert ist, Sie den Informationen nicht vertrauen können, so dass es keinen Sinn macht, es für die Authentifizierung zu verwenden, und verschlüsselte Token nicht weit verbreitet sind.

Darüber hinaus ist die empfohlene Darstellung des Tokens bei Verwendung in HTTP-Umgebungen die Codierung der verschiedenen Teile des Tokens, einschließlich der Datennutzlast, durch base64url; Dies bedeutet, dass der Zugriff auf die Daten leicht erreicht werden kann, indem die notwendige base64url-Decodierung angewendet wird und das Ergebnis dann als JSON interpretiert wird. Um jedoch diesen Daten zu vertrauen, müssen Sie die Signatur validieren und jede andere für Ihren Anwendungsfall gültige Validierung vornehmen.

Sie können jwt.io Bibliotheken Abschnitt überprüfen, um eine Liste der Bibliotheken zu erhalten, die in Javascript implementiert sind und die das Arbeiten mit JWTs unterstützen.

Zum Beispiel könnten Sie überprüfen Auth0 angular-jwt Bibliothek und sehen Sie die example on how to decode a token.


Schließlich erwähnen Sie, dass Sie die Benutzerkennung ziehen möchten, um sie in anderen Aufrufen zu verwenden; Wenn die anderen Anrufe empfindliche Entscheidungen treffen, basierend auf der empfangenen Benutzerkennung, die nicht sicher zu sein scheint.