Greetings, I was doing a prototype of using CAS 7.1.2 to act as a provider
for the Oauth Token Exchange flow. In my prototype I had established a
service with the client_credentials flow so that I could easily retrieve an
access token to use for the subject_token.
In my first attempt I had provided a JWT token with a subject_token_type
of urn:ietf:params:oauth:token-type:jwt and I recieved an error stating
that it was an invalid ticket like so:
2024-12-27 16:06:59,279 ERROR
[org.apereo.cas.support.oauth.web.endpoints.OAuth20AccessTokenEndpointController]
- <INVALID_TICKET
AbstractTicketRegistry.java:getTicket:121
DirectMethodHandleAccessor.java:invoke:103
Method.java:invoke:580
AopUtils.java:invokeJoinpointUsingReflection:355
I then changed my subject token to an opaque token and was able to get the
exchange to work.
The next thing I tried was to supply the subject_token_type
of urn:ietf:params:oauth:token-type:jwt and provide a jwt token as the
subject_token. This time I bypassed the above error and encountered an
issue where the CAS Token validator was expecting the "nbf" claim to be on
the JWT. I looked through the code and documentation and could not find any
ways to add the "nbf" claim into the JWT token. All of the JWT tokens I had
generated from CAS using the client_credentials grant.
2024-12-27 13:33:52,652 ERROR
[org.apereo.cas.support.oauth.web.endpoints.OAuth20AccessTokenEndpointController]
- <JWT missing required claims: [nbf]>
com.nimbusds.jwt.proc.BadJWTException: JWT missing required claims: [nbf]
at
com.nimbusds.jwt.proc.DefaultJWTClaimsVerifier.verify(DefaultJWTClaimsVerifier.java:311)
at
org.apereo.cas.support.oauth.validator.token.OAuth20TokenExchangeGrantTypeTokenRequestValidator.extractRegisteredService(OAuth20TokenExchangeGrantTypeTokenRequestValidator.java:87)
at
org.apereo.cas.support.oauth.validator.token.OAuth20TokenExchangeGrantTypeTokenRequestValidator.validateInternal(OAuth20TokenExchangeGrantTypeTokenRequestValidator.java:53)
at
org.apereo.cas.support.oauth.validator.token.BaseOAuth20TokenRequestValidator.validate(BaseOAuth20TokenRequestValidator.java:72)
at
org.apereo.cas.support.oauth.web.endpoints.OAuth20AccessTokenEndpointController.verifyAccessTokenRequest(OAuth20AccessTokenEndpointController.java:217)
at
org.apereo.cas.support.oauth.web.endpoints.OAuth20AccessTokenEndpointController.handleRequest(OAuth20AccessTokenEndpointController.java:100)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
>From this I am ultimately trying to understand if CAS can be configured to
support the token exchange grant when using JWT access tokens as the
subject_token?
Let me know if I can provide any additional information.
--
- 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/8423ee4e-8451-44ea-863d-fd98c50dc6fbn%40apereo.org.