@GetMapping(ENDPOINT_REDIRECT)
    @Operation(summary = "Redirect to WS-Federation provider",
        parameters = @Parameter(name = PARAMETER_NAME, in = ParameterIn.QUERY, required = true, description = "WS-Federation client id"))
    public View redirectToProvider(
        @RequestParam(value = PARAMETER_NAME, required = true) final String wsfedId,
        final HttpServletRequest request,
        final HttpServletResponse response) {
        val cfg = configurations.stream().filter(configuration -> configuration.getId().equals(wsfedId)).findFirst()
            .orElseThrow(() -> UnauthorizedServiceException.denied("Could not locate WsFederation configuration for %s".formatted(wsfedId)));
        val service = determineService(request);
        val id = wsFederationHelper.getRelyingPartyIdentifier(service, cfg);
        val url = cfg.getAuthorizationUrl(id, cfg.getId());
        wsFederationCookieManager.store(request, response, cfg.getId(), service, cfg);
        return new RedirectView(url);
    }
Redirect to provider. Receive the client name from the request and then try to determine and build the endpoint url
for the redirection. The redirection data/url must contain a delegated client ticket id so that the request be can
restored on the trip back. SAML clients use the relay-state session attribute while others use request parameters.

@param request  the request
@param response the response
@return the view
support/cas-server-support-wsfederation/src/main/java/org/apereo/cas/support/wsfederation/web/WsFederationNavigationController.java