Thank you for the quick response.

Sending ajax calls to a subdomain the script did not come from will be an 
issue, however, there are solutions (it is doable). My point/question is 
that it won't be as seamless/easy as with simple http browser calls 
(javascript needs special call handlers, iframes, ...) and I would prefer 
to avoid it.

On another comment - we certainly don't want to invalidate active 
application session and ask user to re-login just because our internal JWT 
necessary for internal communication expired.

On Thursday, April 11, 2019 at 1:29:39 PM UTC-4, rbon wrote:
>
> Ken,
>
> To clarify, the TGT is not sent to the client. TGC is all that is needed.
> If all your apps are on same domain, does CORS apply?
>
> You could invalidate your app session when JWT expires. App would then 
> follow normal authentication behaviour and redirect to CAS. This of course 
> would not work if you stored data in the app session. I suppose it is 
> possible to have a field in the session to indication authentication (php 
> probably works like this).
>
> I have not used JWT nor CAS ajax so take my suggestion as a wild idea.
>
> Ray
>
> On Thu, 2019-04-11 at 09:18 -0700, Ken Zilber wrote:
>
> JWT looks as a nice way for a CASified use-facing application to 
> communicate with internal REST APIs/microservices. These microservices 
> can't be accessed by users directly, don't have state and don't need to 
> deal with sessions and don't need to become CAS controlled services and 
> correspondingly we don't need to implement CAS protocol with its Proxy 
> extension that looks a little bit too complex. JWT fits well in this 
> scenario and CAS can become a great way to generate JWTs for internal 
> microservice communication.
>  
> It's also clearly described in the CAS documentation that CAS "JWT, the 
> token itself is not an ID token, cannot be refreshed and must be obtained 
> again once you deem it expired".  
>
> JWT suppose to be a relatively short lived token as it's not easy to 
> invalidate it, so we do need a way to obtain a new one when it expires. In 
> our setting we see two options to do it:
> 1. As soon as the user facing CASified application finds that JWT stored 
> in its user session expired it will issue 302 redirect back to the user 
> with request to re-login (no need for user enter login/password if TGT is 
> still valid). This will produce a new JWT. It will work well for the user 
> http requests, but becomes tricky for the user ajax-like calls due to CORS. 
> It's still doable particular taking into consideration that our CAS server 
> and applications are in the same domain, but involves custom client-side 
> (in the browser) support that concerns me.
> 2. Taking an advantage of having CAS server and application in the same 
> domain we may simply make TGC available for all subdomains in our domain 
> (not just for CAS server). Then using user's TGT from the cookie, 
> application may request new JWT on behalf of the user directly from CAS 
> through a back channel (CAS REST API) when it's needed. I read about 
> concerns that storing TGT in the application session "opens up a big 
> security vulnerability". I don't think it would be applied in our case as 
> application has the TGT only till the user request exists and application 
> does not try to store it. Still, it would be nice to hear other opinions on 
> this.
>
> I appreciate your comments on choosing between #1 and #2 above and it 
> would be also great to hear about other approaches to centrally generate 
> JWT with CAS. Thank you.
>
>

-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/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 on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/4f6ded35-2cb1-48b5-9220-f821e84e2e05%40apereo.org.

Reply via email to