2015-03-27 19 views
5

Desidero implementare la gestione degli utenti localmente per la mia applicazione. per back-end uso java spring REST.Non utilizzo servizi di gestione utenti cloud come Auth0 o UserApp. A causa di alcune funzionalità, desidero utilizzare il metodo JWT per l'autenticazione e l'autorizzazione degli utenti, ma non vedo come dovrei implementarlo in Java e AngularJS?Come implementare l'autenticazione JWT AngularJS per Java Spring REST API

risposta

11

Ho fatto un discorso su come aggiungere l'autenticazione con i JWT a un'app AngularJS.

Si può vedere qui: https://www.youtube.com/watch?v=lDb_GANDR8U

Il codice per quella presentazione è qui: https://github.com/auth0/angularjs-jwt-authentication-tutorial

In questo esempio, il server è NodeJS. Se hai bisogno di Java, puoi fare qualcosa di simile a https://github.com/auth0/spring-security-auth0/tree/master/examples/spring-boot-api-example. Questo esempio è per Auth0, ma la validazione JWT vale anche per il tuo caso :), poiché è generica.

fatemi sapere se questo aiuta.

Cheers!

+0

È auth0 libero di utilizzare per scopi commerciali? – kittu

+0

Ciao mgonto ... Come posso inviare il token al backend? – kittu

1

Prova satellizer. Forniscono l'implementazione del server Java nella cartella exemple. Check it

+0

questo esempio di base su Java core, sto cercando Spring Freamwork –

-2

Anche se questo potrebbe sembrare complesso, sarà molto utile per dare un'occhiata a Stormpath. Per questo abbiamo una soluzione abbastanza semplice. Si prega di dare un'occhiata a Using Stormpath for API Authentication.

In sintesi, la soluzione sarà simile a questa:

  1. Si utilizzerà il Stormpath Java SDK per delegare facilmente tutte le esigenze di gestione degli utenti.
  2. Quando l'utente preme il pulsante di accesso, il front-end invierà le credenziali in modo sicuro al proprio back-end tramite la sua API REST.

    2.1. A proposito, Stormpath migliora notevolmente tutte le possibilità qui. Invece di avere la tua pagina di accesso, puoi delegare completamente la funzionalità di login/registrazione a Stormpath tramite il suo IDSite, oppure puoi delegarlo anche al nostro Servlet Plugin. Stormpath supporta anche l'accesso a Google, Facebook, LinkedIn e Github.

  3. Il tuo back-end sarà quindi provare a autenticare l'utente contro lo Stormpath backend e restituirà un access token come risultato:

    /** This code will throw an Exception if the authentication fails */ 
    public void postOAuthToken(HttpServletRequest request, HttpServletResponse response) { 
        Application application = client.getResource(applicationRestUrl, Application.class); 
    
        //Getting the authentication result 
        AccessTokenResult result = (AccessTokenResult) application.authenticateApiRequest(request); 
    
        //Here you can get all the user data stored in Stormpath 
        Account account = accessTokenResult.getAccount(); 
    
        response.setStatus(HttpServletResponse.SC_OK); 
        response.setContentType("application/json"); 
    
        //Output the json of the Access Token 
        response.getWriter().print(token.toJson()); 
        response.getWriter().flush(); 
    } 
    
  4. Poi, per ogni richiesta autenticata, il back-end farà:

    public void getEquipment(HttpServletRequest request, HttpServletResponse response) { 
        Application application = client.getResource(applicationRestUrl, Application.class); 
    
        OauthAuthenticationResult result = (OauthAuthenticationResult) application.authenticateOauthRequest(request).execute(); 
    
        System.out.println(result.getApiKey()); 
        System.out.println(result.getAccount()); 
    
        //Return what you need to return in the response 
        handleEquipmentRequest(response); 
    } 
    

prega di dare un'occhiata here per ulteriori informazioni

Spero che questo aiuti!

Disclaimer, sono un contributore di Stormpath attivo.

Problemi correlati