如何使用Spring security PKI 509登录配置Jboss?

时间:2012-03-29 19:47:43

标签: spring jboss spring-security

我是Jboss和Spring的新手。但是要了解PKI 509如何工作并知道如何生成所需的证书。问题是使用基于Spring Security PKI 509的登录设置Jboss。
什么是一个很好的教程来实现同样的目标...

感谢
Nohsib

1 个答案:

答案 0 :(得分:2)

首先,您需要为JBoss启用SSL,使用您的服务器证书作为密钥库,以及用于签署服务器证书的CA证书链的相关信任库,以及用于签署客户端证书的任何链希望与您的服务器进行交互。您还需要将clientAuth设置为“true”(客户端必须具有证书)或“想要”(如果客户端没有客户端证书,则允许回退到另一个类似BASIC的身份验证方法):

现在,在您的Web应用程序中,您需要配置Spring并启用X509 Pre Auth过滤器。这将从servlet请求属性javax.servlet.request.X509Certificate中提取客户端的DN。然后可以提取此DN的一部分(例如CN),然后将其与UserDetailsService实现结合使用以查找(在DB中或通过WS调用)用户详细信息。 / p>

除此之外,您还可以根据用户详细信息(如角色,组,组织等)提供授权。

一个简单的Spring配置可能看起来像这样(未经测试,纯粹来自我多次编写此类内容的内存):

<http:http>
  <!-- X509 Filter to extract PKI CN field as the users name, which is then 
       passed to the userService to lookup their details (such as roles) -->
  <http:x509 subject-principal-regex="CN=(.*?)," 
       user-service-ref="userService"/>

  <!-- filter all traffic to any URL, user must be authenticated and had the specified
       role in their UserDetails object -->
  <intercept-url pattern='/**' access='ROLE_USER' />
</http:http>

<!-- Custom user service that calls out to Restful web service to acquire user 
     details information, based upon the PKI Certs CN field -->
<beans:bean id="userService"
  class="com.domain.security.user.ws.RestfulUserService">
</beans:bean>

最后,这是一大堆文本要阅读,但Spring Security的文档非常好,并提供了示例和洞察幕后发生的事情 - 我强烈建议阅读(这是我学到这一切的地方! ):