/// <summary>
        /// Initiates a new authentication process and returns to the ADFS system.
        /// </summary>
        /// <param name="identityClaim">Claim information from the ADFS</param>
        /// <param name="request">The http request</param>
        /// <param name="authContext">The context for the authentication</param>
        /// <returns>new instance of IAdapterPresentationForm</returns>
        public IAdapterPresentation BeginAuthentication(Claim identityClaim, HttpListenerRequest request, IAuthenticationContext authContext)
        {
#if DEBUG
            Debug.WriteLine(debugPrefix + " Claim value: " + identityClaim.Value);
#endif
            // seperates the username from the domain
            // TODO: Map the domain to the ID3A realm
            string[] tmp      = identityClaim.Value.Split('\\');
            string   username = "";
            if (tmp.Length > 1)
            {
                username = tmp[1];
            }
            else
            {
                username = tmp[0];
            }
            // check if ssl is disabled in the config
            // TODO: Delete for security reasons
            if (!ssl)
            {
                ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
            }

            // trigger challenge
            otp_prov = new OTPprovider(privacyIDEAurl);
            // get a new admin token for all requests if the an admin pw is defined
            // #2
            if (!string.IsNullOrEmpty(admin_pw) && !string.IsNullOrEmpty(admin_user))
            {
                token = otp_prov.getAuthToken(admin_user, admin_pw);
                // trigger a challenge (SMS, Mail ...) for the the user
#if DEBUG
                Debug.WriteLine(debugPrefix + " User: "******" Realm: " + privacyIDEArealm);
#endif
                transaction_id = otp_prov.triggerChallenge(username, privacyIDEArealm, token);
            }
            // set vars to context - fix for 14 and 15
            authContext.Data.Add("userid", username);
            authContext.Data.Add("realm", privacyIDEArealm);
            authContext.Data.Add("transaction_id", transaction_id);

            return(new AdapterPresentationForm(false, uidefinition));
        }
        /// <summary>
        /// Initiates a new authentication process and returns to the ADFS system.
        /// </summary>
        /// <param name="identityClaim">Claim information from the ADFS</param>
        /// <param name="request">The http request</param>
        /// <param name="authContext">The context for the authentication</param>
        /// <returns>new instance of IAdapterPresentationForm</returns>
        public IAdapterPresentation BeginAuthentication(Claim identityClaim, HttpListenerRequest request, IAuthenticationContext authContext)
        {
#if DEBUG
            Debug.WriteLine(debugPrefix + " Claim value: " + identityClaim.Value);
#endif
            // seperates the username from the domain
            // TODO: Map the domain to the ID3A realm
            string   username, domain, upn;
            string[] tmp = identityClaim.Value.Split('\\');

            if (tmp.Length > 1)
            {
                username = tmp[1];
                domain   = tmp[0];
                if (use_upn)
                {
                    // get UPN from sAMAccountName
                    upn = GetUserPrincipalName(username, domain);
                }
                else
                {
                    upn = "not configured";
                }
            }
            else
            {
                username = tmp[0];
                upn      = tmp[0];
                domain   = privacyIDEArealm;
            }
#if DEBUG
            Debug.WriteLine(debugPrefix + " UPN value: " + upn + " Domain value: " + domain);
#endif
            // check if ssl is disabled in the config
            // TODO: Delete for security reasons
            if (!ssl)
            {
                ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
            }

            // use upn or sam as loginname attribute
            if (use_upn)
            {
                username = upn;
            }

            // trigger challenge
            otp_prov = new OTPprovider(privacyIDEAurl);
            // get a new admin token for all requests if the an admin pw is defined
            // #2
            if (!string.IsNullOrEmpty(admin_pw) && !string.IsNullOrEmpty(admin_user))
            {
                token = otp_prov.getAuthToken(admin_user, admin_pw);
                // trigger a challenge (SMS, Mail ...) for the the user
#if DEBUG
                Debug.WriteLine(debugPrefix + " User: "******" Realm: " + privacyIDEArealm);
#endif
                transaction_id = otp_prov.triggerChallenge(username, privacyIDEArealm, token);
            }
            // set vars to context - fix for 14 and 15
            authContext.Data.Add("userid", username);
            authContext.Data.Add("realm", privacyIDEArealm);
            authContext.Data.Add("transaction_id", transaction_id);
            // defeine if massage will be showen
            if (show_challenge)
            {
                message = otp_prov.ChallengeMessage;
            }

            return(new AdapterPresentationForm(false, message, uidefinition));
        }