我是Jboss和Spring的新手。但是要了解PKI 509如何工作并知道如何生成所需的证书。问题是使用基于Spring Security PKI 509的登录设置Jboss。
什么是一个很好的教程来实现同样的目标...
感谢
Nohsib
答案 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的文档非常好,并提供了示例和洞察幕后发生的事情 - 我强烈建议阅读(这是我学到这一切的地方! ):