如何为 Java Spring REST API 实施 AngularJS JWT 身份验证

How to Implement AngularJS JWT Authentication for Java Spring REST API

我想为我的应用程序实施本地用户管理。对于后端,我使用 java spring REST.I 不要使用像 Auth0UserApp 这样的云用户管理服务。由于某些功能,我想使用 JWT 方法进行用户身份验证和授权,但我不知道如何在 Java 和 AngularJS?

中实现它

尝试satellizer。他们在示例文件夹中提供 Java 服务器实现。 检查一下

虽然这看起来很复杂,但看一下 Stormpath. We have a quite a straightforward solution for this. Please take a look at Using Stormpath for API Authentication 对您非常有用。

总而言之,您的解决方案如下所示:

  1. 您将使用 Stormpath Java SDK 轻松委派所有用户管理需求。
  2. 当用户按下登录按钮时,您的前端将通过其 REST API.

    安全地将凭据发送到您的后端

    2.1。顺便说一下,Stormpath 大大增强了这里的所有可能性。您可以通过 IDSite, or you can also delegate it to our Servlet Plugin 将 login/register 功能完全委托给 Stormpath,而不是拥有自己的登录页面。 Stormpath 还支持 Google、Facebook、LinkedIn 和 Github 登录。

  3. 您的后端将尝试根据 Stormpath 后端对用户进行身份验证,结果将 return access token

    /** 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. 然后,对于每个经过身份验证的请求,您的后端将执行:

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

请查看here了解更多信息

希望对您有所帮助!

免责声明,我是活跃的 Stormpath 贡献者。

我讨论了如何使用 JWT 向 AngularJS 应用程序添加身份验证。

你可以在这里看到:https://www.youtube.com/watch?v=lDb_GANDR8U

该演示文稿的代码在这里:https://github.com/auth0/angularjs-jwt-authentication-tutorial

在那个例子中,服务器是 NodeJS。如果你需要Java,你可以做类似https://github.com/auth0/spring-security-auth0/tree/master/examples/spring-boot-api-example的事情。该示例适用于 Auth0,但 JWT 验证也适用于您的情况 :),因为它是通用的。

如果有帮助请告诉我。

干杯!