コード例 #1
0
        public User Authenticate(string clientId)
        {
            string secret = "This is a sample secret";
            var    user   = _users.SingleOrDefault(x => HmacConversion.CreateToken(x.ClientId, secret) == clientId);

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

            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_appSettings.Key);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new System.Security.Claims.ClaimsIdentity(new Claim[] {
                    new Claim(ClaimTypes.Name, user.ClientId.ToString()),
                    new Claim(ClaimTypes.Role, "Admin"),
                    new Claim(ClaimTypes.Version, "V3.1")
                }),
                Expires            = DateTime.UtcNow.AddMinutes(5),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            user.Token = tokenHandler.WriteToken(token);

            return(user);
        }
コード例 #2
0
        public IActionResult Post([FromBody] User model)
        {
            User user = null;

            if (model.Encrypted == null || model.Encrypted == false)
            {
                string secret = "This is a sample secret";
                user = _authenticateService.Authenticate(HmacConversion.CreateToken(model.ClientId, secret));
            }
            else
            {
                user = _authenticateService.Authenticate(model.ClientId);
            }

            if (user == null)
            {
                return(BadRequest(new { message = "ClientId Invalid." }));
            }

            return(Ok(user));
        }