Проблема с реализацией SAML2 между Apereo CAS и Sisense
Я столкнулся с проблемой реализации рабочего процесса, инициированного SP, с использованием Sisense в качестве SP и Apereo CAS версии 5.1.2 в качестве Idp.
Это метаданные SP
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" validUntil="2021-01-28T18:12:42Z" cacheDuration="PT604800S" entityID="https://sisense.domain.com/app/main#/home">
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIDGT..</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIDG...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:emailAddress</NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://sisense.domain.com/api/v1/authentication/login_saml_callback/" index="1"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>
Со стороны SP ожидаются следующие конфигурации.
URl удаленного входа - https://cas.com:8443/cas/idp/profile/SAML2/Redirect/SSO
URL удаленного выхода - https://cas.com:8443/cas/logout
X509 certificate - сертификат от idp
На сервере Cas я настроил определение службы для cas как json
"@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService",
"serviceId" : "https://sisense.domain.com/app/main#/home",
"name" : "SAMLService",
"id" : 10000012,
"evaluationOrder" : 10,
"metadataLocation" : "https://localhost:8443/cas/etc/cas/saml/sisense_metadata.xml",
"usernameAttributeProvider" :{
"@class" : "org.jasig.cas.services.PrincipalAttributeRegisteredServiceUsernameProvider",
"usernameAttribute" : "cn"
}
}
когда рабочий процесс инициируется с вызовом этого URL- адреса https://sisense.domain.com/app/main, SP перенаправляет на конечную точку cas SSO с помощью следующего SAMLRequest
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="_6f357780b767b788a3c0"
Version="2.0"
IssueInstant="2020-04-28T10:48:35.405Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://sisense.domain.com/api/v1/authentication/login_saml_callback/"
Destination="https://cas.com:8443/cas/idp/profile/SAML2/Redirect/SSO"
>
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://sisense.domain.com/app/main#/home</saml:Issuer>
<samlp:NameIDPolicy xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:emailAddress"
AllowCreate="true"
/>
<samlp:RequestedAuthnContext xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Comparison="exact"
>
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
Я не получаю экран входа в систему для CAS, вместо этого получаю 500 Internal Server error с сообщением об ошибке. Не удалось отправить обработчик; вложенное исключение - java.lang.NoSuchMethodError: org.jasig.cas.client.util.CommonUtils.constructServiceUrl(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljava/Ljava / Ljava / Ljava / Ljava /;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
Я не могу продолжить, любая помощь приветствуется
Спасибо