public IActionResult Authenticate(
            [FromBody]
            [SwaggerRequestBody(@"For example: <br /> { ""userName"": ""Admin"", ""password"": """" }")]
            AuthenticationStandardLogonParameters logonParameters
            )
        {
            ApplicationUser user;

            try {
                user = (ApplicationUser)securityAuthenticationService.Authenticate(logonParameters);
            }
            catch (Exception ex) {
                if (ex is IUserFriendlyException)
                {
                    return(Unauthorized(ex.Message));
                }
                else
                {
                    return(Unauthorized());
                }
            }
            IList <Claim> claims = new List <Claim>();

            claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Oid.ToString()));
            // You can save logonParameters for further use.
            claims.Add(new Claim("LogonParams", objectConverter.Pack(logonParameters)));
            var issuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["Authentication:Jwt:IssuerSigningKey"]));
            var token            = new JwtSecurityToken(
                issuer: configuration["Authentication:Jwt:Issuer"],
                audience: configuration["Authentication:Jwt:Audience"],
                claims: claims,
                expires: DateTime.Now.AddHours(2),
                signingCredentials: new SigningCredentials(issuerSigningKey, SecurityAlgorithms.HmacSha256)
                );

            return(Ok(new JwtSecurityTokenHandler().WriteToken(token)));
        }