Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            string keyDir = AppDomain.CurrentDomain.BaseDirectory;

            if (RSAUtils.TryGetKeyParameters(keyDir, true, out RSAParameters keyParams) == false)
            {
                Console.WriteLine("按任意键开始生产RSAKey文件。");
                Console.Read();
                keyParams = RSAUtils.GenerateAndSaveKey(keyDir);
                Console.WriteLine("RSAKey文件生存成功!");
            }
            else
            {
                //Console.WriteLine("RSAKey文件已经存在!");

                Console.WriteLine("生成jwtToken");
                JwtTokenUtils jwtTokenUtils = new JwtTokenUtils();
                string        jwtToken      = jwtTokenUtils.GenerateJwtToken("zhuqp", "", "pbirs");
                Console.WriteLine(jwtToken);

                Console.WriteLine("验证jwtToken");
                string username = jwtTokenUtils.ValidateJwtToken(jwtToken, "pbirs");
                Console.WriteLine(username);

                Console.Read();
            }
        }
        public void OnActionExecuting(ActionExecutingContext context)
        {
            bool allowAnonymous = context.Filters
                                  .Where(filter => filter.GetType() == typeof(AllowAnonymousFilter))
                                  .Count() > 0;

            if (!allowAnonymous)
            {
                var token = JwtTokenUtils.GetToken(context.HttpContext);

                bool isValidToken = JwtTokenUtils.IsValidToken(token);

                if (!isValidToken)
                {
                    context.HttpContext.Response.StatusCode = 401;
                    context.Result = new EmptyResult();
                    return;
                }

                if (context.HttpContext.Response.StatusCode == 401)
                {
                    context.Result = new EmptyResult();
                    return;
                }
            }
        }
        public string GetPowerBIUrl(string userName, string pbiName)
        {
            string url      = ConfigurationManager.AppSettings["PBIReportsUrl"];
            string audience = ConfigurationManager.AppSettings["PBIAudience"];

            JwtTokenUtils jwtTokenUtils = new JwtTokenUtils();
            string        token         = jwtTokenUtils.GenerateJwtToken(userName, "", audience);

            return(url + pbiName + "?rs:embed=true&token=" + token);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 验证URL中的Jwt Token
        /// </summary>
        /// <param name="token"></param>
        /// <returns>返回Jwt Token中所携带的UserName</returns>
        private string CheckJwtToken(string token)
        {
            string username = null;

            JwtTokenUtils jwtTokenUtils = new JwtTokenUtils();

            username = jwtTokenUtils.ValidateJwtToken(token, ConfigurationManager.AppSettings["Jwt_Audience_PBIRS"] ?? "pbirs");

            return(username);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = "accounts")]
            HttpRequestMessage req, ILogger log, CancellationToken token)
        {
            var securityToken = JwtTokenUtils.GetSecurityToken(req);
            var objectId      = JwtTokenUtils.GetObjectId(securityToken);

            var accounts = await _mediator.Send(
                new GetAccountQuery { UserId = objectId }, token);

            return(new OkObjectResult(accounts));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> Login([FromBody] JsonLoginModel userModel)
        {
            var user = await _userManager.FindByNameAsync(userModel.username);

            if (user != null && await _userManager.CheckPasswordAsync(user, userModel.password))
            {
                var securityKey = _configuration["JwtTokens:Secret"];
                var token       = JwtTokenUtils.GenerateToken(user, securityKey);
                var validUntil  = token.Claims.FirstOrDefault(o => o.Type == "exp")?.Value;
                return(Json(new
                {
                    jwt = new JwtSecurityTokenHandler().WriteToken(token),
                    validUntil
                }));
            }
            return(BadRequest("Incorrect combination of username and password"));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "delete", Route = "accounts")]
            HttpRequestMessage req, ILogger log, CancellationToken token)
        {
            var jwtSecurityToken = JwtTokenUtils.GetSecurityToken(req);
            var objectId         = JwtTokenUtils.GetObjectId(jwtSecurityToken);

            try
            {
                await _mediator.Send(new CloseAccountsCommand
                {
                    UserId = objectId
                }, token);

                return(new OkResult());
            }
            catch (ValidationException ex)
            {
                log.LogError("Validations Errors {errors}", ex.Errors);
                return(new BadRequestObjectResult(ex));
            }
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "put", Route = "accounts")]
            HttpRequestMessage req, ILogger log, CancellationToken token)
        {
            var jwtSecurityToken = JwtTokenUtils.GetSecurityToken(req);
            var objectId         = JwtTokenUtils.GetObjectId(jwtSecurityToken);

            var command = await req.Content.ReadAsAsync <UpdateAccountCommand>(token);

            command.UserId = objectId;
            try
            {
                var id = await _mediator.Send(command, token);

                log.LogInformation("Updated account with id {id}", id);
                return(new OkResult());
            }
            catch (ValidationException ex)
            {
                log.LogError("Validations Errors {errors}", ex.Errors);
                return(new BadRequestObjectResult(ex));
            }
        }
Ejemplo n.º 9
0
        public async Task <bool> GetLoginByName(JObject json)
        {
            try
            {
                _invillaContext = new InvillaContext();
                var model   = JsonConvert.DeserializeObject <LoginViewModel>(json.ToString());
                var loginDB = _invillaContext.Logins.Where(x => x.FullName == model.FullName).FirstOrDefault();
                var roleDB  = _invillaContext.Roles.Where(x => x.Id == model.IdRole).FirstOrDefault();

                var role = (string.IsNullOrEmpty(roleDB.Role)) ? "admin" : roleDB.Role;

                model.Password = CryptoConfig.EncryptPassword(model.Password);

                if (model.FullName == loginDB.FullName && model.Password == loginDB.Password)
                {
                    var claims = new List <Claim>()
                    {
                        new Claim("UserLoan", model.FullName),
                        new Claim("Password", model.Password),
                        new Claim("Role", role)
                    };

                    var token = JwtTokenUtils.GenerateInvillaUserToken(claims);
                    loginDB.Token = token;
                    _invillaContext.Update(loginDB);
                    _invillaContext.SaveChanges();

                    return(true);
                }

                return(false);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Ejemplo n.º 10
0
        public string CreateToken(Guid userId)
        {
            string token = new JwtTokenUtils("ajsdhausd62313gshaJJJ").GenerateToken(userId.ToString());

            return($"Bearer {token}");
        }