Hello,

I'm having issue with proxy authentication when having multiple registered 
services. We have two registered services one UI components(service_1) and 
another rest (service_2).
Here is our Login flow:
user tries to access service_1 and is redirected to CAS login
After authentication CAS send PGT to service_1
service-1 requests a PT for service_2 
service_2 validates that PT
service_1 loads the welcome screens in UI and sends rest calls to service_2 
from UI to load data.
Here service_2 is being redirected to cas login page
I would expect the CAS to authenticate the user via the session but that 
does not happen 
As it was a rest call user does not see the login page and he just sees a 
spinning wheel.
I don't see any exceptions in the logs so any help is appreciated.
Below are my cas properties.
Cas.properties:

cas.server.prefix=https://localhost:8444/cas
cas.view.default-redirect-url=https://localhost:8443
host.name=cas

cas.ticket.st.number-of-uses=1
cas.ticket.st.time-to-kill-in-seconds=2000
cas.ticket.pt.time-to-kill-in-seconds=2000
cas.ticket.tst.time-to-kill-in-seconds=3000
cas.ticket.tgt.primary.time-to-kill-in-seconds=PT2H

cas.http-client.allow-local-urls=true

cas.service-registry.yaml.location=file://${user.home}/

cas.logout.redirectUrl=https://localhost:8443


logging.config=${user.home}/log4j2.xml


####
#########################################################################
# LDAP Authentication
#
cas.authn.ldap[0].type=AUTHENTICATED
cas.authn.ldap[0].ldapUrl=ldap://localhost:10389
cas.authn.ldap[0].baseDn=dc=lawbulletin,dc=com
cas.authn.ldap[0].searchFilter=mail={user}
cas.authn.ldap[0].bindDn=uid=admin,ou=system
cas.authn.ldap[0].bindCredential=*******
cas.authn.ldap[0].principalAttributeList=memberOf,mail,givenName,mobile

# LDAP connection pooling
cas.authn.ldap[0].minPoolSize=3
cas.authn.ldap[0].maxPoolSize=10
cas.authn.ldap[0].connectTimeout=PT3S
cas.authn.ldap[0].responseTimeout=PT3S
cas.authn.ldap[0].blockWaitTime=PT10S

# == Evictor configuration ==
cas.authn.ldap[0].validatePeriod=PT10M
cas.authn.ldap[0].idleTime=PT20M

# == Connection testing settings ==
cas.authn.ldap[0].validatePeriodically=true
cas.authn.ldap[0].validateOnCheckout=false

cas.custom.properties.logoutRedirectUrl=https://localhost:8443

cas.httpWebRequest.header.xframe=false
cas.httpWebRequest.header.xss=false
cas.httpWebRequest.header.xcontent=false

# Disable default CAS user
cas.authn.accept.users=
cas.authn.accept.name=

cas.authn.token.crypto.encryption.key-size=512
cas.authn.token.crypto.signing.key-size=512

# Ticket registry
cas.ticket.registry.jpa.driver-class=com.mysql.cj.jdbc.Driver
cas.ticket.registry.jpa.enabled=true
cas.ticket.registry.jpa.password=********
cas.ticket.registry.jpa.url=jdbc:mysql://localhost:3306/DM_COMM
cas.ticket.registry.jpa.user==********
cas.ticket.registry.jpa.ddl-auto=update
cas.ticket.registry.jpa.dialect=org.hibernate.dialect.MySQLDialect
cas.ticket.registry.jpa.properties.hibernate.dialect.storage_engine=innodb

#mail server
spring.mail.host=localhost
spring.mail.port=25000
spring.mail.testConnection=true


#email MFA config
[email protected]
cas.authn.mfa.simple.mail.subject= Your Requested One-Time Password
cas.authn.mfa.simple.mail.text=file:/${user.home}/emailTemplate.html
cas.authn.mfa.simple.mail.html=true
cas.authn.mfa.simple.mail.attributeName=mail
cas.authn.mfa.simple.token.core.time-to-kill-in-seconds=300


#GoogleAuth config
cas.authn.mfa.gauth.core.issuer=CAS
cas.authn.mfa.gauth.core.label=CASLabel
cas.authn.mfa.triggers.principal.globalPrincipalAttributeNameTriggers=memberOf
cas.authn.mfa.triggers.principal.globalPrincipalAttributeValueRegex=mfa-*
cas.authn.mfa.gauth.bypass.groovy.location=file:/${user.home}/MultifactorBypass.groovy
cas.authn.mfa.simple.bypass.groovy.location=file:/${user.home}/MultifactorBypass.groovy

#Googlle auth JPA config
cas.authn.mfa.gauth.jpa.driver-class=com.mysql.cj.jdbc.Driver
cas.authn.mfa.gauth.jpa.password=*******
cas.authn.mfa.gauth.jpa.url=jdbc:mysql://localhost/DM_COMM
cas.authn.mfa.gauth.jpa.user=*******
cas.authn.mfa.gauth.jpa.ddl-auto=update
cas.authn.mfa.gauth.jpa.dialect=org.hibernate.dialect.MySQLDialect
cas.authn.mfa.gauth.jpa.properties.hibernate.dialect.storage_engine=innodb


cas.webflow.crypto.signing.key=bCECvhcSh3VunipcsaYT2PUKfeLSkJ59tn4MY24xEdq_iRwlRsoq6y3qVPlGo6JwVV0t2bVM2FZAOHXXG0-ZRg
cas.webflow.crypto.encryption.key=VSiHJNQG67-Xcj4Ak6XR_w
cas.authn.mfa.gauth.crypto.encryption.key=toVy_ktn9mxuh1idt5n-kH59KyCezX3wajaIbOmqd0c
cas.authn.mfa.gauth.crypto.signing.key=_yVTQn_7vQbSaIG1XF3mZ9wQ9EPOOJJC5mPUDSzpmnKwxxrwCa1rMtrcPVtzlKEErWtbA8vGq3hy-ukd5mJw6Q


cas.authn.mfa.simple.bucket4j.enabled=true
cas.authn.mfa.simple.bucket4j.blocking=true

cas.authn.mfa.simple.bucket4j.bandwidth[0].capacity=20
cas.authn.mfa.simple.bucket4j.bandwidth[0].duration=PT1M

cas.authn.mfa.simple.bucket4j.bandwidth[1].capacity=5
cas.authn.mfa.simple.bucket4j.bandwidth[1].duration=PT5S

cas.authn.pac4j.webflow.enabled=true
cas.authn.pac4j.core.discovery-selection.selection-type=DYNAMIC

#Delegated Authentication 
cas.authn.pac4j.oidc[0].azure.tenant=*******
cas.authn.pac4j.oidc[0].azure.discovery-uri=https://login.microsoftonline.com/${cas.authn.pac4j.oidc[0].azure.tenant}/v2.0/.well-known/openid-configuration
cas.authn.pac4j.oidc[0].azure.id=*******
cas.authn.pac4j.oidc[0].azure.secret=*******
cas.authn.pac4j.oidc[0].azure.auto-redirect-type=NONE
cas.authn.pac4j.oidc[0].azure.client-name=AzureClient
cas.authn.pac4j.oidc[0].azure.scope=openid,profile,email
cas.authn.pac4j.oidc[0].azure.principal-id-attribute=email
cas.authn.pac4j.oidc[0].azure.css-class=
cas.authn.pac4j.oidc[0].azure.logout-url=https://login.microsoftonline.com/${cas.authn.pac4j.oidc[0].azure.tenant}/v2.0/logout
cas.authn.pac4j.oidc[0].azure.preferred-jws-algorithm=RS512


cas.authn.policy.any.enabled=true

#json rules files defining which domain name currespondes to which IDP
cas.authn.pac4j.core.discovery-selection.json.location=file:/${user.home}/emailToIDPMappingRules.json
screen.pac4j.button.selectprovider=SSO Login

# Set SameSite policy for cross-domain authentication
cas.session-replication.cookie.same-site-policy=LAX

# Ensure the cookie is only sent over HTTPS (I was experimenting with below 
setting to see if that solves the issue)
cas.session-replication.cookie.secure=true
cas.sso.proxy-authn-enabled=true
cas.sso.sso-enabled=true
cas.tgc.secure=false
cas.tgc.same-site-policy=LAX
cas.tgc.max-age=-1
cas.tgc.remember-me-max-age=P14D
cas.tgc.http-only=false
cas.tgc.crypto.encryption.key=PqN1lyOIrdCppLN0MaORzkBFDuaS4ytKWmBgRYVhjwI
cas.tgc.crypto.signing.key=4eWRTqk5RCP97v96pY0Ear6HdTX6kYbNoe32k8nEZjRCDFjXoMzQG3zdEg1fsxpEJL9gGHq7AlOkIp2htvn9Eg
cas.tgc.crypto.alg=A256GCM
cas.tgc.crypto.encryption.key-size=256

#disable caching of html fragments
spring.thymeleaf.cache=false
cas.view.template-prefixes=classpath:templates,file:/templates

cas.ticket.registry.core.enable-locking=false
cas.http-client.allow-local-urls=true

cas.http-web-request.cors.enabled=true
cas.http-web-request.cors.allow-credentials=true
cas.http-web-request.cors.allow-methods=*
cas.http-web-request.cors.allow-headers=*
cas.http-web-request.cors.allow-origin-patterns=https://localhost:8443*

service_1.yml:
--- !<org.apereo.cas.services.CasRegisteredService>
serviceId: "https://localhost:8443/service1/.*";
name: "service1"
id: 1
description: "CAS config for service1"
evaluationOrder : 100
authenticationPolicy: 
!<org.apereo.cas.services.DefaultRegisteredServiceAuthenticationPolicy>
  criteria: 
!<org.apereo.cas.services.AnyAuthenticationHandlerRegisteredServiceAuthenticationPolicyCriteria>
    tryAll: false
proxyPolicy: 
!<org.apereo.cas.services.RegexMatchingRegisteredServiceProxyPolicy>
  pattern: "^https://localhost:8443/.*";
accessStrategy: 
!<org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy>
  enabled: true
  ssoEnabled: true
matchingStrategy: 
!<org.apereo.cas.services.FullRegexRegisteredServiceMatchingStrategy>

service_2.yml:
--- !<org.apereo.cas.services.CasRegisteredService>
serviceId: "https://localhost:8443/service2/.*";
name: "Service2"
id: 2
description: "CAS config for Service2"
logoutUrl: "https://localhost:8443/service2/logout";
logoutType: "FRONT_CHANNEL"
evaluationOrder : 200
proxyPolicy: 
!<org.apereo.cas.services.RegexMatchingRegisteredServiceProxyPolicy>
  pattern: "^https://localhost:8443/.*";
authenticationPolicy: 
!<org.apereo.cas.services.DefaultRegisteredServiceAuthenticationPolicy>
  criteria: 
!<org.apereo.cas.services.AnyAuthenticationHandlerRegisteredServiceAuthenticationPolicyCriteria>
    tryAll: false
accessStrategy: 
!<org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy>
  enabled: true
  ssoEnabled: true
matchingStrategy: 
!<org.apereo.cas.services.FullRegexRegisteredServiceMatchingStrategy>

Thank you,
Gautham

-- 
- 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/555e04ac-ea14-422b-af68-3e2d03528c07n%40apereo.org.

Reply via email to