protected Optional<ClientCredential> extractClientCredential(final RequestContext context, final String clientName) {
        return FunctionUtils.doIfNotBlank(clientName,
            () -> {
                val client = findDelegatedClientByName(clientName, context);
                DelegationWebflowUtils.putDelegatedAuthenticationClientName(context, client.getName());

                val currentCredential = WebUtils.getCredential(context);
                if (currentCredential instanceof final ClientCredential clientCredential) {
                    return Optional.of(clientCredential);
                }
                return populateContextWithClientCredential(client, context);
            },
            Optional::empty);
    }
This class represents an action to put at the beginning of the webflow.
<p>
Before any authentication, redirection urls are computed for the different clients defined as well as the theme,
locale, method and service are saved into the web session.</p>
After authentication, appropriate information are expected on this callback url to finish the authentication
process with the provider.

@author Jerome Leleu
@since 3.5.0
support/cas-server-support-pac4j-webflow/src/main/java/org/apereo/cas/web/flow/actions/DelegatedClientAuthenticationAction.java