abdessamad,

You could look into upgrading your production java. Security is an important 
part of upgrades, especially for something like cas.
Your user is accessing angular app not the spring boot app, so your user can 
not log in to spring boot app. If I understand correctly, you have two 
problems; how to log in to spring boot service and how does spring boot service 
know this particular user of a particular angular app is the one who 
authenticated.
Possibilities to get the flow working.
1. angular app becomes a cas client (search this user group for discussion on 
this), then it uses the proxy flow I suggested earlier
2. angular app has a login page that redirects to a login page in spring boot 
service, user goes through normal login flow, spring boot app redirects to 
angular app after successful login. You will have to create some login token in 
spring boot app that can be sent to the angular app and used for each api call. 
The token will have to be secured in some way  so a different user can not 
steal it.
3. access to angular app is through a protected page in spring boot service; so 
like option 2 but user accesses spring boot service first

The login page that the angular app received was not from the api response. 
Spring boot cas client blocked (secured) the api and returned the redirect to 
the login page. Your browser followed the redirect to cas login which was then 
consumed by the angular app. The angular app would have to detect this and tell 
the browser to redirect (again). After login, cas will redirect to the spring 
boot service, not the angular app. The spring boot app will then allow the API 
call and the response will be dumped to the browser and not your angular app. 
So how does the user get back to the angular app?

Think of it like this; if your back end is secure, your front end should be as 
well.

Ray

P.S. If the angular app needs to consume a different API, only option 1 will 
work.

On Thu, 2025-01-23 at 03:55 -0800, abdessamad kech wrote:
You don't often get email from abdessamadkec...@gmail.com. Learn why this is 
important<https://aka.ms/LearnAboutSenderIdentification>
Hi Ray,

Our production environment uses Java 8, while CAS 7.1 requires Java 21. I tried 
using CAS 6 with Java 17, but I encountered build errors.
I think the main challenge is configuring Angular to consume CAS service APIs 
and manage the login page and redirection effectively. Angular does not need to 
interact directly with the CAS server, as Spring Security on the CAS server 
handles this flow.

the problem I have is when I call the spring boot app (CAS SERVICE) API from 
Angular  I get the CAS login page HTML as an API response instead of 
redirecting me to it in the browser.

If you have any suggestions or insights on how to resolve these issues, I would 
greatly appreciate it!
Best regards

Le mercredi 22 janvier 2025 à 19:56:02 UTC+1, Ray Bon a écrit :
abdessamad,

I suggest you upgrade to the latest cas version, 7.1.x
It  sounds like your Angular client needs to interact with the Spring Boot 
service with the proxy protocol; see protocol flow 
https://apereo.github.io/cas/7.1.x/protocol/CAS-Protocol.html#proxy-webflow-diagram
and config 
https://apereo.github.io/cas/7.1.x/authentication/Configuring-Proxy-Authentication.html


Ray

On Tue, 2025-01-21 at 17:24 -0800, abdessamad kech wrote:
You don't often get email from abdessam...@gmail.com.Learn why this is 
important<https://aka.ms/LearnAboutSenderIdentification>

Hi,

I set up CAS server 5.3 and configured a Spring Boot Cas service with Spring 
Security to delegate authentication to CAS. It is working fine. When I try to 
call an API (GET, for example) from the browser, I get redirected to the CAS 
login page. After the authentication validation, the resource or API response 
is displayed in the browser as a JSON.

However, I am facing an issue when trying to call the Spring Boot CAS service 
APIs from my Angular client (version 17). When I make the first API call from 
the Angular app, I am not authenticated, so I get the CAS login page as the API 
response. To handle this, I redirect the user to the CAS login page from the 
Angular app. Another problem arises after authentication: instead of returning 
the API response to the Angular app and setting the necessary cookies, the API 
response is displayed directly in the browser.

I have been stuck on this issue for over a week and would greatly appreciate 
any guidance or suggestions to resolve it.
Thank you in advance for your help!


-- 
- 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 cas-user+unsubscr...@apereo.org.
To view this discussion visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/e5735d1b3adb6ba552920ee4a169d7607d80cc8e.camel%40uvic.ca.

Reply via email to