如何为 Java Spring REST API 实施 AngularJS JWT 身份验证
How to Implement AngularJS JWT Authentication for Java Spring REST API
我想为我的应用程序实施本地用户管理。对于后端,我使用 java spring REST.I 不要使用像 Auth0
或 UserApp
这样的云用户管理服务。由于某些功能,我想使用 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 对您非常有用。
总而言之,您的解决方案如下所示:
- 您将使用 Stormpath Java SDK 轻松委派所有用户管理需求。
当用户按下登录按钮时,您的前端将通过其 REST API.
安全地将凭据发送到您的后端
2.1。顺便说一下,Stormpath 大大增强了这里的所有可能性。您可以通过 IDSite, or you can also delegate it to our Servlet Plugin 将 login/register 功能完全委托给 Stormpath,而不是拥有自己的登录页面。 Stormpath 还支持 Google、Facebook、LinkedIn 和 Github 登录。
您的后端将尝试根据 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();
}
然后,对于每个经过身份验证的请求,您的后端将执行:
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 验证也适用于您的情况 :),因为它是通用的。
如果有帮助请告诉我。
干杯!
我想为我的应用程序实施本地用户管理。对于后端,我使用 java spring REST.I 不要使用像 Auth0
或 UserApp
这样的云用户管理服务。由于某些功能,我想使用 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 对您非常有用。
总而言之,您的解决方案如下所示:
- 您将使用 Stormpath Java SDK 轻松委派所有用户管理需求。
当用户按下登录按钮时,您的前端将通过其 REST API.
安全地将凭据发送到您的后端2.1。顺便说一下,Stormpath 大大增强了这里的所有可能性。您可以通过 IDSite, or you can also delegate it to our Servlet Plugin 将 login/register 功能完全委托给 Stormpath,而不是拥有自己的登录页面。 Stormpath 还支持 Google、Facebook、LinkedIn 和 Github 登录。
您的后端将尝试根据 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(); }
然后,对于每个经过身份验证的请求,您的后端将执行:
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 验证也适用于您的情况 :),因为它是通用的。
如果有帮助请告诉我。
干杯!