Hi, I've got quite the same issue : it works perfectly with CAS 6.5.9 but
not on 6.6 nor on the master branch 7.x.
On 6.6, after basic auth, a popup asks for the Yubikey pin and then, when I
press the register button,the flow breaks at POST
https://xxxxxxx.xx/cas/webauthn/register/finish.
(FF : err 400 strict-origin-when-cross-origin)
(The service app I use for my tests is the same when I wetn thru every CAS
version)
webAuthnDevices.acces endpoint is AUTHENTICATED in my cas.yml just as you
did
here is my build.gradle webauthn section :
// MFA FIDO2 WEBAUTHN
implementation
"org.apereo.cas:cas-server-support-webauthn:${project.'cas.version'}"
implementation
"org.apereo.cas:cas-server-support-webauthn-redis:${project.'cas.version'}"
implementation
"org.apereo.cas:cas-server-support-webauthn-core:${project.'cas.version'}"
(this one in order to comment out @PreAuthorize("isAuthenticated()") as
you did in
src/main/java/org/apereo/cas/webauthn/web/WebAuthnController.java )
//MFA TRUSTED DEVICE
implementation
"org.apereo.cas:cas-server-support-trusted-mfa:${project.'cas.version'}"
implementation
"org.apereo.cas:cas-server-support-trusted-mfa-redis:${project.'cas.version'}"
(John, what are the extra dependencies that you implement in your
build.gradle cas overlay to be able to modify the
src/main/java/org/apereo/cas/config/WebAuthnConfiguration.java
<https://github.com/apereo/cas/blob/master/support/cas-server-support-webauthn/src/main/java/org/apereo/cas/config/WebAuthnConfiguration.java#L437>
? Compilation breaks)
Regards,
Le jeudi 16 mars 2023 à 04:25:47 UTC+1, John a écrit :
> Circling back to this, it also fails on 7.x current and master. Same
> issue, I believe I have found the source which is related to the csrf
> token. It works by excluding the /register from csrf to the ignored
> endpoints on
>
>
> https://github.com/apereo/cas/blob/master/support/cas-server-support-webauthn/src/main/java/org/apereo/cas/config/WebAuthnConfiguration.java#L437
>
> with the below,
>
> return List.of(WebAuthnController.BASE_ENDPOINT_WEBAUTHN +
> WebAuthnController.WEBAUTHN_ENDPOINT_AUTHENTICATE,
> WebAuthnController.BASE_ENDPOINT_WEBAUTHN +
> WebAuthnController.WEBAUTHN_ENDPOINT_REGISTER);
>
>
>
>
>
> On Monday, February 6, 2023 at 9:53:31 PM UTC-6 John wrote:
>
>> Since we don't use any of the actuators, all disabled except for whatever
>> cas sets as default, I am leaving my change by commenting out
>> @PreAuthorize("isAuthenticated()") in WebAuthnController.java. I'm just
>> going along finishing upgrade testing for us and will circle back to this
>> later before we upgrade prod.
>>
>> However, I do see some changes made below, I haven't had time to test if
>> it will resolve this issue yet, maybe it will be part of next 7.x RC but
>> for now its only in master. If I get some time I will switch to master and
>> give it a go.
>>
>>
>> https://github.com/apereo/cas/commits/master/support/cas-server-support-webauthn/src/main/java/org/apereo/cas/config/WebAuthnConfiguration.java
>>
>>
>> On Friday, February 3, 2023 at 7:11:44 AM UTC-6 [email protected] wrote:
>>
>>> Yes, I have the same registration issue.
>>>
>>> I thought I have caused this error by meddling with the spring security
>>> settings, but it looks like it is not the case.
>>>
>>> However, after setting up spring security for the webAuthnDevices
>>> actuator like this
>>>
>>> spring.security.user.name=XXX
>>>
>>> spring.security.user.password=YYY
>>>
>>> cas.monitor.endpoints.endpoint.webAuthnDevices.access=AUTHENTICATED
>>>
>>>
>>> then registration starts to work, but requires HTTP basic authentication.
>>>
>>>
>>> This is spring security filter chain for /webauthn/register endpoint
>>> without any additional configuration:
>>>
>>> Security filter chain: [
>>>
>>> ChannelProcessingFilter
>>>
>>> WebAsyncManagerIntegrationFilter
>>>
>>> CorsFilter
>>>
>>> CsrfFilter
>>>
>>> SecurityContextHolderAwareRequestFilter
>>>
>>> AnonymousAuthenticationFilter
>>>
>>> ExceptionTranslationFilter
>>>
>>> AuthorizationFilter
>>>
>>> ]
>>>
>>> And the chain with the spring security settings as above:
>>>
>>> Security filter chain: [
>>>
>>> ChannelProcessingFilter
>>>
>>> WebAsyncManagerIntegrationFilter
>>>
>>> CorsFilter
>>>
>>> CsrfFilter
>>>
>>> BasicAuthenticationFilter
>>>
>>> SecurityContextHolderAwareRequestFilter
>>>
>>> AnonymousAuthenticationFilter
>>>
>>> ExceptionTranslationFilter
>>>
>>> AuthorizationFilter
>>>
>>> ]
>>>
>>>
>>> I would say that
>>>
>>> 1) setting the actuator access really influences the processing for
>>> registration endpoint (and it should not),
>>>
>>> 2) using PERMIT or ANONYMOUS is not enough to make it work, as perhaps
>>> it does not satisfy the @PreAuthorize("isAuthenticated()") requirement
>>>
>>> I wonder how the registration endpoint should be authenticated; I guess
>>> it can not be left unprotected but I fail to see how to set it up.
>>>
>>> Regards,
>>>
>>> Michal V.
>>>
>>> On 1/31/23 16:14, John wrote:
>>>
>>> I have nothing configured or defined for endpoints or actuators besides
>>> what is default set by cas, we have never used those. I went back and
>>> configured according to
>>>
>>> management.endpoint.webAuthnDevices.enabled=true
>>> management.endpoints.web.exposure.include=*
>>> cas.monitor.endpoints.endpoint.webAuthnDevices.access=PERMIT
>>>
>>> even tried ANONYMOUS below, which makes all actuators work, I can even
>>> pull /cas/actuator/webAuthnDevices/username anonymously and gets devices
>>> for user. I don't think the endpoint webAuthnDevices controls the end user
>>> registration page as it falls under/webauthn/register and NOT
>>> /cas/actuator/webAuthnDevices
>>>
>>> cas.monitor.endpoints.endpoint.defaults.access=ANONYMOUS
>>>
>>> Below is debug output,
>>>
>>> 2023-01-31 09:05:41,149 DEBUG
>>> [org.apereo.cas.web.FlowExecutionExceptionResolver] - <Ignoring the
>>> received exception
>>> [org.springframework.security.access.AccessDeniedException: Access is
>>> denied] due to a type mismatch with handler
>>> [org.apereo.cas.webauthn.web.WebAuthnController#startRegistration(String,
>>> String, String, boolean, String, HttpServletRequest, HttpServletResponse)]>
>>>
>>> And browser POST response to /webauthn/register , base64 decoded is
>>>
>>> --- !<java.util.LinkedHashMap>
>>> timestamp: "2023-01-31T15:05:41.161+00:00"
>>> status: 403
>>> error: "Forbidden"
>>> path: "/cas/webauthn/register"
>>>
>>>
>>> On Monday, January 30, 2023 at 11:16:42 PM UTC-6 [email protected]
>>> wrote:
>>>
>>>> Hi,
>>>> have you, by any chance, configured spring security for the webauthn
>>>> endpoint?
>>>>
>>>> Best regards,
>>>>
>>>> Michal Vocu
>>>>
>>>> On 1/26/23 19:03, John wrote:
>>>>
>>>> When trying to register a new device, the POST request to
>>>> /webauthn/register is failing from spring security, access denied, http
>>>> 403.
>>>>
>>>> Commenting out the below within
>>>> (support/cas-server-support-webauthn-core/src/main/java/org/apereo/cas/webauthn/web/WebAuthnController.java)
>>>>
>>>> got it working again,
>>>>
>>>> @PreAuthorize("isAuthenticated()")
>>>>
>>>> Looks like it was added in 6.4.x release, is anyone else not having a
>>>> registration issue?
>>>>
>>>> --
>>>> - 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/5ad6db18-8a87-41e9-8216-98f6c1fa8492n%40apereo.org
>>>>
>>>> <https://groups.google.com/a/apereo.org/d/msgid/cas-user/5ad6db18-8a87-41e9-8216-98f6c1fa8492n%40apereo.org?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>>
>>>>
--
- 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/b485ce31-89cf-409b-9f18-6d8e8357951bn%40apereo.org.