/// <summary>
        /// Starts Suomi.fi logout request.
        /// </summary>
        /// <returns>Redirect URL</returns>
        public string Logout(string sessionId, string sessionIndex)
        {
            var logoutRequest    = new Saml2LogoutRequest();
            var logoutRequestXml = logoutRequest.ToXml(config.Saml2EntityId, config.Saml2IdpEntityId, config.Saml2SLOUrl, sessionId, sessionIndex);

            authStateAccessor.Id = logoutRequest.Id;

            var binding = new Saml2HttpRedirect(string.Empty, crypto);

            binding.Run(logoutRequestXml);

            var redirectUrl = config.Saml2SLOUrl + "?" + binding.RedirectUrl;

            return(redirectUrl);
        }
        /// <summary>
        /// Starts Suomi.fi identification request.
        /// </summary>
        /// <param name="returnUrl">Return URL after identification request, for example https://localhost:39390/SAML/ACSPOST </param>
        /// <param name="language">Language code, for example "fi". Optional, defaults to "fi".</param>
        /// <param name="relayState">Relay state. Optional.</param>
        /// <returns>Redirect URL</returns>
        public string Authenticate(string returnUrl, string language, IRelayState relayState)
        {
            var authRequest    = new Saml2AuthRequest();
            var authRequestXml = authRequest.ToXml(config.Saml2EntityId, config.Saml2SSOUrl, returnUrl, language);

            authStateAccessor.Id = authRequest.Id;

            var binding = new Saml2HttpRedirect(relayState?.ToString(), crypto);

            binding.Run(authRequestXml);

            var redirectUrl = config.Saml2SSOUrl + "?" + binding.RedirectUrl;

            return(redirectUrl);
        }