Hey, everyone,
I'm trying to get SAML2 authentication working against my CAS server. I've got CAS protocol authentications working just fine, but am struggling getting the SAML IdP configured correctly. I have the following items configured in my main CAS configuration:
## SAML Provider
cas.authn.samlIdp.metadata.cacheExpirationMinutes=30
cas.authn.samlIdp.metadata.failFast=true
cas.authn.samlIdp.metadata.location=file:///etc/cas/saml
cas.authn.samlIdp.metadata.privateKeyAlgName=RSA
cas.authn.samlIdp.metadata.requireValidMetadata=true
cas.authn.samlIdp.logout.forceSignedLogoutRequests=true
cas.authn.samlIdp.logout.singleLogoutCallbacksDisabled=false
cas.authn.samlIdp.response.skewAllowance=0
cas.authn.samlIdp.response.signError=false
cas.authn.samlIdp.response.useAttributeFriendlyName=true
I also have a JSON-based service registry configured, and have the following entry for the SP that I'm trying to authenticate with:
{
"@class": "org.apereo.cas.support.saml.services.SamlRegisteredService",
"name": "GuacamoleSAML",
"id": 1002,
"evaluationsOrder": 1002,
"metadataLocation": "file:///etc/cas/saml/sp-guacamole.xml"
}
and, finally, I used the web site mentioned in the CAS SAML IdP documentation to generate the metadata:
<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
validUntil="2018-02-17T03:16:28Z"
cacheDuration="PT604800S"
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
index="1" />
</md:SPSSODescriptor>
</md:EntityDescriptor>
However, every time I try to authenticate with this app, I receive the following error:
2018-02-15 12:12:52,559 INFO [org.apereo.cas.support.saml.web.idp.profile.AbstractSamlProfileHandlerController] - <Received SAML profile request [/cas/idp/profile/SAML2/Redirect/SSO]>
2018-02-15 12:12:52,581 ERROR [org.apereo.cas.support.saml.web.idp.profile.AbstractSamlProfileHandlerController] - <CAS has found a match for service [
https://1.2.3.4/guacamole/api/tokens] in registry but the match is not defined as a SAML service>
I can't seem to get much more detail - I think something must be wrong with my logging configuration, because I can't get any debugging. Also, most of the parameters in the cas configuration file for SAML (cas.authn.samlIdp.*) seem to lack documentation - for example, I feel like this could be related to the "cas.authn.samlIdp.scope=
domain.com", but there's no documentation on what's expected or acceptable for the scope, and whether this would generate the error message I'm seeing above? Other than that, as far as I can tell, my JSON service entry matches the documentation, is valid JSON, and defines the mentioned service as a SAML service, so its unclear to me what's leading to this error.
Any pointers would be appreciated!
-Nick