"</sp:AsymmetricBinding>";
@Test
public void testPolicyWithSAMLToken() throws Exception {
PolicyEnforcer policyEnforcer = buildAndStartPolicyEngine(samlPolicyString);
SAMLCallback samlCallback = new SAMLCallback();
samlCallback.setSamlVersion(SAMLVersion.VERSION_20);
samlCallback.setIssuer("http://initiatorTokenIssuer.com");
SubjectBean subjectBean = new SubjectBean();
samlCallback.setSubject(subjectBean);
List<AttributeStatementBean> attributeStatementBeans = new ArrayList<AttributeStatementBean>();
List<AttributeBean> attributeBeans = new ArrayList<AttributeBean>();
List<Object> attributeValues = new ArrayList<Object>();
attributeValues.add("test@example.com");
attributeBeans.add(new AttributeBean("email", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email", attributeValues));
attributeValues.clear();
attributeValues.add("Proper");
attributeBeans.add(new AttributeBean("surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", attributeValues));
attributeStatementBeans.add(new AttributeStatementBean(subjectBean, attributeBeans));
samlCallback.setAttributeStatementData(attributeStatementBeans);
SamlAssertionWrapper samlAssertionWrapper = createSamlAssertionWrapper(samlCallback);
SamlTokenSecurityEvent initiatorTokenSecurityEvent = new SamlTokenSecurityEvent();
SamlSecurityTokenImpl securityToken =
new SamlSecurityTokenImpl(
samlAssertionWrapper, getX509Token(WSSecurityTokenConstants.X509V3Token), null, null,
WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference, null);
securityToken.addTokenUsage(WSSecurityTokenConstants.TokenUsage_MainSignature);
initiatorTokenSecurityEvent.setSecurityToken(securityToken);
policyEnforcer.registerSecurityEvent(initiatorTokenSecurityEvent);
samlCallback.setIssuer("http://recipientTokenIssuer.com");
samlAssertionWrapper = createSamlAssertionWrapper(samlCallback);
SamlTokenSecurityEvent recipientTokenSecurityEvent = new SamlTokenSecurityEvent();
securityToken =
new SamlSecurityTokenImpl(
samlAssertionWrapper, getX509Token(WSSecurityTokenConstants.X509V3Token), null, null,
WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference, null);
securityToken.addTokenUsage(WSSecurityTokenConstants.TokenUsage_MainEncryption);
recipientTokenSecurityEvent.setSecurityToken(securityToken);
policyEnforcer.registerSecurityEvent(recipientTokenSecurityEvent);
List<XMLSecurityConstants.ContentType> protectionOrder = new LinkedList<XMLSecurityConstants.ContentType>();
protectionOrder.add(XMLSecurityConstants.ContentType.SIGNATURE);
protectionOrder.add(XMLSecurityConstants.ContentType.ENCRYPTION);
SignedPartSecurityEvent signedPartSecurityEvent =
new SignedPartSecurityEvent(
(InboundSecurityToken)recipientTokenSecurityEvent.getSecurityToken(), true, protectionOrder);
signedPartSecurityEvent.setElementPath(WSSConstants.SOAP_11_BODY_PATH);
policyEnforcer.registerSecurityEvent(signedPartSecurityEvent);
ContentEncryptedElementSecurityEvent contentEncryptedElementSecurityEvent =
new ContentEncryptedElementSecurityEvent(
(InboundSecurityToken)recipientTokenSecurityEvent.getSecurityToken(), true, protectionOrder);
contentEncryptedElementSecurityEvent.setElementPath(WSSConstants.SOAP_11_BODY_PATH);
policyEnforcer.registerSecurityEvent(contentEncryptedElementSecurityEvent);
OperationSecurityEvent operationSecurityEvent = new OperationSecurityEvent();
operationSecurityEvent.setOperation(new QName("definitions"));
policyEnforcer.registerSecurityEvent(operationSecurityEvent);
policyEnforcer.doFinal();
}