1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.wss4j.policy.stax.assertionStates;
20
21 import org.apache.wss4j.common.WSSPolicyException;
22 import org.apache.wss4j.policy.model.AbstractSecurityAssertion;
23 import org.apache.wss4j.policy.model.AbstractToken;
24 import org.apache.wss4j.policy.model.RelToken;
25 import org.apache.wss4j.policy.stax.PolicyAsserter;
26 import org.apache.xml.security.stax.securityEvent.SecurityEventConstants;
27 import org.apache.xml.security.stax.securityEvent.TokenSecurityEvent;
28 import org.apache.xml.security.stax.securityToken.SecurityToken;
29 import org.apache.wss4j.stax.securityEvent.RelTokenSecurityEvent;
30 import org.apache.wss4j.stax.securityEvent.WSSecurityEventConstants;
31
32
33
34
35
36 public class RelTokenAssertionState extends TokenAssertionState {
37
38 public RelTokenAssertionState(AbstractSecurityAssertion assertion, boolean asserted,
39 PolicyAsserter policyAsserter, boolean initiator) {
40 super(assertion, asserted, policyAsserter, initiator);
41 }
42
43 @Override
44 public SecurityEventConstants.Event[] getSecurityEventType() {
45 return new SecurityEventConstants.Event[]{
46 WSSecurityEventConstants.REL_TOKEN
47 };
48 }
49
50 @Override
51 public boolean assertToken(TokenSecurityEvent<? extends SecurityToken> tokenSecurityEvent,
52 AbstractToken abstractToken) throws WSSPolicyException {
53 if (!(tokenSecurityEvent instanceof RelTokenSecurityEvent)) {
54 throw new WSSPolicyException("Expected a RelTokenSecurityEvent but got " + tokenSecurityEvent.getClass().getName());
55 }
56
57 RelTokenSecurityEvent relTokenSecurityEvent = (RelTokenSecurityEvent) tokenSecurityEvent;
58 RelToken relToken = (RelToken) abstractToken;
59
60 if (relToken.getIssuerName() != null && !relToken.getIssuerName().equals(relTokenSecurityEvent.getIssuerName())) {
61 setErrorMessage("IssuerName in Policy (" + relToken.getIssuerName() + ") didn't match with the one in the RelToken ("
62 + relTokenSecurityEvent.getIssuerName() + ")");
63 getPolicyAsserter().unassertPolicy(getAssertion(), getErrorMessage());
64 return false;
65 }
66
67
68
69
70
71 getPolicyAsserter().assertPolicy(getAssertion());
72 return true;
73 }
74 }