1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml.ws.security;
18
19 import java.security.cert.X509Certificate;
20 import java.util.Arrays;
21
22 import javax.servlet.ServletRequest;
23
24 import org.opensaml.xml.security.credential.UsageType;
25 import org.opensaml.xml.security.x509.BasicX509Credential;
26 import org.opensaml.xml.security.x509.X509Credential;
27
28
29
30
31 public class ServletRequestX509CredentialAdapter extends BasicX509Credential implements X509Credential {
32
33
34 public static final String X509_CERT_REQUEST_ATTRIBUTE = "javax.servlet.request.X509Certificate";
35
36
37
38
39
40
41 public ServletRequestX509CredentialAdapter(ServletRequest request) {
42 X509Certificate[] chain = (X509Certificate[]) request.getAttribute(X509_CERT_REQUEST_ATTRIBUTE);
43 if (chain == null || chain.length == 0) {
44 throw new IllegalArgumentException("Servlet request does not contain X.509 certificates in attribute "
45 + X509_CERT_REQUEST_ATTRIBUTE);
46 }
47
48 setEntityCertificate(chain[0]);
49 setEntityCertificateChain(Arrays.asList(chain));
50 setUsageType(UsageType.SIGNING);
51 }
52 }