1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.wss4j.stax.test.saml;
21
22 import org.apache.wss4j.common.crypto.Crypto;
23 import org.apache.wss4j.common.crypto.CryptoFactory;
24 import org.apache.wss4j.common.crypto.CryptoType;
25 import org.apache.wss4j.common.saml.SAMLCallback;
26 import org.apache.wss4j.common.saml.builder.SAML2Constants;
27
28 import javax.security.auth.callback.Callback;
29 import javax.security.auth.callback.UnsupportedCallbackException;
30 import java.io.IOException;
31
32
33
34
35
36 public class SAML2CallbackHandler extends org.apache.wss4j.dom.common.SAML2CallbackHandler {
37
38 private String issuerKeyName;
39 private String issuerKeyPassword;
40 private Crypto issuerCrypto;
41 private boolean signAssertion = true;
42
43 public SAML2CallbackHandler() throws Exception {
44 Crypto crypto = CryptoFactory.getInstance("saml/saml-signed.properties");
45 CryptoType cryptoType = new CryptoType(CryptoType.TYPE.ALIAS);
46 cryptoType.setAlias("transmitter");
47 certs = crypto.getX509Certificates(cryptoType);
48 issuerKeyName = "samlissuer";
49 issuerKeyPassword = "default";
50 issuerCrypto = CryptoFactory.getInstance("saml/samlissuer.properties");
51
52 subjectName = "uid=joe,ou=people,ou=saml-demo,o=example.com";
53 subjectQualifier = "www.example.com";
54 confirmationMethod = SAML2Constants.CONF_SENDER_VOUCHES;
55 issuer = "www.example.com";
56 }
57
58 public void setSignAssertion(boolean signAssertion) {
59 this.signAssertion = signAssertion;
60 }
61
62 @Override
63 public void handle(Callback[] callbacks)
64 throws IOException, UnsupportedCallbackException {
65
66 super.handle(callbacks);
67
68 for (Callback callback : callbacks) {
69 if (callback instanceof SAMLCallback) {
70 SAMLCallback samlCallback = (SAMLCallback) callback;
71 samlCallback.setIssuerKeyName(issuerKeyName);
72 samlCallback.setIssuerKeyPassword(issuerKeyPassword);
73 samlCallback.setIssuerCrypto(issuerCrypto);
74 samlCallback.setSignAssertion(signAssertion);
75 }
76 }
77 }
78 }