After further investigation, it affects localhost only because Apache's 
Urlvalidator considers localhost as invalid by default.
My workaround is to create UrlValidator with "ALLOW_LOCAL_URLS" options, at 
least for development and local testing, and I can use the latest version 
7.2.5

On Friday, 8 August 2025 at 10:40:43 UTC-4 Agus Santosa wrote:

> Thank you for the suggestion, Ray.
> I compared the output between 7.2.3 and 7.2.4 and there's no difference.
>
> I dug the changelog for 7.2.4 and spotted a change in 
> AbstractServiceFactory.java that might be the culprit:
>
> //   if (StringUtils.isNotBlank(originalUrl) && 
> originalUrl.startsWith("http") && originalUrl.contains("?")) {
>                 if (StringUtils.isNotBlank(originalUrl) && 
> SimpleUrlValidator.getInstance().isValid(originalUrl)) {
>
> The commented line was from 7.2.3 and the second line was the newer 7.2.4+
> I tried again to rebuild with 7.2.5, but this time I have 
> AbstractServiceFactory in my overlay and revert above line, and it works.
>
>  I wonder if any CAS developer lurking around this mailing list could 
> comment on this behavior.
>
> On Thursday, 7 August 2025 at 16:29:52 UTC-4 Ray Bon wrote:
>
>> Agus,
>>
>> There may be property changes to check; Property rename or encryption key 
>> length changes.
>>  ./gradlew exportConfigMetadata
>> Will create config-metadata.properties; you can search for your 
>> properties, and in most cases old property descriptions will point to the 
>> new property.
>>
>> Ray
>>
>> ------------------------------
>> *From:* [email protected] <[email protected]> on behalf of Agus 
>> Santosa <[email protected]>
>> *Sent:* August 7, 2025 09:21
>> *To:* CAS Community <[email protected]>
>> *Cc:* Agus Santosa <[email protected]>
>> *Subject:* [cas-user] Re: SAML2 service 7.1.x and 7.2.x 
>>  
>> Just to add more information, I downloaded a clean fresh version 7.2.5 
>> and set it up without any customization. 
>>
>> My json service definition is very basic:
>> {
>>   "@class": "org.apereo.cas.support.saml.services.SamlRegisteredService",
>>   "serviceId": "test-saml",
>>   "name": "testsamlservice",
>>   "id": 100000999,
>>   "evaluationOrder" : 101,
>>   "metadataLocation": 
>> "file:/appl/sit/cas7/config/cihiServices/agus_metadata.xml"
>> }
>>
>> I am using sample application (
>> https://github.com/apereo/saml2-sample-java-webapp) to generate metadata 
>> and test it.
>>
>> I have no idea if there's additional configuration needed for v7.2+. I 
>> tried 7.3 RC and it behaves the same.
>> I guess I'm sticking with 7.1.x for now until I can figure out the 
>> solution.
>>
>>
>> On Wednesday, 6 August 2025 at 10:41:33 UTC-4 Agus Santosa wrote:
>>
>> Hi, 
>>
>> Does anyone notice any difference between 7.1.x and 7.2.x in terms of 
>> SAML2 service registry?
>> For my case, the same SAML2 service works in 7.1.x, but it is somehow not 
>> found/authorized in 7.2.x.
>>
>> This is the log 
>> 2025-08-06 10:06:48,023 TRACE 
>> [org.apereo.cas.services.mgmt.AbstractServicesManager] - <Service 
>> [local-saml-test] is not cached; Searching [JsonServiceRegistry]>
>> 2025-08-06 10:06:48,025 TRACE 
>> [org.apereo.cas.support.saml.services.SamlIdPServicesManagerRegisteredServiceLocator]
>>  
>> - <Reviewing service attributes 
>> [{headers={jakarta.servlet.http.HttpServletRequest.header-host=[localhost:8543],
>>  
>> jakarta.servlet.http.HttpServletRequest.header-user-agent=[Mozilla/5.0 
>> (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0], 
>> jakarta.servlet.http.HttpServletRequest.header-accept=[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8],
>>  
>> jakarta.servlet.http.HttpServletRequest.header-accept-language=[en-US,en;q=0.5],
>>  
>> jakarta.servlet.http.HttpServletRequest.header-accept-encoding=[gzip, 
>> deflate, br, zstd], jakarta.servlet.http.HttpServletRequest.header-referer=[
>> https://localhost:9876/], 
>> jakarta.servlet.http.HttpServletRequest.header-connection=[keep-alive], 
>> jakarta.servlet.http.HttpServletRequest.header-cookie=[JSESSIONID=4A46B00617D6A13EA14E9F3E74A3D75D;
>>  
>> _mkto_trk=id:287-VKI-861&amp;token:_mch-localhost-c73c7200637fdabf3d894f21c3c7ef29;
>>  
>> org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=en-US], 
>> jakarta.servlet.http.HttpServletRequest.header-upgrade-insecure-requests=[1],
>>  
>> jakarta.servlet.http.HttpServletRequest.header-sec-fetch-dest=[document], 
>> jakarta.servlet.http.HttpServletRequest.header-sec-fetch-mode=[navigate], 
>> jakarta.servlet.http.HttpServletRequest.header-sec-fetch-site=[same-site], 
>> jakarta.servlet.http.HttpServletRequest.header-priority=[u=0, i]}, 
>> RelayState=[saml-sp-relay-state], service=[
>> https://localhost:8543/cas/idp/profile/SAML2/Callback?srid=a4g6f37hb5g945je30da1e82j6bh8i7&entityId=local-saml-test],
>>  
>> httpRequest={jakarta.servlet.http.HttpServletRequest.httpMethod=[GET], 
>> jakarta.servlet.http.HttpServletRequest.requestURL=[
>> https://localhost:8543/cas/login], 
>> jakarta.servlet.http.HttpServletRequest.requestURI=[/cas/login], 
>> jakarta.servlet.http.HttpServletRequest.requestId=[1], 
>> jakarta.servlet.http.HttpServletRequest.contextPath=[/cas], 
>> jakarta.servlet.http.HttpServletRequest.localeName=[kubernetes.docker.internal]},
>>  
>> cookies={jakarta.servlet.http.HttpServletRequest.cookie-JSESSIONID=[4A46B00617D6A13EA14E9F3E74A3D75D],
>>  
>> jakarta.servlet.http.HttpServletRequest.cookie-_mkto_trk=[id:287-VKI-861&amp;token:_mch-localhost-c73c7200637fdabf3d894f21c3c7ef29],
>>  
>> jakarta.servlet.http.HttpServletRequest.cookie-org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=[en-US]},
>>  
>> org.apereo.cas.authentication.principal.Service=[
>> https://localhost:8543/cas/idp/profile/SAML2/Callback?srid=a4g6f37hb5g945je30da1e82j6bh8i7&entityId=local-saml-test]}]
>>  
>> for service id [local-saml-test] to match registered service 
>> [localsamltest]>
>> 2025-08-06 10:06:48,026 TRACE 
>> [org.apereo.cas.services.mgmt.AbstractServicesManager] - <No service 
>> definition was provided>
>> 2025-08-06 10:06:48,055 WARN 
>> [org.apereo.cas.services.web.support.RegisteredServiceResponseHeadersEnforcementFilter]
>>  
>> - <Service [AbstractWebApplicationService(id=local-saml-test, 
>> originalUrl=local-saml-test, artifactId=null, principal=null, 
>> source=service, tenant=null, loggedOutAlready=false, format=XML, 
>> attributes={headers={jakarta.servlet.http.HttpServletRequest.header-host=[localhost:8543],
>>  
>> jakarta.servlet.http.HttpServletRequest.header-user-agent=[Mozilla/5.0 
>> (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0], 
>> jakarta.servlet.http.HttpServletRequest.header-accept=[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8],
>>  
>> jakarta.servlet.http.HttpServletRequest.header-accept-language=[en-US,en;q=0.5],
>>  
>> jakarta.servlet.http.HttpServletRequest.header-accept-encoding=[gzip, 
>> deflate, br, zstd], jakarta.servlet.http.HttpServletRequest.header-referer=[
>> https://localhost:9876/], 
>> jakarta.servlet.http.HttpServletRequest.header-connection=[keep-alive], 
>> jakarta.servlet.http.HttpServletRequest.header-cookie=[JSESSIONID=4A46B00617D6A13EA14E9F3E74A3D75D;
>>  
>> _mkto_trk=id:287-VKI-861&amp;token:_mch-localhost-c73c7200637fdabf3d894f21c3c7ef29;
>>  
>> org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=en-US], 
>> jakarta.servlet.http.HttpServletRequest.header-upgrade-insecure-requests=[1],
>>  
>> jakarta.servlet.http.HttpServletRequest.header-sec-fetch-dest=[document], 
>> jakarta.servlet.http.HttpServletRequest.header-sec-fetch-mode=[navigate], 
>> jakarta.servlet.http.HttpServletRequest.header-sec-fetch-site=[same-site], 
>> jakarta.servlet.http.HttpServletRequest.header-priority=[u=0, i]}, 
>> RelayState=[saml-sp-relay-state], service=[
>> https://localhost:8543/cas/idp/profile/SAML2/Callback?srid=a4g6f37hb5g945je30da1e82j6bh8i7&entityId=local-saml-test],
>>  
>> httpRequest={jakarta.servlet.http.HttpServletRequest.httpMethod=[GET], 
>> jakarta.servlet.http.HttpServletRequest.requestURL=[
>> https://localhost:8543/cas/login], 
>> jakarta.servlet.http.HttpServletRequest.requestURI=[/cas/login], 
>> jakarta.servlet.http.HttpServletRequest.requestId=[1], 
>> jakarta.servlet.http.HttpServletRequest.contextPath=[/cas], 
>> jakarta.servlet.http.HttpServletRequest.localeName=[kubernetes.docker.internal]},
>>  
>> cookies={jakarta.servlet.http.HttpServletRequest.cookie-JSESSIONID=[4A46B00617D6A13EA14E9F3E74A3D75D],
>>  
>> jakarta.servlet.http.HttpServletRequest.cookie-_mkto_trk=[id:287-VKI-861&amp;token:_mch-localhost-c73c7200637fdabf3d894f21c3c7ef29],
>>  
>> jakarta.servlet.http.HttpServletRequest.cookie-org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=[en-US]},
>>  
>> org.apereo.cas.authentication.principal.Service=[
>> https://localhost:8543/cas/idp/profile/SAML2/Callback?srid=a4g6f37hb5g945je30da1e82j6bh8i7&entityId=local-saml-test]})]
>>  
>> is not authorized>
>>
>>
>> -- 
>> - Website: https://apereo.github.io/cas
>> - List Guidelines: https://goo.gl/1VRrw7
>> - Contributions: https://goo.gl/mh7qDG
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "CAS Community" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion visit 
>> https://groups.google.com/a/apereo.org/d/msgid/cas-user/dc9b98ad-3f4d-4b5d-9fc9-59efaa584edan%40apereo.org
>>  
>> <https://groups.google.com/a/apereo.org/d/msgid/cas-user/dc9b98ad-3f4d-4b5d-9fc9-59efaa584edan%40apereo.org?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
- Website: https://apereo.github.io/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/d6b04cd3-3eca-494d-bdc8-433608053c4an%40apereo.org.

Reply via email to