33.2 Adding X.509 Authentication to Your Web Application
启用X.509客户端身份验证非常简单。只需将< x509/>元素添加到您的http安全命名空间配置中。
1 <http> 2 ... 3 <x509 subject-principal-regex="CN=(.*?)," user-service-ref="userService"/>; 4 </http>
该元素有两个可选属性:
subject-principal-regex:用于从证书的使用者名称中提取用户名的正则表达式。默认值如上所示。这是用户名,它将被传递给用户详细信息服务UserDetailsService
来为用户加载权限。
user-service-ref:这是将与X.509一起使用的用户详细信息服务UserDetailsService
的bean标识。如果在您的应用程序上下文中只定义了一个,则不需要它。
subject-principal-regex应该包含一个单独的组。例如,默认表达式“CN=(。*?),”匹配常用名称字段。因此,如果证书中的主题名是“CN=Jimi Hendrix, OU=…”,这将给出一个用户名“Jimi Hendrix”。匹配不区分大小写。所以“电子邮件地址=(。?),”将匹配“EMAILADDRESS=jimi@hendrix.org,CN =……”给出用户名“jimi@hendrix.org”。如果客户端提供了证书并且成功提取了有效的用户名,那么在安全上下文中应该有一个有效的身份验证对象。如果找不到证书,或者找不到相应的用户,则安全上下文将保持为空。这意味着您可以轻松地将X.509身份验证与其他选项(如基于表单的登录)一起使用。