Ejemplo n.º 1
0
        /// <summary>
        /// Returns Speech to Text results for the given audio input.  Will write a WAV/RIFF header to the output stream with the audio details provided.
        /// If ANY audio details are passed in with a null value, a RIFF header will not be written.
        /// </summary>
        /// <returns>Detailed Speech to Text results, including the N best results for the given speech input.</returns>
        /// <param name="audioStream">Audio stream containing the speech.</param>
        /// <param name="sampleRate">The sample rate of the audio stream.</param>
        /// <param name="channelCount">The number of channels in the audio stream.</param>
        /// <param name="bitsPerSample">The bits per sample of the audio stream.</param>
        /// <param name="recordingTask">A <see cref="Task"/> that will complete when recording is complete.</param>
        /// <remarks>
        /// More info here: https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoicerecognition#output-format
        /// </remarks>
        public async Task <RecognitionResult> SpeechToTextDetailed(Stream audioStream, int?sampleRate, int?channelCount, int?bitsPerSample, Task recordingTask = null)
        {
            try
            {
                if (AuthenticationMode == AuthenticationMode.AuthorizationToken)
                {
                    await AuthClient.Authenticate();
                }

                var response = await SendRequest(
                    () => CreateRequest (OutputMode.Detailed),
                    () => PopulateRequestContent (audioStream, channelCount, sampleRate, bitsPerSample, recordingTask));

                if (response != null)
                {
                    return(JsonConvert.DeserializeObject <RecognitionResult> (response));
                }

                return(null);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns Speech to Text results for the given audio input.  Begins sending the audio stream to the server immediately.
        /// </summary>
        /// <returns>Simple Speech to Text results, which is a single result for the given speech input.</returns>
        /// <param name="audioFilePath">Audio file path.</param>
        /// <remarks>
        /// More info here: https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoicerecognition#output-format
        /// </remarks>
        public async Task <RecognitionSpeechResult> SpeechToTextSimple(string audioFilePath)
        {
            try
            {
                if (!string.IsNullOrEmpty(audioFilePath))
                {
                    if (AuthenticationMode == AuthenticationMode.AuthorizationToken)
                    {
                        await AuthClient.Authenticate();
                    }

                    Debug.WriteLine("Authenticated, sending speech request :: {0}", DateTime.Now);

                    var response = await SendRequest(
                        () => CreateRequest (OutputMode.Simple),
                        () => PopulateRequestContent (audioFilePath));

                    if (response != null)
                    {
                        return(JsonConvert.DeserializeObject <RecognitionSpeechResult> (response));
                    }
                }

                return(null);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns Speech to Text results for the given audio input.
        /// </summary>
        /// <returns>Detailed Speech to Text results, including the N best results for the given speech input.</returns>
        /// <param name="audioFilePath">Audio file path.</param>
        /// <remarks>
        /// More info here: https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoicerecognition#output-format
        /// </remarks>
        public async Task <RecognitionResult> SpeechToTextDetailed(string audioFilePath)
        {
            try
            {
                if (AuthenticationMode == AuthenticationMode.AuthorizationToken)
                {
                    await AuthClient.Authenticate();
                }

                var response = await SendRequest(
                    () => CreateRequest (OutputMode.Detailed),
                    () => PopulateRequestContent (audioFilePath));

                if (response != null)
                {
                    return(JsonConvert.DeserializeObject <RecognitionResult> (response));
                }

                return(null);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
        public AuthResponse AuthenticateUser(string username, string password, string relayState = null, bool bWarnPasswordExpired = false, bool bMultiOptionalFactorEnroll = false)
        {
            AuthResponse userAuthClientRsp = null;

            userAuthClientRsp = _authclient.Authenticate(username, password, relayState, bWarnPasswordExpired, bMultiOptionalFactorEnroll);
            _logger.Debug("thisAuth status " + userAuthClientRsp.Status);
            return(userAuthClientRsp);
        }
Ejemplo n.º 5
0
        async Task <string> SendRequest(Func <HttpRequestMessage> requestFactory, Func <HttpContent> contentFactory)
        {
            try
            {
                var request = requestFactory();
                request.Content = contentFactory();

                var response = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead).ConfigureAwait(false);

                if (response != null)
                {
                    Debug.WriteLine($"SendRequest returned {response.StatusCode}");

                    if (response.IsSuccessStatusCode || response.StatusCode == HttpStatusCode.Continue)
                    {
                        //if we get a valid response (non-null, no exception, and not forbidden), then reset our requestRetried var & return the response
                        requestRetried = false;

                        return(await response.Content.ReadAsStringAsync());
                    }

                    //handle expired auth token
                    if ((response.StatusCode == HttpStatusCode.Forbidden || response.StatusCode == HttpStatusCode.Unauthorized) && !requestRetried)
                    {
                        //attempt to re-auth
                        await AuthClient.Authenticate(true);

                        requestRetried = true;                         //just so we don't retry endlessly...

                        //re-create the request and copy the content, then send it again
                        return(await SendRequest(requestFactory, () => CopyRequestContent (request.Content)));
                    }
                    else                     //other bad statuses
                    {
                        var responseContent = await response.Content.ReadAsStringAsync();

                        throw new Exception($"SendRequest: Non-success status received :: Status Code: {response.StatusCode}; Reason: {response.ReasonPhrase}; Content: {responseContent}");
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error in sendRequest: {0}", ex);
                throw;
            }

            throw new Exception("SendRequest: Unable to send successful request - unknown error or null response received");
        }
        async Task <string> SendRequest(Func <HttpRequestMessage> requestFactory, Func <HttpContent> contentFactory)
        {
            try
            {
                using (var client = new HttpClient())
                {
                    var request = requestFactory();
                    request.Content = contentFactory();

                    var response = await client.SendAsync(request).ConfigureAwait(false);

                    if (response != null)
                    {
                        Debug.WriteLine($"SendRequest returned {response.StatusCode}");

                        if (response.IsSuccessStatusCode)
                        {
                            //if we get a valid response (non-null, no exception, and not forbidden), then reset our requestRetried var & return the response
                            requestRetried = false;

                            return(await response.Content.ReadAsStringAsync());
                        }

                        //handle expired auth token
                        if ((response.StatusCode == HttpStatusCode.Forbidden || response.StatusCode == HttpStatusCode.Unauthorized) && !requestRetried)
                        {
                            //attempt to re-auth
                            await AuthClient.Authenticate(true);

                            requestRetried = true;                             //just so we don't retry endlessly...

                            //re-create the request and copy the content, then send it again
                            return(await SendRequest(requestFactory, () => CopyRequestContent (request.Content)));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error in sendRequest: {0}", ex);
                throw;
            }

            Debug.WriteLine("SendRequest: Unable to send successful request, returning null response");

            return(null);
        }
        /// <summary>
        /// Returns Speech to Text results for the given audio input.
        /// </summary>
        /// <returns>Detailed Speech to Text results, including the N best results for the given speech input.</returns>
        /// <param name="audioFilePath">Audio file path.</param>
        /// <remarks>More info here: https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoicerecognition#output-format</remarks>
        public async Task <RecognitionResult> SpeechToTextDetailed(string audioFilePath)
        {
            try
            {
                await AuthClient.Authenticate();

                var response = await SendRequest(
                    () => CreateRequest (OutputMode.Simple),
                    () => PopulateRequestContent (audioFilePath));

                var result = JsonConvert.DeserializeObject <RecognitionResult> (response);

                return(result);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
        /// <summary>
        /// Returns Speech to Text results for the given audio input.
        /// </summary>
        /// <returns>Simple Speech to Text results, which is a single result for the given speech input.</returns>
        /// <param name="audioStream">Audio stream containing the speech.</param>
        /// <param name="channelCount">The number of channels in the audio stream.</param>
        /// <param name="sampleRate">The sample rate of the audio stream.</param>
        /// <param name="bitsPerSample">The bits per sample of the audio stream.</param>
        /// <param name="recordingTask">A <see cref="Task"/> that will complete when recording is complete.</param>
        /// <remarks>More info here: https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoicerecognition#output-format</remarks>
        public async Task <RecognitionSpeechResult> SpeechToTextSimple(Stream audioStream, int channelCount, int sampleRate, int bitsPerSample, Task recordingTask = null)
        {
            try
            {
                await AuthClient.Authenticate();

                var response = await SendRequest(
                    () => CreateRequest (OutputMode.Simple),
                    () => PopulateRequestContent (audioStream, channelCount, sampleRate, bitsPerSample, recordingTask));

                var result = JsonConvert.DeserializeObject <RecognitionSpeechResult> (response);

                return(result);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Calls to the <see cref="AuthEndpoint"/> authentication endpoint to get a JWT token for authentication to the Bing Speech API.  Token is cached and valid for 10 minutes.
 /// </summary>
 /// <param name="forceNewToken">If set to <c>true</c>, force new token even if there is already a cached token.</param>
 /// <remarks>This is called automatically when calling any of the SpeechToText* methods.  Call this separately up front to decrease latency on the initial API call.</remarks>
 public async Task AuthenticateWithToken(bool forceNewToken = false)
 {
     await AuthClient.Authenticate(forceNewToken);
 }
Ejemplo n.º 10
0
        protected override void OnAfterTransition(RegulatorState oldState, RegulatorState newState, object data)
        {
            switch (newState.Name)
            {
            case "AuthLogin":
                var loginData = (AuthRequest)data;
                var result    = AuthClient.Authenticate(loginData);

                if (result == null || !result.Valid)
                {
                    if (result.ReasonText != null)
                    {
                        base.ThrowErrorAndReset(ErrorMessage.FromLiteral(result.ReasonText));
                    }
                    else if (result.ReasonCode != null)
                    {
                        base.ThrowErrorAndReset(ErrorMessage.FromLiteral(
                                                    (GameFacade.Strings.GetString("210", result.ReasonCode) ?? "Unknown Error")
                                                    .Replace("EA.com", AuthClient.BaseUrl.Substring(7).TrimEnd('/'))
                                                    ));
                    }
                    else
                    {
                        base.ThrowErrorAndReset(new Exception("Unknown error"));
                    }
                }
                else
                {
                    this.AuthResult = result;
                    AsyncTransition("InitialConnect");
                }
                break;

            case "InitialConnect":
                try {
                    var connectResult = CityClient.InitialConnectServlet(
                        new InitialConnectServletRequest {
                        Ticket  = AuthResult.Ticket,
                        Version = "Version 1.1097.1.0"
                    });

                    if (connectResult.Status == InitialConnectServletResultType.Authorized)
                    {
                        var cdnurl = connectResult.UserAuthorized.FSOCDNUrl;
                        if (cdnurl != null)
                        {
                            ApiClient.CDNUrl = cdnurl;
                        }

                        if (RequireUpdate(connectResult.UserAuthorized) && !FSOEnvironment.SoftwareKeyboard)
                        {
                            AsyncTransition("UpdateRequired", connectResult.UserAuthorized);
                        }
                        else
                        {
                            AsyncTransition("AvatarData");
                        }
                    }
                    else if (connectResult.Status == InitialConnectServletResultType.Error)
                    {
                        base.ThrowErrorAndReset(ErrorMessage.FromLiteral(connectResult.Error.Code, connectResult.Error.Message));
                    }
                }catch (Exception ex)
                {
                    base.ThrowErrorAndReset(ex);
                }
                break;

            case "UpdateRequired":
                break;

            case "AvatarData":
                try {
                    Avatars = CityClient.AvatarDataServlet();
                    AsyncTransition("ShardStatus");
                }
                catch (Exception ex)
                {
                    base.ThrowErrorAndReset(ex);
                }
                break;

            case "ShardStatus":
                try {
                    ((ClientShards)Shards).All = CityClient.ShardStatus();
                    AsyncTransition("LoggedIn");
                }
                catch (Exception ex)
                {
                    base.ThrowErrorAndReset(ex);
                }
                break;

            case "LoggedIn":
                FSOFacade.Controller.ShowPersonSelection();
                break;
            }
        }
Ejemplo n.º 11
0
        public ActionResult PkceRoute()
        {
            string       userName       = Request["userName"];
            string       passWord       = Request["passWord"];
            string       authnlogin_but = Request["authnlogin_but"];
            string       oidclogin_but  = Request["oidclogin_but"];
            string       oidc_but       = Request["oidc_but"];
            string       location       = Request["location"];
            string       myStatus       = null;
            string       myStateToken;
            string       mySessionToken;
            string       myOktaId = null;
            AuthResponse userAuthClientRsp;

            // set relayState
            string relayState = Request["relayState"];

            TempData["relayState"] = relayState;

            Uri orgUri = new Uri(apiUrl);

            _orgSettings          = new OktaSettings();
            _orgSettings.ApiToken = apiToken;
            _orgSettings.BaseUri  = orgUri;

            _oktaClient  = new OktaClient(_orgSettings);
            _usersClient = new UsersClient(_orgSettings);
            _authClient  = new AuthClient(_orgSettings);
            try
            {
                userAuthClientRsp = _authClient.Authenticate(username: userName, password: passWord, relayState: relayState);
                logger.Debug("thisAuth status " + userAuthClientRsp.Status);
                myStatus       = userAuthClientRsp.Status;
                myStateToken   = userAuthClientRsp.StateToken;
                mySessionToken = userAuthClientRsp.SessionToken;
                if (userAuthClientRsp.Embedded.User != null)
                {
                    myOktaId = userAuthClientRsp.Embedded.User.Id;
                }
            }
            catch (OktaException ex)
            {
                if (ex.ErrorCode == "E0000004")
                {
                    logger.Debug("Invalid Credentials for User: "******"errMessage"] = "Invalid Credentials for User: "******"E0000085")
                {
                    logger.Debug("Access Denied by Polciy for User: "******"errMessage"] = "Access Denied by Polciy for User: "******"errMessage"] = "Access Denied by Polciy for User: "******" = " + ex.ErrorCode + ":" + ex.ErrorSummary);
                    // generic failure
                    TempData["errMessage"] = "Sign in process failed!";
                }
                TempData["userName"] = userName;
                return(RedirectToAction("Login"));
            }

            switch (myStatus)
            {
            case "PASSWORD_WARN":      //password about to expire
                logger.Debug("PASSWORD_WARN ");
                break;

            case "PASSWORD_EXPIRED":      //password has expired
                logger.Debug("PASSWORD_EXPIRED ");
                break;

            case "RECOVERY":      //user has requested a recovery token
                logger.Debug("RECOVERY ");
                break;

            case "RECOVERY_CHALLENGE":      //user must verify factor specific recovery challenge
                logger.Debug("RECOVERY_CHALLENGE ");
                break;

            case "PASSWORD_RESET":         //user satified recovery and must now set password
                logger.Debug("PASSWORD_RESET ");
                break;

            case "LOCKED_OUT":      //user account is locked, unlock required
                logger.Debug("LOCKED_OUT ");
                break;

            case "MFA_ENROLL":       //user must select and enroll an available factor
                logger.Debug("MFA_ENROLL ");
                break;

            case "MFA_ENROLL_ACTIVATE":       //user must activate the factor to complete enrollment
                logger.Debug("MFA_ENROLL_ACTIVATE ");
                break;

            case "MFA_REQUIRED":        //user must provide second factor with previously enrolled factor
                logger.Debug("MFA_REQUIRED ");
                break;

            case "MFA_CHALLENGE":          //use must verify factor specifc challenge
                logger.Debug("MFA_CHALLENGE ");
                break;

            case "SUCCESS":          //authentication is complete
                logger.Debug("SUCCESS");
                TempData["errMessage"] = "Authn Login Successful ";
                TempData["oktaOrg"]    = apiUrl;

                string landingPage = null;
                if (string.IsNullOrEmpty(relayState))
                {
                    landingPage = location + "/AltLanding/UnprotectedLanding";
                }
                else
                {
                    landingPage = relayState;
                }

                //optionaly get session Id locally
                Session oktaSession = new Okta.Core.Models.Session();
                oktaSession = oktaSessionMgmt.CreateSession(mySessionToken);
                string cookieToken = oktaSession.CookieToken;
                logger.Debug("session Id " + oktaSession.Id + " for User " + userName);
                mySessionToken = cookieToken;

                //exchange sessionToken for sessionCookie in OIDC Implicit workflow
                Random random       = new Random();
                string nonceValue   = random.Next(99999, 1000000).ToString();
                string stateCode    = "myStateInfo";
                string codeVerifier = oktaOidcHelper.CreateCodeVerifier();
                //store codeVerifier for token endpoint
                cacheService.SavePasscode("myKey", codeVerifier);
                string codeChallenge = oktaOidcHelper.CreateCodeChallenge(codeVerifier);
                string oauthUrl      = appSettings["oidc.authServer"] + "/v1/authorize?response_type=code&response_mode=query&code_challenge_method=S256&code_challenge=" + codeChallenge + "&client_id=" + appSettings["oidc.spintnative.clientId"] + "&scope=" + appSettings["oidc.scopes"] + "&state=" + stateCode + "&nonce=" + nonceValue + "&redirect_uri=" + appSettings["oidc.spintnative.RedirectUri_PKCE"] + "&sessionToken=" + mySessionToken + "&extra_param=myFavoriteData";
                return(Redirect(oauthUrl));



            //break;
            default:
                logger.Debug("Status: " + myStatus);
                TempData["errMessage"] = "Status: " + myStatus;
                break;
            }//end of switch
            TempData["userName"] = userName;

            return(RedirectToAction("UnprotectedLanding", "AltLanding"));
        }
Ejemplo n.º 12
0
        public ActionResult ImplicitRoute()
        {
            string       userName       = Request["userName"];
            string       passWord       = Request["passWord"];
            string       authnlogin_but = Request["authnlogin_but"];
            string       oidclogin_but  = Request["oidclogin_but"];
            string       oidc_but       = Request["oidc_but"];
            string       location       = Request["location"];
            string       myStatus       = null;
            string       myStateToken;
            string       mySessionToken;
            string       myOktaId = null;
            AuthResponse userAuthClientRsp;

            // set relayState
            string relayState = Request["relayState"];

            TempData["relayState"] = relayState;

            Uri orgUri = new Uri(apiUrl);

            _orgSettings          = new OktaSettings();
            _orgSettings.ApiToken = apiToken;
            _orgSettings.BaseUri  = orgUri;

            _oktaClient  = new OktaClient(_orgSettings);
            _usersClient = new UsersClient(_orgSettings);
            _authClient  = new AuthClient(_orgSettings);
            try
            {
                userAuthClientRsp = _authClient.Authenticate(username: userName, password: passWord, relayState: relayState);
                logger.Debug("thisAuth status " + userAuthClientRsp.Status);
                myStatus       = userAuthClientRsp.Status;
                myStateToken   = userAuthClientRsp.StateToken;
                mySessionToken = userAuthClientRsp.SessionToken;
                if (userAuthClientRsp.Embedded.User != null)
                {
                    myOktaId = userAuthClientRsp.Embedded.User.Id;
                }
            }
            catch (OktaException ex)
            {
                if (ex.ErrorCode == "E0000004")
                {
                    logger.Debug("Invalid Credentials for User: "******"errMessage"] = "Invalid Credentials for User: "******"E0000085")
                {
                    logger.Debug("Access Denied by Polciy for User: "******"errMessage"] = "Access Denied by Polciy for User: "******"errMessage"] = "Access Denied by Polciy for User: "******" = " + ex.ErrorCode + ":" + ex.ErrorSummary);
                    // generic failure
                    TempData["errMessage"] = "Sign in process failed!";
                }
                TempData["userName"] = userName;
                return(RedirectToAction("Login"));
            }

            switch (myStatus)
            {
            case "PASSWORD_WARN":      //password about to expire
                logger.Debug("PASSWORD_WARN ");
                break;

            case "PASSWORD_EXPIRED":      //password has expired
                logger.Debug("PASSWORD_EXPIRED ");
                break;

            case "RECOVERY":      //user has requested a recovery token
                logger.Debug("RECOVERY ");
                break;

            case "RECOVERY_CHALLENGE":      //user must verify factor specific recovery challenge
                logger.Debug("RECOVERY_CHALLENGE ");
                break;

            case "PASSWORD_RESET":         //user satified recovery and must now set password
                logger.Debug("PASSWORD_RESET ");
                break;

            case "LOCKED_OUT":      //user account is locked, unlock required
                logger.Debug("LOCKED_OUT ");
                break;

            case "MFA_ENROLL":       //user must select and enroll an available factor
                logger.Debug("MFA_ENROLL ");
                break;

            case "MFA_ENROLL_ACTIVATE":       //user must activate the factor to complete enrollment
                logger.Debug("MFA_ENROLL_ACTIVATE ");
                break;

            case "MFA_REQUIRED":        //user must provide second factor with previously enrolled factor
                logger.Debug("MFA_REQUIRED ");
                break;

            case "MFA_CHALLENGE":          //use must verify factor specifc challenge
                logger.Debug("MFA_CHALLENGE ");
                break;

            case "SUCCESS":          //authentication is complete
                logger.Debug("SUCCESS");
                TempData["errMessage"] = "Authn Login Successful ";
                TempData["oktaOrg"]    = apiUrl;

                string landingPage = null;
                if (string.IsNullOrEmpty(relayState))
                {
                    landingPage = location + "/AltLanding/UnprotectedLanding";
                }
                else
                {
                    landingPage = relayState;
                }

                ////optionaly get session Id locally
                //Session oktaSession = new Okta.Core.Models.Session();
                //oktaSession = oktaSessionMgmt.CreateSession(mySessionToken);
                //string cookieToken = oktaSession.CookieToken;
                //logger.Debug("session Id " + oktaSession.Id + " for User " + userName);
                //mySessionToken = cookieToken;

                //exchange sessionToken for sessionCookie in OIDC Implicit workflow
                Random random     = new Random();
                string nonceValue = random.Next(99999, 1000000).ToString();
                string stateCode  = "myStateInfo";
                string oauthUrl   = appSettings["oidc.authServer"] + "/v1/authorize?response_type=token id_token&response_mode=form_post&client_id=" + appSettings["oidc.spintweb.clientId"] + "&scope=" + appSettings["oidc.scopes"] + "&state=" + stateCode + " &nonce=" + nonceValue + "&redirect_uri=" + appSettings["oidc.spintweb.RedirectUri"] + "&sessionToken=" + mySessionToken;
                //string oauthUrl = appSettings["oidc.authServer"] + "/v1/authorize?idp=0oak4qcg796eVYakY0h7&response_type=id_token token&response_mode=form_post&client_id=" + appSettings["oidc.spintweb.clientId"] + "&scope=" + appSettings["oidc.scopes"] + "&state=" + stateCode + " &nonce=" + nonceValue + "&redirect_uri=" + appSettings["oidc.spintweb.RedirectUri"] + "&sessionToken=" + mySessionToken;
                return(Redirect(oauthUrl));


            //NOT Typical
            //have idToken returned in response
            //IRestResponse response = null;
            //var client = new RestClient(MvcApplication.apiUrl + "/oauth2/v1/authorize");
            //var request = new RestRequest(Method.GET);
            //request.AddHeader("Accept", "application/json");
            //request.AddHeader("Content-Type", "application/json");
            ////request.AddHeader("Authorization", " SSWS " + MvcApplication.apiToken);
            //request.AddQueryParameter("client_id", appSettings["oidc.spintweb.clientId"]);
            //request.AddQueryParameter("response_type", "id_token");
            ////request.AddQueryParameter("response_type", "token");
            //request.AddQueryParameter("response_mode", "okta_post_message");
            //request.AddQueryParameter("scope", "openid");
            //request.AddQueryParameter("prompt", "none");
            //request.AddQueryParameter("redirect_uri", appSettings["oidc.spintweb.RedirectUri"]);
            //request.AddQueryParameter("state", "myStateInfo");
            //request.AddQueryParameter("nonce", "myNonce");
            //request.AddQueryParameter("sessionToken", mySessionToken);
            //response = client.Execute(request);
            //int myIndex_01 = response.Content.IndexOf("data.id_token =");
            //string firstBreak = response.Content.Substring(myIndex_01 + 17);
            //int myIndex_02 = firstBreak.IndexOf(";");
            //int subLength = myIndex_02 - 1;
            //string myIdToken = firstBreak.Substring(0, subLength);
            //logger.Debug(myIdToken);
            //ViewBag.HtmlStr = response.Content;
            //return View("../AltLanding/MyContent");



            // break;
            default:
                logger.Debug("Status: " + myStatus);
                TempData["errMessage"] = "Status: " + myStatus;
                break;
            }//end of switch
            TempData["userName"] = userName;

            return(RedirectToAction("UnprotectedLanding", "AltLanding"));
        }