Angular JS SPA使用LDAP身份验证

时间:2015-03-25 14:16:17

标签: angularjs spring-security ldap jax-rs single-page-application

我正在编写一个AngularJS SPA应用程序,该应用程序调用Rest完整Web服务。后端正在JAX-RS上编写,部署在Tomcat 7上。我正在使用HTTPS, SSL将数据从SPA传输到JAX-RS

要求

  1. 我必须进行LDAP身份验证。 (我将向网络服务发送用户名和密码,并且应该进行身份验证)
  2. 我必须进行用户的会话管理(因为,当经过身份验证的用户向Web服务发送请求时,用户不必再次进行身份验证)
  3. 问题

    1. 我认为进行LDAP身份验证有两种选择:

      • 使用核心java http://docs.oracle.com/javase/jndi/tutorial/ldap/security/ldap.html
      • 进行LDAP身份验证
      • 使用Spring安全性(我不熟悉它并且不确定它是否可行。我认为我应该发送用户名和密码来休息服务。休息服务将注入spring安全库并且可以使用它身份验证功能。我是对的吗?)
    2. 管理用户会话。一旦用户通过身份验证,就应将其保存在某处,以便用户可以在其登录未到期之前执行操作。 我该怎么做?


    3. 我应该选择哪种方式?我应该如何进行 LDAP身份验证会话管理


      任何人都可以提供建议示例链接吗?

1 个答案:

答案 0 :(得分:9)

所以,

  1. 使用JNDI的LDAP身份验证工作正常,您也可以使用整洁的UnboundID LDAP Java API。可以在此处找到一个简单的LDAP绑定示例:https://code.google.com/p/ldap-sample-code/source/browse/trunk/src/main/java/samplecode/bind/SimpleBindExample.java
  2. 另请注意,您可以使用Node.JS模块作为后端,例如,Passport.JS身份验证框架提供了许多与身份验证和联合相关的功能/功能(即执行“使用Google登录”等操作,等等...)。请参阅:passportjs.org

    1. 在Angular / frontend方面,最好的办法是使用JWT令牌。这里的例子都详细解释了:http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543
    2. 本质上:

      • 您的后端身份验证REST应在用户成功绑定到LDAP后在响应中返回JWT令牌。此令牌将包含一些用户数据,并应加密(请参阅上面的链接)。
      • 您的Angular App应在成功登录后在客户端浏览器(“set-cookie”响应标头)上将该标记设置为cookie(因此在Login视图的Controller中)。
      • 然后,客户端会在每次向您的应用发出请求时提供该Cookie / JWT令牌。
      • 您的应用程序将需要验证每个请求(在SPA的控制器中)上显示的令牌。您可能还希望将用户身份验证数据添加到$ scope中,以便在视图中使用它。

      希望它有所帮助...