protected Optional<Credentials> validateAccessToken(final Credentials credentials, final WebContext webContext,
                                                        final String dPopProof) throws Throwable {
        val clientId = webContext.getRequestParameter(OAuth20Constants.CLIENT_ID).orElseThrow();
        val registeredService = (OidcRegisteredService)
            OAuth20Utils.getRegisteredOAuthServiceByClientId(servicesManager, clientId);
        val audit = AuditableContext.builder()
            .registeredService(registeredService)
            .build();
        val accessResult = registeredServiceAccessStrategyEnforcer.execute(audit);
        accessResult.throwExceptionIfNeeded();
        val confirmation = verifyProofOfPossession(webContext, dPopProof, clientId);
        return buildUserProfile(credentials, dPopProof, clientId, confirmation);
    }
This is {@link OidcDPoPAuthenticator}.

@author Misagh Moayyed
@since 6.6.0
support/cas-server-support-oidc-core-api/src/main/java/org/apereo/cas/oidc/authn/OidcDPoPAuthenticator.java