@Audit(action = AuditableActions.OAUTH2_ACCESS_TOKEN_REQUEST,
        actionResolverName = AuditActionResolvers.OAUTH2_ACCESS_TOKEN_REQUEST_ACTION_RESOLVER,
        resourceResolverName = AuditResourceResolvers.OAUTH2_ACCESS_TOKEN_REQUEST_RESOURCE_RESOLVER)
    @Override
    public AuditableExecutionResult execute(final AuditableContext auditableContext) throws Throwable {
        val request = (HttpServletRequest) auditableContext.getRequest().orElseThrow();
        val response = (HttpServletResponse) auditableContext.getResponse().orElseThrow();

        val context = new JEEContext(request, response);
        val tokenRequestContext = accessTokenGrantRequestExtractors
            .stream()
            .filter(ext -> ext.supports(context))
            .findFirst()
            .orElseThrow(() -> new UnsupportedOperationException("Access token request is not supported"))
            .extract(context);

        return AuditableExecutionResult
            .builder()
            .authentication(tokenRequestContext.getAuthentication())
            .service(tokenRequestContext.getService())
            .registeredService(tokenRequestContext.getRegisteredService())
            .executionResult(tokenRequestContext)
            .build();
    }
This is {@link AccessTokenGrantAuditableRequestExtractor}.

@author Misagh Moayyed
@since 6.0.0
support/cas-server-support-oauth-core-api/src/main/java/org/apereo/cas/support/oauth/web/response/accesstoken/ext/AccessTokenGrantAuditableRequestExtractor.java