Пример #1
0
        public static TokenHolder RefreshToken(string token)
        {
            EmployeeToken employeeInfo = Decode(token, REFRESHSECRETKEY);
            TokenHolder   tokenHolder  = CreateToken(employeeInfo);

            return(tokenHolder);
        }
        protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            object        tempRoles = null;
            List <string> lstRoles  = new List <string>();
            var           identity  = ParseAuthorizationHeader(actionContext);

            if (identity == null)
            {
                return(false);
            }

            if (!OnAuthorizeUser(identity.Name, actionContext))
            {
                return(false);
            }

            List <Claim> lstClaims = new List <Claim>();

            if (actionContext.Request.Properties.TryGetValue("Token", out tempRoles))
            {
                EmployeeToken employeeTokenInfo = tempRoles as EmployeeToken;
                lstClaims.Add(new Claim(ClaimTypes.Name, employeeTokenInfo.UserName));
                lstClaims.Add(new Claim(ClaimTypes.UserData, identity.Name));
                lstClaims.Add(new Claim(ClaimTypes.Role, employeeTokenInfo.Type.ToString()));
            }

            ClaimsIdentity  claimsIdentity = new ClaimsIdentity(lstClaims, "MicroBot");
            ClaimsPrincipal principal      = new ClaimsPrincipal(claimsIdentity);

            Thread.CurrentPrincipal = HttpContext.Current.User = principal;
            return(base.IsAuthorized(actionContext));
        }
 private bool OnAuthorizeUser(string key, HttpActionContext actionContext)
 {
     if (UserLoginServices.ValidateToken(key))
     {
         EmployeeToken employeeTokenInfo = UserLoginServices.DecodeToken(key);
         actionContext.Request.Properties.Add(new KeyValuePair <string, object>("Token", employeeTokenInfo));
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #4
0
        private static EmployeeToken Decode(string token, string securityKey)
        {
            EmployeeToken employeeInfo = null;

            IJsonSerializer   serializer = new JsonNetSerializer();
            IDateTimeProvider provider   = new UtcDateTimeProvider();
            IJwtValidator     validator  = new JwtValidator(serializer, provider);
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtDecoder       decoder    = new JwtDecoder(serializer, validator, urlEncoder);

            string jsonPayload = decoder.Decode(token, SECRETKEY, verify: true);

            Dictionary <string, object> payload = JsonConvert.DeserializeObject <Dictionary <string, object> >(jsonPayload);

            if (payload.ContainsKey("userInfo"))
            {
                string userInfoData = payload["userInfo"].ToString();
                employeeInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <EmployeeToken>(userInfoData);
            }
            return(employeeInfo);
        }
Пример #5
0
        private static TokenHolder CreateToken(EmployeeToken employeeInfo)
        {
            if (employeeInfo.VerifyObjectNull(throwEdit: false))
            {
                throw new EditException()
                      {
                          Edits = (new List <Edit>()
                    {
                        new Edit()
                        {
                            FieldName = "Invalid Data", Message = "Data should not be null."
                        }
                    })
                      };
            }

            TokenHolder tokenHolder = new TokenHolder();
            var         currentTime = (long)(DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()).TotalSeconds;
            var         payload     = new Dictionary <string, object>();

            payload.Add("userInfo", employeeInfo);
            payload.Add("exp", currentTime + EXPIRYTIME);

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            tokenHolder.AccessToken = encoder.Encode(payload, SECRETKEY);

            var refreshPayload = new Dictionary <string, object>();

            refreshPayload.Add("userInfo", employeeInfo);
            refreshPayload.Add("CurrentDate", DateTime.Now.ToString());

            tokenHolder.RefreshToken = encoder.Encode(payload, REFRESHSECRETKEY);
            return(tokenHolder);
        }
Пример #6
0
 public EmployeeToken DecodeToken(string token)
 {
     if (string.IsNullOrEmpty(token))
     {
         throw new EditException()
               {
                   Edits = (new List <Edit>()
             {
                 new Edit()
                 {
                     FieldName = "Token", Message = "Invalid Token."
                 }
             })
               };
     }
     else
     {
         EmployeeToken employeeTokenInfo = TokenManager.DecodeToken(token);
         if (employeeTokenInfo.VerifyObjectNull(throwEdit: false))
         {
             throw new EditException()
                   {
                       Edits = (new List <Edit>()
                 {
                     new Edit()
                     {
                         FieldName = "Token", Message = "Invalid Token."
                     }
                 })
                   };
         }
         else
         {
             return(employeeTokenInfo);
         }
     }
 }
 private void OnNewEmployeeToken(EmployeeToken token)
 {
     SelectedEmployee = token.SelectedEmployee;
 }
Пример #8
0
        public static EmployeeToken DecodeToken(string token)
        {
            EmployeeToken employeeInfo = Decode(token, SECRETKEY);

            return(employeeInfo);
        }
Пример #9
0
        private const string REFRESHSECRETKEY = "MICREFRESH"; //Refresh Key Confidential

        public static TokenHolder GenerateToken(EmployeeToken employeeInfo)
        {
            TokenHolder tokenHolder = CreateToken(employeeInfo);

            return(tokenHolder);
        }