예제 #1
0
        /// <summary>
        /// 申请操作token
        /// </summary>
        /// <param name="resourceDescriptor">欲操作资源描述</param>
        /// <param name="regToken">登记客户端token</param>
        /// <returns></returns>
        public async Task <string> RegisterAsync(ResourceDescriptor resourceDescriptor, string regToken)
        {
            ResourceGrantInfo resourceGrantInfo = new ResourceGrantInfo
            {
                Token              = Guid.NewGuid().ToString("N"),
                CreateDt           = DateTime.Now,
                ExpireDt           = resourceDescriptor.GetExpireDt(),
                ResourceDescriptor = resourceDescriptor.ToString(),
                UseTimes           = 0
            };

            _dbContext.Set <ResourceGrantInfo>().Add(resourceGrantInfo);

            await _dbContext.SaveChangesAsync();

            return(resourceGrantInfo.Token);
        }
예제 #2
0
        /// <summary>
        /// 申请操作token
        /// </summary>
        /// <param name="resourceDescriptor">欲操作资源描述</param>
        /// <param name="regToken">登记客户端token</param>
        /// <returns></returns>
        public async Task <string> RegisterAsync(ResourceDescriptor resourceDescriptor, string regToken)
        {
            var claims = new Claim[]
            {
                new Claim("stm/auth/token", resourceDescriptor.ToString())
            };
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_secretKey));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var jwttoken = new JwtSecurityToken(
                null,
                null,
                claims,
                DateTime.Now,
                resourceDescriptor.GetExpireDt(),
                creds
                );

            var token = new JwtSecurityTokenHandler().WriteToken(jwttoken);

            return(token);
        }