Esempio n. 1
0
        /// <summary>
        /// Refreshes the access token if (a) there is a refresh token, and (b) there is not an unexpired accesstoken
        /// </summary>
        /// <returns>True if the update happened and was successful</returns>
        public async Task <bool> RefreshAccessToken()
        {
            return(await Task.Run <bool>(() =>
            {
                // Don't refresh if no refresh token, or if current access token is still valid
                if (CheckAccessToken() || String.IsNullOrEmpty(AuthState.RefreshToken))
                {
                    return false;
                }

                WebServerClient client = Client();
                try
                {
                    client.RefreshAuthorization(AuthState);
                }
                catch (DotNetOpenAuth.Messaging.ProtocolException ex)
                {
                    GDriveError error = JsonConvert.DeserializeObject <GDriveError>(ExtractResponseString(ex.InnerException as WebException));
                    if (error == null)
                    {
                        throw;
                    }
                    else if (error.error.CompareCurrentCultureIgnoreCase("invalid_grant") == 0)
                    {
                        throw new MyFlightbookException(Branding.ReBrand(Resources.LocalizedText.GoogleDriveBadAuth), ex);
                    }
                    else
                    {
                        throw new MyFlightbookException(String.Format(CultureInfo.CurrentCulture, "Error from Google Drive: {0} {1} {2}", error.error, error.error_description, error.error_uri), ex);
                    }
                }
                return true;
            }));
        }
Esempio n. 2
0
        public IAuthorizationState RequestAccessToken(string refreshToken)
        {
            {
                WebServerClient consumer = new WebServerClient(ServerDescription, ClientID, ClientSecret)
                {
                    AuthorizationTracker = new AuthorizationTracker(Scope)
                };

                IAuthorizationState grantedAccess = PrepareAuthorizationState(refreshToken);

                if (grantedAccess != null)
                {
                    try
                    {
                        consumer.ClientCredentialApplicator = ClientCredentialApplicator.PostParameter(ClientSecret);
                        consumer.RefreshAuthorization(grantedAccess, null);

                        return(grantedAccess);
                    }
                    catch (Exception ex)
                    {
                        _log.Error("RefreshAuthorization() Exception:\r\n{0}\r\n", ex.ToString());
                    }
                }

                return(null);
            }
        }
Esempio n. 3
0
        public string RefreshAuthorization(string identityName, string accessToken)
        {
            //根据参数identityName 从redis 获取到JSON (accessToken,reflashToken)
            //使用NewtonSoft.Json解析成AuthorizationState
            var state = new AuthorizationState //替换成refreshToken
            {
                AccessToken  = accessToken,
                RefreshToken = "aasd"
            };

            //比较accessToken 是否和redis中取出的一致、如果accessToken不一致,表示被第二人从别处登录
            //返回accessToken ="":
            try
            {
                if (_webServerClient.RefreshAuthorization(state))
                {
                    //更新redis 用户Token  键值对
                    // 更新操作
                    accessToken = state.AccessToken;
                }
            }
            catch (Exception ex)
            {
                accessToken = "";
            }

            return(accessToken);
        }
    protected void getIncidents_Click(object sender, EventArgs e)
    {
        try
        {
            if (Authorization == null)
            {
                throw new InvalidOperationException("No access token!");
            }

            if (Authorization.AccessTokenExpirationUtc.HasValue)
            {
                if (Client.RefreshAuthorization(Authorization, TimeSpan.FromSeconds(30)))
                {
                    TimeSpan timeLeft = Authorization.AccessTokenExpirationUtc.Value - DateTime.UtcNow;
                    this.authorizationLabel.Text += string.Format(CultureInfo.CurrentCulture, " - just renewed for {0} more minutes)", Math.Round(timeLeft.TotalMinutes, 1));
                }
            }
            var webClient = new WebClient();
            webClient.Headers[HttpRequestHeader.Authorization] = "Bearer " + Authorization.AccessToken;
            this.getIncidentsLabel.Text = webClient.DownloadString("https://" + ConfigurationManager.AppSettings["instance"] + ".service-now.com/api/now/v2/table/incident?sysparm_limit=1");
        }
        catch (SecurityAccessDeniedException)
        {
            this.getIncidentsLabel.Text = "Access denied!";
        }
        catch (MessageSecurityException)
        {
            this.getIncidentsLabel.Text = "Access denied!";
        }
        catch (Exception error)
        {
            this.getIncidentsLabel.Text = error.Message;
        }
    }
        public ViewResult RefreshToken(RefreshTokenViewModel model)
        {
            if (this.ModelState.IsValid)
            {
                try
                {
                    // Create the client with which we will be connecting to the server.
                    var webServerClient = new WebServerClient(this.AuthorizationServerDescription, clientIdentifier: model.ClientId, clientSecret: model.ClientSecret);

                    // Create an AuthorizationState instance with only the refresh token set. This is all that is needed for
                    // OAuth to be able to determine what token is to be refreshed
                    var authorizationState = new AuthorizationState {
                        RefreshToken = model.RefreshToken
                    };

                    // Refresh an access token (http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-6)
                    // This method will use the client identifier and client secret used when constructing the WebServerAgentClient instance
                    webServerClient.RefreshAuthorization(authorizationState);

                    this.ViewBag.AccessToken = authorizationState;
                }
                catch (Exception ex)
                {
                    this.ViewBag.Exception = ex;
                }
            }

            return(this.View(model));
        }
        public ActionResult Exchange()
        {
            var authorization = client.ProcessUserAuthorization();

            if (authorization != null)
            {
                if (authorization.AccessTokenExpirationUtc.HasValue)
                {
                    client.RefreshAuthorization(authorization, TimeSpan.FromSeconds(30));
                }

                string token = authorization.AccessToken;

                string result = String.Empty;
                using (HttpClient httpClient = new HttpClient())
                {
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue
                                                                         ("Bearer", token);
                    var apiResponse = httpClient.GetAsync("http://www.my-contacts.com/contacts/api/contacts")
                                      .Result;

                    if (apiResponse.IsSuccessStatusCode)
                    {
                        result = apiResponse.Content.ReadAsStringAsync().Result;

                        var contacts = JsonConvert.DeserializeObject <IEnumerable <Contact> >(result);

                        return(View(contacts));
                    }
                }
            }

            return(View());
        }
Esempio n. 7
0
            public void WhenRefreshAuthorizationWithValidAccessToken_ThenGetsNewAccessToken()
            {
                CreateAuthZTokenClient(Clients.Test.ClientApplication.ClientIdentifier,
                                       Clients.Test.ClientApplication.ClientSecret);

                IAuthorizationState result1 = authZTokenClient.ExchangeUserCredentialForToken(
                    Clients.Test.ClientUserAccount.AuthInfo.Username,
                    Clients.Test.ClientUserAccount.Password, new[]
                {
                    AccessScope.Profile
                });

                Assert.True(result1.AccessToken.HasValue());
                Assert.True(result1.AccessTokenIssueDateUtc > DateTime.UtcNow - TimeSpan.FromSeconds(10));
                Assert.True(result1.AccessTokenIssueDateUtc < DateTime.UtcNow + TimeSpan.FromSeconds(10));
                Assert.True(result1.AccessTokenExpirationUtc - DateTime.UtcNow <= TimeSpan.FromMinutes(15));
                Assert.True(result1.RefreshToken.HasValue());
                Assert.Equal(1, result1.Scope.Count);
                Assert.Equal(AccessScope.Profile, result1.Scope.First());

                bool result2 = authZTokenClient.RefreshAuthorization(result1);

                Assert.True(result2);
                Assert.True(result1.AccessToken.HasValue());
                Assert.True(result1.AccessTokenIssueDateUtc > DateTime.UtcNow - TimeSpan.FromSeconds(10));
                Assert.True(result1.AccessTokenIssueDateUtc < DateTime.UtcNow + TimeSpan.FromSeconds(10));
                Assert.True(result1.AccessTokenExpirationUtc - DateTime.UtcNow <= TimeSpan.FromMinutes(15));
                Assert.True(result1.RefreshToken.HasValue());
                Assert.Equal(1, result1.Scope.Count);
                Assert.Equal(AccessScope.Profile, result1.Scope.First());
            }
Esempio n. 8
0
        private T CallService <T>(Func <DataApiClient, T> predicate)
        {
            if (Authorization == null)
            {
                throw new InvalidOperationException("No access token!");
            }

            var wcfClient = new DataApiClient();

            // Refresh the access token if it expires and if its lifetime is too short to be of use.
            if (Authorization.AccessTokenExpirationUtc.HasValue)
            {
                if (Client.RefreshAuthorization(Authorization, TimeSpan.FromSeconds(30)))
                {
                    TimeSpan timeLeft = Authorization.AccessTokenExpirationUtc.Value - DateTime.UtcNow;
                    this.authorizationLabel.Text += string.Format(CultureInfo.CurrentCulture, " - just renewed for {0} more minutes)", Math.Round(timeLeft.TotalMinutes, 1));
                }
            }

            var httpRequest = (HttpWebRequest)WebRequest.Create(wcfClient.Endpoint.Address.Uri);

            ClientBase.AuthorizeRequest(httpRequest, Authorization.AccessToken);

            var httpDetails = new HttpRequestMessageProperty();

            httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers[HttpRequestHeader.Authorization];
            using (var scope = new OperationContextScope(wcfClient.InnerChannel)) {
                OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpDetails;
                return(predicate(wcfClient));
            }
        }
        public ActionResult Index()
        {
            ViewBag.AccessToken  = Request.Form["AccessToken"] ?? "";
            ViewBag.RefreshToken = Request.Form["RefreshToken"] ?? "";
            ViewBag.Action       = "";
            ViewBag.ApiResponse  = "";

            InitializeWebServerClient();
            var accessToken = Request.Form["AccessToken"];

            if (string.IsNullOrEmpty(accessToken))
            {
                var authorizationState = _webServerClient.ProcessUserAuthorization(Request);
                if (authorizationState != null)
                {
                    ViewBag.AccessToken  = authorizationState.AccessToken;
                    ViewBag.RefreshToken = authorizationState.RefreshToken;
                    ViewBag.Action       = Request.Path;
                }
            }

            if (!string.IsNullOrEmpty(Request.Form.Get("submit.Authorize")))
            {
                var userAuthorization = _webServerClient.PrepareRequestUserAuthorization(new[] { "bio", "notes" });
                userAuthorization.Send(HttpContext);
                Response.End();
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.Refresh")))
            {
                var state = new AuthorizationState
                {
                    AccessToken  = Request.Form["AccessToken"],
                    RefreshToken = Request.Form["RefreshToken"]
                };
                if (_webServerClient.RefreshAuthorization(state))
                {
                    ViewBag.AccessToken  = state.AccessToken;
                    ViewBag.RefreshToken = state.RefreshToken;
                }
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApi")))
            {
                var resourceServerUri = new Uri(Paths.ResourceServerBaseAddress);
                var client            = new HttpClient(_webServerClient.CreateAuthorizingHandler(accessToken));
                var body = client.GetStringAsync(new Uri(resourceServerUri, Paths.MePath)).Result;
                ViewBag.ApiResponse = body;
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApiNetCore")))
            {
                var resourceServerUri = new Uri(Paths.ResourceServerNetCoreBaseAddress);
                var client            = new HttpClient(_webServerClient.CreateAuthorizingHandler(accessToken));
                var body = client.GetStringAsync(new Uri(resourceServerUri, Paths.MeNetCorePath)).Result;
                ViewBag.ApiResponse = body;
            }



            return(View());
        }
Esempio n. 10
0
        public async Task <ActionResult> Index()
        {
            ViewBag.AccessToken  = Request.Form["AccessToken"] ?? "";
            ViewBag.RefreshToken = Request.Form["RefreshToken"] ?? "";
            ViewBag.Action       = "";
            ViewBag.ApiResponse  = "";

            InitializeWebServerClient();
            var accessToken = Request.Form["AccessToken"];

            if (string.IsNullOrEmpty(accessToken))
            {
                var authorizationState = _webServerClient.ProcessUserAuthorization(Request);
                if (authorizationState != null)
                {
                    ViewBag.AccessToken  = authorizationState.AccessToken;
                    ViewBag.RefreshToken = authorizationState.RefreshToken;
                    ViewBag.Action       = Request.Path;
                }
            }

            if (!string.IsNullOrEmpty(Request.Form.Get("submit.Authorize")))
            {
                var userAuthorization = _webServerClient.PrepareRequestUserAuthorization(new[] { "bio", "notes" });
                userAuthorization.Send(HttpContext);
                Response.End();
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.Refresh")))
            {
                var state = new AuthorizationState
                {
                    AccessToken  = Request.Form["AccessToken"],
                    RefreshToken = Request.Form["RefreshToken"]
                };
                if (_webServerClient.RefreshAuthorization(state))
                {
                    ViewBag.AccessToken  = state.AccessToken;
                    ViewBag.RefreshToken = state.RefreshToken;
                }
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApi")))
            {
                Raml.RamlApi api = new Raml.RamlApi("http://localhost:11625");
                api.OAuthAccessToken = accessToken;

                //api.AddDefaultRequestHeader("Authorization", "Bearer " + accessToken);

                var response = await api.ApiMe.Get();

                var body = await response.RawContent.ReadAsStringAsync();

                ViewBag.ApiResponse = body;
            }

            return(View());
        }
Esempio n. 11
0
        // GET: AuthCode
        public ActionResult Index()
        {
            ViewBag.AccessToken  = Request.Form["AccessToken"] ?? "";
            ViewBag.RefreshToken = Request.Form["RefreshToken"] ?? "";
            ViewBag.Action       = "";
            ViewBag.ApiResponse  = "";

            var authServer = new AuthorizationServerDescription
            {
                AuthorizationEndpoint = new Uri(Paths.AuthorizationServerBaseAddress + Paths.AuthorizePath),
                TokenEndpoint         = new Uri(Paths.AuthorizationServerBaseAddress + Paths.TokenPath)
            };
            var webServerClient = new WebServerClient(authServer, Clients.Client1.Id, Clients.Client1.Secret);

            var accessToken = Request.Form["AccessToken"];

            if (string.IsNullOrEmpty(accessToken))
            {
                var authorizationState = webServerClient.ProcessUserAuthorization(Request);
                ViewBag.Action = Request.Path;
                if (authorizationState != null)
                {
                    ViewBag.AccessToken  = authorizationState.AccessToken;
                    ViewBag.RefreshToken = authorizationState.RefreshToken;
                }
            }

            if (!string.IsNullOrEmpty(Request.Form.Get("submit.Authorize")))
            {
                var userAuthorization = webServerClient.PrepareRequestUserAuthorization(new[] { "bio", "notes" });
                userAuthorization.Send(HttpContext);
                Response.End();
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.Refresh")))
            {
                var state = new AuthorizationState
                {
                    AccessToken  = Request.Form["AccessToken"],
                    RefreshToken = Request.Form["RefreshToken"]
                };
                if (webServerClient.RefreshAuthorization(state))
                {
                    ViewBag.AccessToken  = state.AccessToken;
                    ViewBag.RefreshToken = state.RefreshToken;
                }
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApi")))
            {
                var client = new HttpClient(webServerClient.CreateAuthorizingHandler(accessToken));
                var body   = client.GetStringAsync(new Uri(Paths.ResourceUserApiPath)).Result;
                ViewBag.ApiResponse = body;
            }
            return(View());
        }
Esempio n. 12
0
        public async Task <ActionResult> Index(string acao, string accessToken, string refreshToken)
        {
            ViewBag.AccessToken  = Request.Form["AccessToken"] ?? "";
            ViewBag.RefreshToken = Request.Form["RefreshToken"] ?? "";
            ViewBag.Action       = "";
            ViewBag.ApiResponse  = "";

            if (string.IsNullOrEmpty(acao))
            {
                if (string.IsNullOrEmpty(accessToken))
                {
                    var authorizationState = _webServerClient.ProcessUserAuthorization(Request);
                    if (authorizationState != null)
                    {
                        ViewBag.AccessToken  = authorizationState.AccessToken;
                        ViewBag.RefreshToken = authorizationState.RefreshToken;
                        ViewBag.Action       = Request.Path;
                    }
                }
            }
            else if (acao == "Authorize")
            {
                var userAuthorization = _webServerClient.PrepareRequestUserAuthorization(new[] { "notas", "administracao" });
                userAuthorization.Send(HttpContext);
                Response.End();
            }
            else if (acao == "Refresh")
            {
                var state = new AuthorizationState
                {
                    AccessToken  = accessToken,
                    RefreshToken = refreshToken
                };
                if (_webServerClient.RefreshAuthorization(state))
                {
                    ViewBag.AccessToken  = state.AccessToken;
                    ViewBag.RefreshToken = state.RefreshToken;
                }
            }
            else if (acao == "Acessar API protegida")
            {
                var resourceServerUri = new Uri(Paths.ResourceServerBaseAddress);
                var client            = new HttpClient(_webServerClient.CreateAuthorizingHandler(accessToken));
                var body = await client.GetStringAsync(new Uri(resourceServerUri, Paths.AlunosPath));

                ViewBag.ApiResponse = body;
            }


            return(View());
        }
Esempio n. 13
0
        protected void RefreshButton_Click(object sender, EventArgs e)
        {
            var state = new AuthorizationState
            {
                AccessToken  = AccessToken.Text,
                RefreshToken = RefreshToken.Text
            };

            if (_webServerClient.RefreshAuthorization(state))
            {
                AccessToken.Text  = state.AccessToken;
                RefreshToken.Text = state.RefreshToken;
            }
        }
Esempio n. 14
0
        /// <summary>
        /// Refreshes the access token if (a) there is a refresh token, and (b) there is not an unexpired accesstoken
        /// </summary>
        /// <returns>True if the update happened and was successful</returns>
        public async Task <bool> RefreshAccessToken()
        {
            return(await Task.Run <bool>(() =>
            {
                // Don't refresh if no refresh token, or if current access token is still valid
                if (CheckAccessToken() || String.IsNullOrEmpty(AuthState.RefreshToken))
                {
                    return false;
                }

                WebServerClient client = Client();
                client.RefreshAuthorization(AuthState);
                return true;
            }));
        }
        /// <summary>
        /// Refreshes the access token if (a) there is a refresh token, and (b) there is not an unexpired accesstoken
        /// </summary>
        /// <returns>True if the update happened and was successful</returns>
        /// <exception cref="DotNetOpenAuth.Messaging.ProtocolException"
        protected async Task <bool> RefreshAccessToken()
        {
            return(await Task.Run <bool>(() =>
            {
                // Don't refresh if no refresh token, or if current access token is still valid
                if (CheckAccessToken() || String.IsNullOrEmpty(AuthState.RefreshToken))
                {
                    return false;
                }

                WebServerClient client = Client();
                client.RefreshAuthorization(AuthState); // Throws DotNetOpenAuth.Messaging.ProtocolException if failure.
                return true;
            }).ConfigureAwait(false));                  // CA2007 - we don't know if we need to be on the same thread.
        }
Esempio n. 16
0
        public ActionResult Login(string returnUrl = "")
        {
            var tokenCookie = Request.Cookies["access_token"];

            if (tokenCookie == null)
            {
                return(View());
            }

            string accessToken  = Request.Cookies["access_token"].Value;
            string refreshToken = "";

            if (_tokenDir.TryRemove(accessToken, out refreshToken))
            {
                var state = new AuthorizationState
                {
                    AccessToken  = accessToken,
                    RefreshToken = refreshToken
                };

                try
                {
                    if (_webServerClient.RefreshAuthorization(state))
                    {
                        _tokenDir[state.AccessToken] = state.RefreshToken;
                        Response.SetCookie(new HttpCookie("access_token", state.AccessToken));

                        if (string.IsNullOrWhiteSpace(returnUrl))
                        {
                            return(Redirect("~/Home"));
                        }

                        return(Redirect(returnUrl));
                    }
                }
                catch (Exception ex)
                {
                    Response.Cookies.Remove("access_token");
                }
            }

            return(View());
        }
Esempio n. 17
0
        public ActionResult Index()
        {
            ViewBag.AccessToken  = Request.Form["AccessToken"] ?? "";
            ViewBag.RefreshToken = Request.Form["RefreshToken"] ?? "";
            ViewBag.Action       = "";
            ViewBag.ApiResponse  = "";

            InitializeWebServerClient();
            var accessToken = Request.Form["AccessToken"];

            if (!string.IsNullOrEmpty(Request.Form.Get("submit.Authorize")))
            {
                var userAuthorization = _webServerClient.PrepareRequestUserAuthorization(new[] { "Email", "Name" }, new Uri(ConfigurationManager.AppSettings["ClientRedirectUrl"]));
                userAuthorization.Send(HttpContext);
                Response.End();
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.Refresh")))
            {
                var state = new AuthorizationState
                {
                    AccessToken  = Request.Form["AccessToken"],
                    RefreshToken = Request.Form["RefreshToken"]
                };

                if (_webServerClient.RefreshAuthorization(state))
                {
                    ViewBag.AccessToken  = state.AccessToken;
                    ViewBag.RefreshToken = state.RefreshToken;
                }
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApi")))
            {
                var resourceServerUri = new Uri(ConfigurationManager.AppSettings["ResourceServerBaseAddress"]);
                var client            = new HttpClient(_webServerClient.CreateAuthorizingHandler(accessToken));
                var body = client.GetStringAsync(new Uri(resourceServerUri, ConfigurationManager.AppSettings["MePath"])).Result;
                ViewBag.ApiResponse = body;
            }

            return(View());
        }
Esempio n. 18
0
        private void PrepareAccessToken()
        {
            if (AuthState != null && AuthState.AccessTokenExpirationUtc > DateTimeOffset.UtcNow.AddSeconds(1))
            {
                return;
            }

            var serverDescription = new AuthorizationServerDescription
            {
                TokenEndpoint = new Uri(TokenEndpoint)
            };

            var client = new WebServerClient(serverDescription, OAuth2ClientId, OAuth2ClientSecret);

            if (AuthState?.RefreshToken == null)
            {
                var scopes = "bets players transactions".Split(' ');
                AuthState = client.GetClientAccessToken(scopes);
            }
            else
            {
                client.RefreshAuthorization(AuthState);
            }
        }
Esempio n. 19
0
        //
        // GET: /Manage/Index
        //public async Task<ActionResult> Index(ManageMessageId? message)
        //{
        //    ViewBag.StatusMessage =
        //        message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
        //        : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
        //        : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
        //        : message == ManageMessageId.Error ? "An error has occurred."
        //        : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
        //        : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
        //        : "";

        //    var userId = User.Identity.GetUserId();
        //    var model = new IndexViewModel
        //    {
        //        HasPassword = HasPassword(),
        //        PhoneNumber = await UserManager.GetPhoneNumberAsync(userId),
        //        TwoFactor = await UserManager.GetTwoFactorEnabledAsync(userId),
        //        Logins = await UserManager.GetLoginsAsync(userId),
        //        BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
        //    };
        //    return View(model);
        //}


        public async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
            : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
            : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
            : message == ManageMessageId.Error ? "An error has occurred."
            : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
            : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
            : "";

            var userId = User.Identity.GetUserId();
            var model  = new IndexViewModel
            {
                HasPassword       = HasPassword(),
                PhoneNumber       = await UserManager.GetPhoneNumberAsync(userId),
                TwoFactor         = await UserManager.GetTwoFactorEnabledAsync(userId),
                Logins            = await UserManager.GetLoginsAsync(userId),
                BrowserRemembered = await AuthenticationManager.
                                    TwoFactorBrowserRememberedAsync(userId)
            };

            ViewBag.AccessToken  = Request.Form["AccessToken"] ?? "";
            ViewBag.RefreshToken = Request.Form["RefreshToken"] ?? "";
            ViewBag.Action       = "";
            ViewBag.ApiResponse  = "";

            InitializeWebServerClient();
            var accessToken = Request.Form["AccessToken"];

            if (string.IsNullOrEmpty(accessToken))
            {
                var authorizationState = _webServerClient.ProcessUserAuthorization(
                    Request);
                if (authorizationState != null)
                {
                    ViewBag.AccessToken  = authorizationState.AccessToken;
                    ViewBag.RefreshToken = authorizationState.RefreshToken;
                    ViewBag.Action       = Request.Path;
                }
            }

            if (!string.IsNullOrEmpty(Request.Form.Get("submit.Authorize")))
            {
                var userAuthorization = _webServerClient.PrepareRequestUserAuthorization(
                    new[] { "bio", "notes" });
                userAuthorization.Send(HttpContext);
                Response.End();
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.Refresh")))
            {
                var state = new AuthorizationState
                {
                    AccessToken  = Request.Form["AccessToken"],
                    RefreshToken = Request.Form["RefreshToken"]
                };
                if (_webServerClient.RefreshAuthorization(state))
                {
                    ViewBag.AccessToken  = state.AccessToken;
                    ViewBag.RefreshToken = state.RefreshToken;
                }
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApi")))
            {
                var resourceServerUri = new Uri(Paths.ResourceServerBaseAddress);
                var client            = new HttpClient(_webServerClient.CreateAuthorizingHandler
                                                           (accessToken));
                var body = client.GetStringAsync(new Uri(resourceServerUri,
                                                         Paths.MePath)).Result;
                ViewBag.ApiResponse = body;
            }

            return(View(model));
        }
        public ActionResult Index()
        {
            ViewBag.AccessToken  = Request.Form["AccessToken"] ?? "";
            ViewBag.RefreshToken = Request.Form["RefreshToken"] ?? "";
            ViewBag.Action       = "";
            ViewBag.ApiResponse  = "";

            InitializeWebServerClient();
            var accessToken = Request.Form["AccessToken"];

            if (string.IsNullOrEmpty(accessToken))
            {
                //Get AccessToken&Refersh Token after getting Authorization Code
                var authorizationState = _webServerClient.ProcessUserAuthorization(Request);
                if (authorizationState != null)
                {
                    ViewBag.AccessToken  = authorizationState.AccessToken;
                    ViewBag.RefreshToken = authorizationState.RefreshToken;
                    ViewBag.Action       = Request.Path;
                }
            }
            //Get Authorization Code
            if (!string.IsNullOrEmpty(Request.Form.Get("submit.Authorize")))
            {
                var userAuthorization = _webServerClient.PrepareRequestUserAuthorization(new[] { "read" });
                userAuthorization.Send(HttpContext);
                Response.End();
            }
            //Refresh Token
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.Refresh")))
            {
                var state = new AuthorizationState
                {
                    AccessToken  = Request.Form["AccessToken"],
                    RefreshToken = Request.Form["RefreshToken"]
                };
                if (_webServerClient.RefreshAuthorization(state))
                {
                    ViewBag.AccessToken  = state.AccessToken;
                    ViewBag.RefreshToken = state.RefreshToken;
                }
            }
            //Call Sophtron API
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApi")))
            {
                var resourceServerUri = new Uri(ServerInfo.ResourceServerBaseAddress);

                //try healthcheck, results as  "this is online."
                var client   = new HttpClient(_webServerClient.CreateAuthorizingHandler(accessToken));
                var response = client.GetAsync(new Uri(resourceServerUri, "/api/Institution/HealthCheckAuth")).Result;
                var contents = response.Content.ReadAsStringAsync();
                ViewBag.ApiResponse = contents.Result;

                //try get userinstitution list results
                StringContent content = new StringContent("{\"UserID\": \"17AD9654-2915-4F5F-A311-A306B901931A\"}", System.Text.Encoding.UTF8, "application/json");
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                response = client.PostAsync(new Uri(resourceServerUri, "/api/UserInstitution/GetUserInstitutionsByUser"), content).Result;

                contents             = response.Content.ReadAsStringAsync();
                ViewBag.ApiResponse += contents.Result;
            }

            return(View());
        }
Esempio n. 21
0
        // GET: Home
        public ActionResult Index()
        {
            ViewBag.AccessToken  = Request.Form["AccessToken"] ?? "";
            ViewBag.RefreshToken = Request.Form["RefreshToken"] ?? "";
            ViewBag.Action       = "";
            ViewBag.ApiResponse  = "";

            InitializeWebServerClient();
            var accessToken       = Request.Form["AccessToken"];
            var resourceServerUri = new Uri(AppSettingValue("ResourceServerUrl"));

            if (string.IsNullOrEmpty(accessToken))
            {
                var authState = mWebServerClient.ProcessUserAuthorization(Request);
                if (authState != null)
                {
                    ViewBag.AccessToken  = authState.AccessToken;
                    ViewBag.RefreshToken = authState.RefreshToken;
                    ViewBag.Action       = Request.Path;
                }
            }

            if (!String.IsNullOrEmpty(Request.Form.Get("submit.Authorize")))
            {
                var userAuth = mWebServerClient.PrepareRequestUserAuthorization(new[] { "profile", "family" });
                userAuth.Send(HttpContext);
                Response.End();
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.Refresh")))
            {
                var state = new AuthorizationState
                {
                    AccessToken  = Request.Form["AccessToken"],
                    RefreshToken = Request.Form["RefreshToken"]
                };
                if (mWebServerClient.RefreshAuthorization(state))
                {
                    ViewBag.AccessToken  = state.AccessToken;
                    ViewBag.RefreshToken = state.RefreshToken;
                }
            }



            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApi")))
            {
                try
                {
                    var meEndpoint = string.Format("{0}api/oauth/profile", AppSettingValue("ResourceServerBaseEndpoint"));
                    var client     = new HttpClient(mWebServerClient.CreateAuthorizingHandler(accessToken));
                    var body       = client.GetStringAsync(new Uri(resourceServerUri, meEndpoint)).Result;
                    ViewBag.ApiResponse = body;
                }
                catch (Exception ex)
                {
                    ViewBag.ApiResponse = new Uri(resourceServerUri, string.Format("{0}api/me", AppSettingValue("ResourceServerBaseEndpoint"))).ToString();
                }
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApiFamily")))
            {
                var familyEndpoint = string.Format("{0}api/oauth/family", AppSettingValue("ResourceServerBaseEndpoint"));
                var client         = new HttpClient(mWebServerClient.CreateAuthorizingHandler(accessToken));
                var body           = client.GetStringAsync(new Uri(resourceServerUri, familyEndpoint)).Result;
                ViewBag.ApiResponse = body;
            }
            else if (!string.IsNullOrEmpty(Request.Form.Get("submit.CallApiPerson")))
            {
                var familyEndpoint = string.Format("{0}api/people/1", AppSettingValue("ResourceServerBaseEndpoint"));
                var client         = new HttpClient(mWebServerClient.CreateAuthorizingHandler(accessToken));
                var body           = client.GetStringAsync(new Uri(resourceServerUri, familyEndpoint)).Result;
                ViewBag.ApiResponse = body;
            }

            return(View());
        }