예제 #1
0
        public bool Authenticate(string userName, string password)
        {
            WWWForm form = new WWWForm();

            form.AddField("grant_type", "password");
            form.AddField("UserName", userName);
            form.AddField("Password", password);

            var www = new WWW(authUrl, form);

            while (!www.isDone)
            {
            }

            if (www.error == null)
            {
                token = ParseResponse(www.text);
                return(true);
            }
            else
            {
                token = null;
            }

            return(false);
        }
예제 #2
0
        public IActionResult ConnectServer([FromBody] WebApiToken serverWebApiToken)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(BadRequest(LogLanguage.Instance.GetMessageFromKey(LanguageKey.AUTH_ERROR))));
            }

            if (serverWebApiToken.ServerToken != _apiConfiguration.Password)
            {
                return(BadRequest(LogLanguage.Instance.GetMessageFromKey(LanguageKey.AUTH_INCORRECT)));
            }

            var claims = new ClaimsIdentity(new[]
            {
                new Claim(ClaimTypes.NameIdentifier, "Server"),
                new Claim(ClaimTypes.Role, nameof(AuthorityType.Root))
            });
            var keyByteArray  = Encoding.Default.GetBytes(EncryptionHelper.Sha512(_apiConfiguration.Password));
            var signinKey     = new SymmetricSecurityKey(keyByteArray);
            var handler       = new JwtSecurityTokenHandler();
            var securityToken = handler.CreateToken(new SecurityTokenDescriptor
            {
                Subject            = claims,
                Issuer             = "Issuer",
                Audience           = "Audience",
                SigningCredentials = new SigningCredentials(signinKey, SecurityAlgorithms.HmacSha256)
            });

            return(Ok(handler.WriteToken(securityToken)));
        }
예제 #3
0
        // GET: Jquery
        public async Task <ViewResult> Index()
        {
            var userName = ConfigurationManager.AppSettings["WebApiUserName"];
            var password = ConfigurationManager.AppSettings["WebApiPassword"];
            var url      = ConfigurationManager.AppSettings["WebApiURL"];

            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(url);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));

                var content = new FormUrlEncodedContent(new[]
                {
                    new KeyValuePair <string, string>("username", userName),
                    new KeyValuePair <string, string>("password", password),
                    new KeyValuePair <string, string>("grant_type", "password")
                });

                var response = await client.PostAsync("/token", content);

                if (response.IsSuccessStatusCode)
                {
                    var jsonToken = await response.Content.ReadAsStringAsync();

                    WebApiToken token = WebApiToken.Parse(jsonToken);

                    return(View(token));
                }
            }

            return(View(new WebApiToken()));
        }
예제 #4
0
        public HttpResponseMessage Refresh(WebApiToken tokenApiModel)
        {
            if (tokenApiModel is null)
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest));
            }
            var    accessToken  = tokenApiModel.expiredToken;
            string refreshToken = tokenApiModel.refreshToken;
            var    tokenService = new TokenService();
            var    principal    = tokenService.GetPrincipalFromExpiredToken(accessToken);
            //var userName = principal.Identity.Name; //this is mapped to the Name claim by default
            var claims      = ((System.Security.Claims.ClaimsIdentity)principal.Identity).Claims.ToList();
            var userName    = claims[1].Value;
            var userIsAdmin = Convert.ToBoolean(claims[6].Value);
            var userEmail   = claims[2].Value;

            var user = userController.GetAuthorizationEmployee(userEmail);

            //if (user == null || user.RefreshToken != refreshToken)
            //{
            //    return BadRequest("Invalid client request");
            //}

            var token = tokenService.GenerateJWT(new Users {
                EmployeeName = userName, Email = userEmail, IsAdmin = userIsAdmin
            });
            //userContext.SaveChanges();
            var response = new HttpResponseMessage();

            response.StatusCode = HttpStatusCode.OK;
            response.Headers.Add(JWTToken.Authorization, token.accessToken.ToString().AESStringEncryption(Constants.UserNumber));
            response.Headers.Add("RefreshToken", token.refreshToken);
            return(response);
        }
예제 #5
0
        //Response is a JSON object
        //"access_token":"boQtj0SCGz2GFGz[...]",
        //"token_type":"bearer",
        //"expires_in":1209599,
        //"userName":"******",
        //".issued":"Mon, 14 Oct 2013 06:53:32 GMT",
        //".expires":"Mon, 28 Oct 2013 06:53:32 GMT"
        private WebApiToken ParseResponse(string text)
        {
            var result = SimpleJSON.JSON.Parse(text);

            return(token = new WebApiToken()
            {
                AccessCode = result["access_token"].Value,
                ExpirationTime = DateTime.Parse(result[".expires"].Value)
            });
        }
예제 #6
0
 public WebApiClientMT(string url, string user, string psw, string api, service servece_owner)
 {
     try
     {
         this.servece_owner = servece_owner;
         this.url           = url;
         this.user          = user;
         this.psw           = psw;
         this.api           = api;
         wapi = new WebApiToken(url, user, psw);
     }
     catch (Exception e)
     {
         e.ExceptionMethodLog(String.Format("WebApiClientMetallurgTrans(url={0},user={1},psw={2},api={3})", url, user, psw, api), this.servece_owner, eventID);
     }
 }
예제 #7
0
        public WebApiClientMT(service servece_owner)
        {
            try
            {
                this.servece_owner = servece_owner;
                this.url           = ConfigurationManager.AppSettings["WebApiMTURL"].ToString();
                this.user          = ConfigurationManager.AppSettings["WebApiMTUser"].ToString();
                this.psw           = ConfigurationManager.AppSettings["WebApiMTPSW"].ToString();
                this.api           = ConfigurationManager.AppSettings["WebApiMTApi"].ToString();
                this.api_arrival   = ConfigurationManager.AppSettings["WebApiMTArrivalApi"].ToString();

                wapi = new WebApiToken(url, user, psw);
            }
            catch (Exception e)
            {
                e.ExceptionMethodLog(String.Format("WebApiClientMetallurgTrans()"), this.servece_owner, eventID);
            }
        }
        public WebApiToken GenerateJWT(Users user)
        {
            var jwtToken = new JWTToken();

            jwtToken.AddClaim(ClaimTypes.NameIdentifier, "CPOC");
            jwtToken.AddClaim(ClaimTypes.Name, user.EmployeeName);
            jwtToken.AddClaim(ClaimTypes.Email, user.Email);
            jwtToken.Issuer   = Constants.Issuer;
            jwtToken.Audience = Constants.Audience;
            jwtToken.TimeOut  = "10";
            jwtToken.UserRole = user.Role;
            jwtToken.IsAdmin  = user.IsAdmin;
            jwtToken.symmetricSignatureKeyString = AESServices.UserHmacKey(Constants.UserNumber, 3);
            var webApiToken = new WebApiToken();

            webApiToken.accessToken  = jwtToken;
            webApiToken.refreshToken = GenerateRefreshToken();
            return(webApiToken);
        }
        public async Task CreateAsync(AuthenticationTokenCreateContext context)
        {
            //try
            //{
            var clientid = context.Ticket.Properties.Dictionary["as:client_id"];

            if (string.IsNullOrEmpty(clientid))
            {
                return;
            }

            //TODO: I removed hashed tokens to reduce database size

            //var refreshTokenId = Guid.NewGuid().ToString("n");

            var service = WebApiTokenEN.GetService("");


            var refreshTokenLifeTime = context.OwinContext.Get <string>("as:clientRefreshTokenLifeTime");

            WebApiToken token = WebApiTokenEN.GetEntityObjectT();

            token.WebApiTokenID   = Guid.NewGuid();
            token.WebApiClientID  = WebApiClientEN.GetService().GetByClientCode(clientid).WebApiClientID;
            token.UserID          = Convert.ToInt64(context.Ticket.Identity.Name);
            token.IssuedUtc       = DateTime.UtcNow;
            token.ExpiresUtc      = DateTime.UtcNow.AddMinutes(Convert.ToDouble(refreshTokenLifeTime));
            token.ProtectedTicket = context.SerializeTicket();

            context.Ticket.Properties.IssuedUtc  = token.IssuedUtc;
            context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc;

            service.AddToken(token);

            context.SetToken(token.WebApiTokenID.ToString("n"));
            //}
            //catch (Exception ex)
            //{
            //    var result = UIUtils.GetExceptionActionResult(ex);
            //    context.Response.
            //}
        }