public SAMLBindingBaseTestCase, public MessageEncoder::ArtifactGenerator, public MessageDecoder::ArtifactResolver {
public:
void setUp() {
- m_fields.clear();
SAMLBindingBaseTestCase::setUp();
}
void tearDown() {
- m_fields.clear();
SAMLBindingBaseTestCase::tearDown();
}
// Encode message.
auto_ptr<MessageEncoder> encoder(
- SAMLConfig::getConfig().MessageEncoderManager.newPlugin(SAMLConstants::SAML20_BINDING_HTTP_ARTIFACT, NULL)
+ SAMLConfig::getConfig().MessageEncoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_ARTIFACT, NULL)
);
encoder->setArtifactGenerator(this);
- encoder->encode(m_fields,toSend.get(),"https://sp.example.org/","state",m_creds);
+ encoder->encode(*this,toSend.get(),"https://sp.example.org/SAML/Artifact","https://sp.example.org/","state",m_creds);
toSend.release();
// Decode message.
string relayState;
const RoleDescriptor* issuer=NULL;
- bool trusted=false;
- QName idprole(SAMLConstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME);
+ const XMLCh* securityMech=NULL;
+ QName idprole(samlconstants::SAML20MD_NS, IDPSSODescriptor::LOCAL_NAME);
auto_ptr<MessageDecoder> decoder(
- SAMLConfig::getConfig().MessageDecoderManager.newPlugin(SAMLConstants::SAML20_BINDING_HTTP_ARTIFACT, NULL)
+ SAMLConfig::getConfig().MessageDecoderManager.newPlugin(samlconstants::SAML20_BINDING_HTTP_ARTIFACT, NULL)
);
decoder->setArtifactResolver(this);
Locker locker(m_metadata);
auto_ptr<Response> response(
dynamic_cast<Response*>(
- decoder->decode(relayState,issuer,trusted,*this,m_metadata,&idprole,m_trust)
+ decoder->decode(relayState,issuer,securityMech,*this,m_metadata,&idprole,m_trust)
)
);
// Test the results.
TSM_ASSERT_EQUALS("RelayState was not the expected result.", relayState, "state");
TSM_ASSERT("SAML Response not decoded successfully.", response.get());
- TSM_ASSERT("Message was not verified.", issuer && trusted);
+ TSM_ASSERT("Message was not verified.", issuer && securityMech && securityMech==samlconstants::SAML20P_NS);
auto_ptr_char entityID(dynamic_cast<const EntityDescriptor*>(issuer->getParent())->getEntityID());
TSM_ASSERT("Issuer was not expected.", !strcmp(entityID.get(),"https://idp.example.org/"));
TSM_ASSERT_EQUALS("Assertion count was not correct.", response->getAssertions().size(), 1);
// Trigger a replay.
TSM_ASSERT_THROWS("Did not catch the replay.",
- decoder->decode(relayState,issuer,trusted,*this,m_metadata,&idprole,m_trust),
+ decoder->decode(relayState,issuer,securityMech,*this,m_metadata,&idprole,m_trust),
BindingException);
}
catch (XMLToolingException& ex) {
throw;
}
}
-
- const char* getMethod() const {
- return "GET";
- }
-
- const char* getRequestURL() const {
- return "https://sp.example.org/SAML/Artifact";
- }
-
- const char* getQueryString() const {
- return NULL;
- }
SAMLArtifact* generateSAML1Artifact(const char* relyingParty) const {
throw BindingException("Not implemented.");
}
saml1p::Response* resolve(
- bool& authenticated,
+ const XMLCh*& securityMech,
const vector<SAMLArtifact*>& artifacts,
const IDPSSODescriptor& idpDescriptor,
const X509TrustEngine* trustEngine=NULL
}
ArtifactResponse* resolve(
- bool& authenticated,
+ const XMLCh*& securityMech,
const SAML2Artifact& artifact,
const SSODescriptorType& ssoDescriptor,
const X509TrustEngine* trustEngine=NULL
sc->setValue(StatusCode::SUCCESS);
response->marshall();
SchemaValidators.validate(response.get());
- authenticated = true;
+ securityMech = NULL;
return response.release();
}
};