Ejemplo n.º 1
0
        public async Task <Response> SignIn(UserViewModel model)
        {
            try
            {
                User _user = null;
                if (!string.IsNullOrEmpty(model.Email))
                {
                    _user = await this._repository.GetByEmail(model.Email);
                }

                if (_user != null)
                {
                    bool authorized = Crypto.ComparePassword(model.Password, new Encoded(_user.Password));

                    if (authorized)
                    {
                        var _model = this._mapper.Map <UserViewModel>(_user);
                        var _auth  = new Auth <UserViewModel>(Jwt.CreateToken(model.Email), _model);
                        return(Ok(_auth, HttpMessage.Login_Authorized));
                    }
                    else
                    {
                        return(Unauthorized("A conta informada é inválida!"));
                    }
                }
                else
                {
                    return(Unauthorized("A conta informada é inválida!"));
                }
            }
            catch (Exception except)
            {
                return(await InternalServerError(except.Message));
            }
        }
        public ActionResult Editar(FormCollection collection)
        {
            var User = new User();

            User.Id         = new Jwt().ObtenerId();
            User.Nombre     = collection["Nombre"];
            User.Apellido   = collection["Apellido"];
            User.Contrasena = collection["Contrasena"];
            User.Username   = collection["Username"];
            User.Telefono   = int.Parse(collection["Telefono"]);


            var Direccion = "Perfil/" + new Jwt().ObtenerId();
            var Respuesta = Data.Instancia.RocketChat.Cliente.PutAsJsonAsync(Direccion, User);

            Respuesta.Wait();
            var Result = Respuesta.Result;

            if (Result.StatusCode == HttpStatusCode.OK)
            {
                return(RedirectToAction("CerrarSesion"));
            }
            TempData["id"] = new Jwt().ObtenerId();
            return(RedirectToAction("Editar", "Perfil"));
        }
Ejemplo n.º 3
0
        public void Write_Valid(string token)
        {
            var       descriptor = _tokens.Descriptors[token];
            JwtWriter writer     = new JwtWriter();
            var       value      = writer.WriteToken(descriptor);

            var policy = new TokenValidationPolicyBuilder()
                         .WithDecryptionKeys(_keys.Jwks)
                         .IgnoreSignatureByDefault()
                         .Build();

            var result = Jwt.TryParse(value, policy, out var jwt);

            Assert.True(result);

            if (!(descriptor is JwsDescriptor jwsPayload))
            {
                if (!(descriptor is JweDescriptor jwePayload))
                {
                    throw new Xunit.Sdk.IsNotTypeException(typeof(JwtDescriptor), descriptor);
                }

                jwsPayload = jwePayload.Payload;
            }

            Assert.NotNull(jwsPayload);
            if (jwsPayload.Payload.Count > 0)
            {
                Assert.True(jwt.Payload.TryGetClaim("iat", out var iat));
                Assert.True(jwt.Payload.TryGetClaim("exp", out var exp));
                Assert.True(jwt.Payload.TryGetClaim("iss", out var iss));
                Assert.True(jwt.Payload.TryGetClaim("aud", out var aud));
                Assert.True(jwt.Payload.TryGetClaim("jti", out var jti));
            }
        }
Ejemplo n.º 4
0
        public bool Parse()
        {
            var result = Jwt.TryParse(Token.Data, Token.Policy, out var jwt);

            jwt.Dispose();
            return(result);
        }
Ejemplo n.º 5
0
        public void Create_DataCorrect_InvoiceCreated()
        {
            var user = UserFaker.Create();

            var project = ProjectFaker.Create();

            var amount = Rand.SmallDecimal();

            CurrencyWalletFaker.Create(CurrencyType.BitCoin);

            var result = new Browser(new DefaultNancyBootstrapper())
                         .Post("/api/v1/invoice/new", with => {
                with.HttpRequest();
                with.Query("api_token", Jwt.FromUserId(user.id));
                with.Query("entity_guid", project.guid);
                with.Query("entity_type", EntityType.Project.ToString());
                with.Query("amount", amount.ToString(CultureInfo.InvariantCulture));
                with.Query("currency_type", CurrencyType.BitCoin.ToString());
            }).Result;

            Assert.AreEqual(1, global::App.DL.Model.Funding.Invoice.GetActiveForUser(user).Length);
            Assert.AreEqual(HttpStatusCode.Created, result.StatusCode);

            var jsonData = JObject.Parse(result.Body.AsString())["data"]["invoice"];

            Assert.AreEqual(project.guid, jsonData.Value <string>("entity_guid") ?? "");
            Assert.AreEqual(amount, jsonData.Value <decimal?>("amount") ?? 0);
        }
        public ActionResult UserNameToId(string usernameReceptor)
        {
            var idEmisor = new Jwt().ObtenerId();

            if (idEmisor != "")
            {
                var Direccion = "Perfil/" + idEmisor;
                var Respuesta = Data.Instancia.RocketChat.Cliente.GetAsync(Direccion);
                Respuesta.Wait();
                var Resultado = Respuesta.Result;
                var ReadTask  = Resultado.Content.ReadAsStringAsync();
                ReadTask.Wait();

                var user       = JsonConvert.DeserializeObject <User>(ReadTask.Result);
                var idReceptor = "";

                foreach (var ItemConversacion in user.Conversaciones)
                {
                    if (ItemConversacion.Split('.')[0] == usernameReceptor)
                    {
                        idReceptor = ItemConversacion.Split('.')[1];
                    }
                }
                return(RedirectToAction("Mensajes", new { id = idReceptor }));
            }
            return(RedirectToAction("Conversaciones", "Conversaciones"));
        }
        public ActionResult MandarMensajes(FormCollection collection)
        {
            var idReceptor    = TempData["receptor"];
            var cuerpoMensaje = collection["Contenido"];
            var idEmisor      = new Jwt().ObtenerId();
            var mensaje       = new Msg();

            mensaje.Contenido = cuerpoMensaje;

            TempData.Remove("receptor");
            if (idEmisor != "")
            {
                var Direccion = "Chat/" + idEmisor + "/" + idReceptor;
                var Respuesta = Data.Instancia.RocketChat.Cliente.PutAsJsonAsync(Direccion, mensaje);
                Respuesta.Wait();
                var Resultado = Respuesta.Result;
                if (Resultado.StatusCode == HttpStatusCode.OK)
                {
                    var readTask = Resultado.Content.ReadAsStringAsync();
                    readTask.Wait();
                    return(RedirectToAction("Mensajes", new { id = idReceptor }));
                }
                else
                {
                    return(RedirectToAction("HomePerfil", "Perfil"));
                }
            }
            else
            {
                return(RedirectToAction("Index", "Login"));
            }
        }
Ejemplo n.º 8
0
        public IActionResult Logar(UsuarioViewModel login)
        {
            try
            {
                Usuarios usuarioBuscado = _usuarioService.BuscarPorEmailESenha(login.Nif, login.Senha);

                if (usuarioBuscado == null)
                {
                    return(NotFound(new
                    {
                        mensagem = "Email ou senha inválidos."
                    }));
                }

                //Retorna Ok com o Token
                return(Ok(new
                {
                    token = Jwt.GerarToken(usuarioBuscado)
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { mensagem = "Ocorreu um erro, contate o administrador.", erro = ex.Message }));
            }
        }
        public void Create_DataCorrect_CardCreated()
        {
            var user    = UserFaker.Create();
            var column  = BoardColumnFaker.Create(user);
            var browser = new Browser(new DefaultNancyBootstrapper());

            var cardTitle   = "testCard" + Rand.SmallInt();
            var description = "descriptionCard" + Rand.SmallInt();
            var columnOrder = Convert.ToString(Rand.IntRange(1, 25));

            var result = browser.Post("/api/v1/card/create", with => {
                with.HttpRequest();
                with.Query("api_token", Jwt.FromUserId(user.id));
                with.Query("name", cardTitle);
                with.Query("description", description);
                with.Query("column_guid", column.guid);
                with.Query("column_order", columnOrder);
                with.Query("creator_guid", user.guid);
            }).Result;

            Assert.AreEqual(HttpStatusCode.Created, result.StatusCode);

            var json = JObject.Parse(result.Body.AsString());

            var guid = json["data"]["card"].Value <string>("guid") ?? "";

            var createdCard = CardRepository.FindByGuid(guid);

            Assert.NotNull(createdCard);
            Assert.AreEqual(cardTitle, createdCard.name);
            Assert.AreEqual(columnOrder, Convert.ToString(createdCard.column_order));
            Assert.AreEqual(
                createdCard.guid, json["data"]["card"].Value <string>("guid") ?? ""
                );
        }
Ejemplo n.º 10
0
        public static IEnumerator GetToken(Action <string> callback)
        {
            if (expires > DateTime.Now)
            {
                callback(token);
                yield break;
            }

            string jwt = Jwt.GetJwt(Constants.Email, Constants.Keyfile, Constants.Scope);

            WWWForm form = new WWWForm();

            form.AddField("grant_type", Constants.Grant);
            form.AddField("assertion", jwt);
            UnityWebRequest request = UnityWebRequest.Post(Constants.Url, form);

            yield return(request.SendWebRequest());

            if (request.isNetworkError || request.isHttpError)
            {
                Debug.LogWarning(request.error);
                callback(null);
                yield break;
            }

            byte[]           rawResponse  = request.downloadHandler.data;
            string           jsonResponse = Encoding.UTF8.GetString(rawResponse);
            AuthResponseBody response     = Json.FromJson <AuthResponseBody>(jsonResponse);

            expires = DateTime.Now.AddSeconds(response.expiresIn);
            token   = response.accessToken;

            callback(response.accessToken);
        }
Ejemplo n.º 11
0
        static void Main()
        {
            // Creates a symmetric key defined for the 'HS256' algorithm
            var signatureKey = SymmetricJwk.FromBase64Url("R9MyWaEoyiMYViVWo8Fk4TUGWiSoaW6U1nOqXri8_XU");

            // Creates a symmetric key for encryption
            var decryptionKey = SymmetricJwk.FromBase64Url("R9MyWaEoyiMYViVWo8Fk4T");

            var policy = new TokenValidationPolicyBuilder()
                         .RequireSignature("https://idp.example.com/", signatureKey, SignatureAlgorithm.HS256)
                         .RequireAudience("636C69656E745F6964")
                         .WithDecryptionKey(decryptionKey)
                         .Build();

            var result = Jwt.TryParse("eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiZWFOTlpaMXBtREFXSWYzYkg3MFg2V3FfbldzUXhuMjFMUngza1daMG5MYyIsImN0eSI6IkpXVCJ9.PU18XXVByiJLE53zkg1m-SzjZXUdRYkl0X20JtsMKXW54RHn3fcK_w.Bu1SPUTuntwvPfwXTj1OhQ.OuCl09TjUMJk80GdY4n5r6HUnH21dWwT1BAbbvPJg75p_AfMvVNmaQ3dahrSmCkuCI5EF34ynE_qUBAuMH9bcplUWS9GDKJfGugEZgkciWORv5RzXvAAokpElpuaiV09SdBmaepi4FAXvTP4axJUWuOXt2MvjnlwbIXlVqUX9Lha1NnsseBLTjfCclhV0pQEKjnncqjuqTcxmqTqAsxZA1v8RJV_FbzBdVBWwQ-qrjYbsrqtsK13XazZEGwAHU7fJT1vlaBdlni6aTQIlwE7JuLA--6hRM9mr7NZ4SlihCFBLjW-DZ2QoQBd6XeFNGKMnNgUP0t6mYihPlmh1eC0BivPaTtCKf4CH6lrq42_17s.ajGQE7r5eAd9z8a-8mmq2g", policy, out var jwt);

            if (result)
            {
                Console.WriteLine("The token is " + jwt);
            }
            else
            {
                Console.WriteLine("Failed to read the token. Reason: " + Environment.NewLine + jwt.Error.Status);
            }

            jwt.Dispose();
        }
Ejemplo n.º 12
0
        public CommonApiResponse <dynamic> Post(Guid roleId, string _permissionId)
        {
            jwt = ViewBag.Jwt;
            Guid           permissionId   = Guid.Parse(_permissionId);
            RolePermission rolePermission = new RolePermission();

            rolePermission.UserId       = jwt.UserId;
            rolePermission.PermissionId = permissionId;
            rolePermission.RoleId       = roleId;

            bool   result = false;
            string error  = "";

            Guid insertId = _rolePermissionService.Save(rolePermission);

            result = Guid.TryParse(insertId.ToString(), out insertId);
            if (result)
            {
                rolePermission.Id = insertId;
                var result1 = _rolePermissionService.GetByUserIdAndIdWithJoinPermission(jwt.UserId, roleId, rolePermission.Id);

                return(CommonApiResponse <dynamic> .Create(Response, System.Net.HttpStatusCode.OK, true, result1, null));
            }

            return(CommonApiResponse <dynamic> .Create(Response, System.Net.HttpStatusCode.BadRequest, false, null, FluentValidationHelper.GenerateErrorList(error)));
        }
Ejemplo n.º 13
0
        // TODO: should be moved to api project
        public async Task <Jwt> GenererateJwtFromUser(User user)
        {
            return(await Task.Factory.StartNew(() =>
            {
                var claims = new List <Claim>
                {
                    new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
                };

                var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtSettings.Key));
                var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
                var expires = DateTime.Now.AddDays(Convert.ToDouble(7));

                var securityToken = new JwtSecurityToken(
                    _jwtSettings.Issuer,
                    _jwtSettings.Issuer,
                    claims,
                    expires: expires,
                    signingCredentials: creds
                    );

                string tokenString = new JwtSecurityTokenHandler().WriteToken(securityToken);
                Jwt token = new Jwt(securityToken.ValidTo, tokenString);
                return token;
            }));
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> Login(User user)
        {
            _log4net.Info("User Login");
            User Item = new User();

            using (var httpClient = new HttpClient())
            {
                StringContent content = new StringContent(JsonConvert.SerializeObject(user), Encoding.UTF8, "application/json");



                StringContent content1 = new StringContent(JsonConvert.SerializeObject(user), Encoding.UTF8, "application/json");
                using (var response1 = await httpClient.PostAsync("https://localhost:44304/api/Auth/Login", content1))
                {
                    if (!response1.IsSuccessStatusCode)
                    {
                        return(RedirectToAction("Login"));
                    }

                    string apiResponse1 = await response1.Content.ReadAsStringAsync();

                    Jwt jwt = JsonConvert.DeserializeObject <Jwt>(apiResponse1);

                    HttpContext.Session.SetString("token", jwt.Token);
                    HttpContext.Session.SetString("user", JsonConvert.SerializeObject(user));
                    HttpContext.Session.SetInt32("Userid", user.Userid);
                    HttpContext.Session.SetString("Username", user.Username);
                    ViewBag.Message = "User logged in successfully!";

                    return(RedirectToAction("Index", "MenuItem"));
                }
            }
        }
Ejemplo n.º 15
0
        internal BearerToken CreateAccessToken(ClaimsPrincipal claimsPrincipal, TimeSpan validTime)
        {
            byte[] encryptedToken;
            using (var stream = GlobalVars.RecyclableMemory.GetStream("claims-principal", 32))
            {
                using (var bwriter = new BinaryWriter(stream, Encoding.UTF8, true))
                {
                    claimsPrincipal.WriteTo(bwriter);
                }
                byte[] serializedClaims = stream.ToArray();

                DateTime validity     = DateTime.Now + validTime;
                var      serverBearer = new ServerAccessToken(serializedClaims, validity);

                using (var mem = GlobalVars.RecyclableMemory.GetStream())
                {
                    ProtoBuf.Serializer.Serialize(mem, serverBearer);
                    byte[] serializedTmpBuf = mem.GetBuffer();

                    // Закриптовать.
                    encryptedToken = Jwt.EncryptToBytes(serializedTmpBuf.AsSpan(0, (int)mem.Length));
                }
                var token = new BearerToken(encryptedToken, validity);
                return(token);
            }
        }
        public void Patch_DataCorrect_CardUpdated()
        {
            var browser = new Browser(new DefaultNancyBootstrapper());

            var me   = UserFaker.Create();
            var card = CardFaker.Create(me);

            var updatedName        = "updatedName_" + Rand.SmallInt();
            var updatedDescription = "updatedName_" + Rand.SmallInt();
            var updatedColumnOrder = Convert.ToString(Rand.IntRange(0, 40));

            var result = browser.Patch("/api/v1/card/edit", with => {
                with.HttpRequest();
                with.Query("api_token", Jwt.FromUserId(me.id));
                with.Query("card_guid", card.guid);
                with.Query("name", updatedName);
                with.Query("description", updatedDescription);
                with.Query("column_order", updatedColumnOrder);
            }).Result;

            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);

            var json = JObject.Parse(result.Body.AsString());

            Assert.AreEqual(card.guid, json["data"]["card"].Value <string>("guid"));
            Assert.AreEqual(updatedName, json["data"]["card"].Value <string>("name"));
            Assert.AreEqual(updatedColumnOrder, json["data"]["card"].Value <string>("column_order"));
        }
Ejemplo n.º 17
0
        public async Task <Jwt> LoginWithoutEmailConfirmation(LoginModel model)
        {
            Jwt jwt = null;

            IJWTService     jwtService = SecurityServiceFactory.GetService(typeof(IJWTService)) as IJWTService;
            ApplicationUser user       = await UserManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                throw new InvalidOperationException("Incorrect email or password");
            }

            bool isPasswordCorrect = await UserManager.CheckPasswordAsync(user, model.Password);

            if (!isPasswordCorrect)
            {
                throw new InvalidOperationException("Incorrect email or password");
            }

            if (model.RememberMe)
            {
                jwt = await jwtService.GenerateJWtWithRefreshTokenAsync(user);
            }
            else
            {
                jwt = jwtService.GenerateJwtToken(user);
            }
            return(jwt);
        }
Ejemplo n.º 18
0
        public async Task TestJwtMiddleware()
        {
            HttpContext context = new DefaultHttpContext();

            JwtMiddleware middleware = new JwtMiddleware(httpContext => Task.CompletedTask);
            await middleware.Invoke(context);

            Assert.IsTrue(!context.User.Claims.Any(), "Are there any claims when there's no authentication header?");
            Assert.IsNull(context.User.Identity.AuthenticationType, "Is the authenticationtype null when there's no auth header?");

            // Create a test user instance
            User testUser = new User
            {
                confirmed              = true,
                date_of_birth          = DateTime.Now,
                email                  = "*****@*****.**",
                ID                     = 0,
                password               = "******",
                plan                   = Plans.Basic,
                registration_timestamp = DateTime.Now,
                role                   = Roles.User,
                username               = "******"
            };

            ClaimsPrincipal userPrincipal = testUser.ClaimsPrincipal(TokenScope.UserLogin);

            context.Request.Headers.Add("Authorization", "Bearer " + Jwt.Sign((ClaimsIdentity)userPrincipal.Identity));

            await middleware.Invoke(context);

            Assert.IsTrue(context.User.Claims.Any(), "Are there any claims when the authentication header is present?");
            Assert.IsNotNull(context.User.Identity.AuthenticationType, "Is the authenticationtype no null when the authentication header is present?");
            Assert.AreEqual(context.User.Identity.AuthenticationType, TokenScope.UserLogin,
                            "Is the AuthenticationType the same as the one used to sign the Jwt token?");
        }
        // GET: Conversaciones
        public ActionResult Conversaciones()
        {
            string id = new Jwt().ObtenerId();

            if (id != "")
            {
                var Direccion = "Conversaciones/" + id;
                var Respuesta = Data.Instancia.RocketChat.Cliente.GetAsync(Direccion);
                Respuesta.Wait();
                var Resultado = Respuesta.Result;

                if (Resultado.StatusCode == HttpStatusCode.OK)
                {
                    var ReadTask = Resultado.Content.ReadAsStringAsync();
                    ReadTask.Wait();

                    var ConversacionesUser  = JsonConvert.DeserializeObject <List <string> >(ReadTask.Result);
                    var ListaConversaciones = new List <string>();
                    foreach (var Conversacion in ConversacionesUser)
                    {
                        ListaConversaciones.Add(Conversacion.Split('.')[0]);
                    }
                    return(View(ListaConversaciones));
                }
                else
                {
                    return(RedirectToAction("HomePerfil", "Perfil"));
                }
            }
            else
            {
                return(RedirectToAction("Index", "Login"));
            }
        }
Ejemplo n.º 20
0
        public async Task <IActionResult> UploadImage(IFormCollection form)
        {
            string storePath = "F:/Licenta/matchbox/matchbox-server/Uploads/";

            if (form.Files == null || form.Files[0].Length == 0)
            {
                return(BadRequest(new { message = "" }));
            }
            var authorizationToken = this.Request.Headers["Authorization"].ToString();

            if (authorizationToken == "")
            {
                return(Unauthorized());
            }
            int id = Jwt.GetIdFromToken(authorizationToken);

            if (id == 0)
            {
                return(Unauthorized());
            }

            string filename = id.ToString() + ".jpg";
            var    path     = Path.Combine(storePath, filename);

            using (var stream = new FileStream(path, FileMode.Create))
            {
                await form.Files[0].CopyToAsync(stream);
            }

            return(Ok(new { succes = "true" }));
        }
        public ActionResult CrearConversacion()
        {
            string id = new Jwt().ObtenerId();

            if (id != "")
            {
                var Direccion = "AllUsers/" + id;
                var Respuesta = Data.Instancia.RocketChat.Cliente.GetAsync(Direccion);
                Respuesta.Wait();
                var Resultado = Respuesta.Result;

                if (Resultado.StatusCode == HttpStatusCode.OK)
                {
                    var ReadTask = Resultado.Content.ReadAsStringAsync();
                    ReadTask.Wait();
                    var ListaUsuariosRegistrados = JsonConvert.DeserializeObject <List <User> >(ReadTask.Result);
                    return(View(ListaUsuariosRegistrados));
                }
                else
                {
                    return(RedirectToAction("HomePerfil", "Perfil"));
                }
            }
            else
            {
                return(RedirectToAction("Index", "Login"));
            }
        }
Ejemplo n.º 22
0
        public async Task <IActionResult> DeleteImage()
        {
            var authorizationToken = this.Request.Headers["Authorization"].ToString();

            if (authorizationToken == "")
            {
                return(Unauthorized());
            }
            int id = Jwt.GetIdFromToken(authorizationToken);

            if (id == 0)
            {
                return(Unauthorized());
            }

            string storePath = "F:/Licenta/matchbox/matchbox-server/Uploads/";
            var    filename  = id.ToString() + ".jpg";

            var path = Path.Combine(storePath, filename);

            if (System.IO.File.Exists(path))
            {
                System.IO.File.Delete(path);
                return(Ok(new { succes = "true" }));
            }
            else
            {
                return(NotFound(new { message = "File not found" }));
            }
        }
Ejemplo n.º 23
0
        public bool TryParse_Dispose()
        {
            bool result = Jwt.TryParse(Token, policy, out var jwt);

            jwt.Dispose();
            return(result);
        }
Ejemplo n.º 24
0
        //***************************************************************AUTENTICACION E INICIO SE SESION*********************************************************************************************************************************************************

        public Jwt Authenticate(string userName, string password)
        {
            var user = _Users.Find(userX => userX.Username == userName && userX.Contraseña == password).FirstOrDefault();

            if (user == null)
            {
                return(null);
            }

            var jwt             = new Jwt();
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString())
                }),
                Expires            = DateTime.UtcNow.AddMinutes(3),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            var token = tokenHandler.CreateToken(tokenDescriptor);

            jwt.Token = tokenHandler.WriteToken(token);
            //jwt.Token = token.ToString();

            return(jwt);
        }
        // GET: Perfil
        public ActionResult HomePerfil()
        {
            var id = new Jwt().ObtenerId();

            if (id != "")
            {
                var Direccion = "Perfil/" + id;
                var Respuesta = Data.Instancia.RocketChat.Cliente.GetAsync(Direccion);
                Respuesta.Wait();
                var Result = Respuesta.Result;
                if (Result.StatusCode == HttpStatusCode.OK)
                {
                    var ReadTask = Result.Content.ReadAsStringAsync();
                    ReadTask.Wait();
                    var User = JsonConvert.DeserializeObject <User>(ReadTask.Result);
                    return(View(User));
                }
                else if (Result.StatusCode == HttpStatusCode.Unauthorized)
                {
                    return(RedirectToAction("Index", "Login"));
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(RedirectToAction("Index", "Login"));
            }
        }
Ejemplo n.º 26
0
        public ExtractControllerTests()
        {
            _connection = new SqliteConnection("Data Source=:memory:");

            _connection.Open();

            var options = new DbContextOptionsBuilder <MobicloneContext>().UseSqlite(_connection).Options;

            _context = new MobicloneContext(options);

            _accessor = new HttpContextAccessor
            {
                HttpContext = new DefaultHttpContext()
            };

            var hash = new Bcrypt();

            var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.Test.json").Build();

            var auth = new Jwt(_context, hash, configuration, _accessor);

            var extract = new DefaultExtract(_connection, auth);

            _controller = new ExtractController(extract);

            _context.Database.EnsureCreated();
        }
        private long GetUserId()
        {
            string token  = Request.Headers["Authorization"];
            int    userId = Int16.Parse(Jwt.decryptJSONWebToken(token)["Id"].ToString());

            return(userId);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Производит аутентификацию текущего подключения.
        /// </summary>
        internal IActionResult SignIn(AccessToken accessToken)
        {
            // Расшифрованный токен полученный от пользователя.
            byte[] decripted;

            try
            {
                // Расшифровать токен.
                decripted = Jwt.DecryptToBytes(accessToken);
            }
            catch (Exception)
            {
                return(new BadRequestResult("Токен не валиден"));
            }

            ServerAccessToken bearerToken;

            try
            {
                using (var mem = new MemoryStream(decripted, 0, decripted.Length, false, true))
                {
                    bearerToken = ProtoBuf.Serializer.Deserialize <ServerAccessToken>(mem);
                }
            }
            catch (Exception)
            {
                return(new BadRequestResult("Токен не валиден"));
            }

            return(SignIn(bearerToken));
        }
Ejemplo n.º 29
0
        public void Encode_Decode(EncryptionAlgorithm enc, KeyManagementAlgorithm alg)
        {
            var writer        = new JwtWriter();
            var encryptionKey = SelectKey(enc.Name.ToString(), alg.Name.ToString());

            var descriptor = new JweDescriptor(encryptionKey, alg, enc)
            {
                Payload = new JwsDescriptor(_signingKey, SignatureAlgorithm.HS256)
                {
                    Payload = new JwtPayload
                    {
                        { "sub", "Alice" }
                    }
                }
            };

            var token = writer.WriteToken(descriptor);

            var policy = new TokenValidationPolicyBuilder()
                         .RequireSignatureByDefault(_signingKey)
                         .WithDecryptionKey(encryptionKey)
                         .Build();

            var result = Jwt.TryParse(token, policy, out var jwt);

            Assert.True(result);

            Assert.True(jwt.Payload.TryGetClaim("sub", out var sub));
            Assert.Equal("Alice", sub.GetString());
            jwt.Dispose();
        }
Ejemplo n.º 30
0
        public CommonApiResponse <Role> Get(Guid id)
        {
            jwt = ViewBag.Jwt;
            Role role = _roleService.GetById(jwt.UserId, id);

            return(CommonApiResponse <Role> .Create(Response, System.Net.HttpStatusCode.OK, true, role, null));
        }