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.SAML1Constants;
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 SAML1CallbackHandler extends org.apache.wss4j.dom.common.SAML1CallbackHandler {
37
38 private String issuerKeyName;
39 private String issuerKeyPassword;
40 private Crypto issuerCrypto;
41 private boolean signAssertion = true;
42
43 public SAML1CallbackHandler() 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 = SAML1Constants.CONF_SENDER_VOUCHES;
55 issuer = "www.example.com";
56
57
58 }
59
60 public void setSignAssertion(boolean signAssertion) {
61 this.signAssertion = signAssertion;
62 }
63
64 @Override
65 public void handle(Callback[] callbacks)
66 throws IOException, UnsupportedCallbackException {
67
68 super.handle(callbacks);
69
70 for (Callback callback : callbacks) {
71 if (callback instanceof SAMLCallback) {
72 SAMLCallback samlCallback = (SAMLCallback) callback;
73 samlCallback.setIssuerKeyName(issuerKeyName);
74 samlCallback.setIssuerKeyPassword(issuerKeyPassword);
75 samlCallback.setIssuerCrypto(issuerCrypto);
76 samlCallback.setSignAssertion(signAssertion);
77 }
78 }
79 }
80 }