Zum einen müssen Sie SSL für JBoss ermöglichen, Ihre Server-Zertifikat als Schlüsselspeicher verwenden, und ein zugehöriges-Vertrauens Für die CA Cert-Ketten, die die Server-Zertifikate signiert haben, und alle Ketten, die zur Signierung der Client-Zertifikate verwendet werden, möchten Sie mit Ihrem Server interagieren. Sie sollten auch clientAuth auf "true" (Clients müssen ein cert haben) oder "will" setzen (so dass auf eine andere Authentifizierungsmethode wie BASIC zurückgegriffen werden kann, falls der Client kein Client-Zertifikat hat):
nun in Ihrem Web-Anwendung benötigen Sie Frühling konfigurieren und die X509 Pre Auth Filter aktivieren. Dadurch wird der DN des Clients aus dem Servlet-Anforderungsattribut javax.servlet.request.X509Certificate
abgerufen. Ein Teil dieser DN kann dann extrahiert werden (zum Beispiel das CN), und dies wird dann in Verbindung mit einer UserDetailsService
Implementierung verwendet, um die Benutzerdetails (in einer DB oder über einen WS-Ruf zum Beispiel) zu suchen.
Darüber hinaus können Sie die Berechtigung auf der Grundlage der Benutzer Details liefern, wie Rollen, Gruppen, Orgs usw.
Eine einfache Spring-Konfiguration dafür könnte etwa so aussehen (ungeprüft und rein aus dem Gedächtnis der vielen Male, die ich so etwas geschrieben habe):
<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>
Endlich ist es eine ganze Menge Text zu lesen, aber die Dokumentation für Spring Security ist ziemlich gut, und bietet Beispiele und Einblicke, was hinter den Kulissen vor sich geht - ich würde es sehr empfehlen zu lesen (es ist, wo ich das alles gelernt habe!):