public ActionResult WindowsLogin(string returnUrl = "/", string AppUrl = "", string AppId = "") { if (!User.Identity.IsAuthenticated) { return(new HttpStatusCodeResult(HttpStatusCode.Unauthorized)); } if (IsAuthenticatedByFormsAuthentication()) { return(Redirect(GetAppUrlRedirect(AppId, AppUrl, returnUrl, User.Identity.Name, Request.GetUserToken()))); } Usuario user = unit.UsuarioRepository.AllInclude(x => x.StatusUsuario).SingleOrDefault(x => x.Login.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); if (null == user || user.LogOut || !user.StatusUsuario.Codigo.Equals("A", StringComparison.InvariantCultureIgnoreCase)) { FormsAuthentication.SignOut(); Session.Abandon(); return(RedirectToRoute("Default", new { action = "WebLogin", returnUrl = returnUrl, AppUrl = AppUrl, AppId = AppId })); } var token = tokenManager.GerarToken(user.Id, Request); HttpContext.Response.SetAuthCookie(User.Identity.Name, true, token.Hash); LogOutUser(false, user.Login); ListAlert.Add(new Alert("Autenticado via Domínio", AlertType.Info)); return(Redirect(GetAppUrlRedirect(AppId, AppUrl, returnUrl, User.Identity.Name, token.Hash))); }
public ActionResult Index() { ViewBag.Title = "Home Page"; var user = User.Identity; ListAlert.Add(new Alert("Entrei na Home/Index", AlertType.Info)); return(View()); }
private string GetAppUrlRedirect(string appId, string appUrl, string returnUrl, string login, string userTokenHash) { if (string.IsNullOrWhiteSpace(appId) || string.IsNullOrWhiteSpace(appUrl)) { return(returnUrl.Contains("conta/login") ? "/" : returnUrl); } Uri appUri; Uri.TryCreate(appUrl, UriKind.Absolute, out appUri); if (appUri == null || !appUri.IsAbsoluteUri) { return(returnUrl); } var aplicacao = unit.AplicacaoRepository.GetByAppId(appId); if (aplicacao != null) { // a url informada está cadatrada para a aplicação? if (aplicacao.AplicacaoUrls.Any(x => x.Url.Equals(appUri.Authority, StringComparison.InvariantCultureIgnoreCase))) { //Verificar a permissão do usuário var user = unit.UsuarioRepository.GetByLogin(login); bool temPermissao = unit.UsuarioAplicacaoRepository.VerificarPermissaoUser(login, appId); if (temPermissao) { tokenManager.AddAppUserToken(aplicacao.AppId, userTokenHash); // Criptografar User Token Criptografia cripto = new Criptografia(); cripto.Key = aplicacao.AppKey; var userTokenEncripted = cripto.Encrypt(userTokenHash); return(GetReturnUrlAplicacao(appUri.OriginalString, userTokenEncripted)); } else { ListAlert.Add(new Alert(string.Format("Você não tem acesso para a aplicação '{0}'", aplicacao.Nome), AlertType.Error)); } } else { ListAlert.Add(new Alert(string.Format("Url informada para a aplicação '{0}' não foi encontrada no banco de dados", aplicacao.Nome), AlertType.Error)); } } else { ListAlert.Add(new Alert(string.Format("Aplicação '{0}' não encontrada", aplicacao.Nome), AlertType.Error)); } return(returnUrl); }