Exemple #1
0
 public EkonomiIframePageController(IUserManagementService userManager, IOrganizationUserRepository organizationUserRepository, HttpContextBase httpContext)
 {
     _userManager                = userManager;
     _httpContext                = httpContext;
     _tokenGenerator             = new JwtTokenGenerator(ConfigurationManager.AppSettings["EkonomiSsoKey"]);
     _organizationUserRepository = organizationUserRepository;
 }
Exemple #2
0
        public async Task Token()
        {
            var UserName = Request.Form["username"];
            var Password = Request.Form["password"];

            JwtTokenGenerator Token = new JwtTokenGenerator(Context, UserName, Password);
            var Jwt = Token.GetToken();

            if (Token.Identity == null)
            {
                base.Response.StatusCode = 400;
                await base.Response.WriteAsync("Invalid username or password.");

                return;
            }

            var EncodedJwt = new JwtSecurityTokenHandler().WriteToken(Jwt);
            var Response   = new
            {
                access_token = EncodedJwt,
                username     = Token.Identity.Name
            };

            base.Response.ContentType = "application/json";
            await base.Response.WriteAsync(JsonConvert.SerializeObject(Response, new JsonSerializerSettings {
                Formatting = Formatting.Indented
            }));
        }
 public AuthenticationService(IOptions <AuthenticationOptions> options)
 {
     _passwordHasher      = new PasswordHasher();
     _secretKey           = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(options.Value.JwtSecretKey));
     _jwtTokenGenerator   = new JwtTokenGenerator(_secretKey);
     _tokenLifetimeInDays = options.Value.JwtLifetimeInDays;
 }
Exemple #4
0
 public SessionController(SessionManager sessionManager, AccountManager accountManager,
                          JwtTokenGenerator tokenGenerator)
 {
     _sessionManager = sessionManager;
     _accountManager = accountManager;
     _tokenGenerator = tokenGenerator;
 }
        public IActionResult GenerateToken(string name = "aspnetcore-workshop-demo", bool admin = false, bool superUser = false, bool user = false, bool guest = false)
        {
            var jwt = JwtTokenGenerator
                      .Generate(name, admin, superUser, user, guest, _configuration["Tokens:Issuer"], _configuration["Tokens:Key"]);

            return(Ok(new { token = jwt }));
        }
Exemple #6
0
        public IActionResult SignIn(UserDTO userDTO)
        {
            try
            {
                ValidationResult result = _identityService.ValidationPassword(userDTO.Email, userDTO.Password);

                if (!result.Succeeded)
                {
                    return(StatusCode(422, "Email or Password is not correct."));
                }

                // generate a token and return
                var user  = result.User;
                var token = JwtTokenGenerator.GenerateToken(result.User, _appSettings.Issuer, _appSettings.Secret);

                return(Ok(new UserDTO()
                {
                    Id = user.Id,
                    UserName = user.UserName,
                    Email = user.Email,
                    Token = token
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemple #7
0
        public IActionResult SignUp(UserDTO userDTO)
        {
            try
            {
                var user = _mapper.Map <User>(userDTO);
                user = _identityService.SignUp(user, userDTO.Password);

                var token = JwtTokenGenerator.GenerateToken(user, _appSettings.Issuer, _appSettings.Secret);

                return(Ok(new UserDTO()
                {
                    Id = user.Id,
                    UserName = user.UserName,
                    Email = user.Email,
                    Token = token
                }));
            }
            catch (DomainException dx)
            {
                return(Conflict($"This email has already been registered. Detail: {dx.Message}"));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemple #8
0
        public IActionResult GetToken(string name = "aspnetcore-workshop-demo", bool admin = false)
        {
            var jwt = JwtTokenGenerator
                      .Generate(name, admin, _configuration["Tokens:Issuer"], _configuration["Tokens:Key"]);

            return(Ok(jwt));
        }
Exemple #9
0
        public async Task <Response <AuthResultDto> > Handle(LoginStudentCommand request, CancellationToken cancellationToken)
        {
            var user = await _userManager.FindByEmailAsync(request.Email);

            if (user is null)
            {
                return(Response.Fail <AuthResultDto>("User doesn't exist!"));
            }

            var passwordIsValid = await _userManager.CheckPasswordAsync(user, request.Password);

            if (!passwordIsValid)
            {
                return(Response.Fail <AuthResultDto>("Password is wrong!"));
            }

            var userRoles = await _userManager.GetRolesAsync(user);

            var role = userRoles.Contains("Admin") ? "Admin" : "Student";

            var result = new AuthResultDto
            {
                Token = JwtTokenGenerator.GenerateToken(user.Email, user.Id,
                                                        _jwtSettings.Secret, role)
            };

            return(Response.Success <AuthResultDto>(result, "Token is created successfully"));
        }
        public UserController(UserManager <User> userManager, SignInManager <User> signInManager, IConfiguration configuration)
        {
            _userManager   = userManager;
            _signInManager = signInManager;

            _jwtTokenGenerator = new JwtTokenGenerator(configuration);
        }
        public void Test2()
        {
            var tokenGen = new JwtTokenGenerator(
                new TokenOptions(
                    "Me",
                    "Me2",
                    new SymmetricSecurityKey(
                        Encoding.ASCII.GetBytes(
                            "abcdefghijklmnopqr12345"))));

            var tcp = tokenGen.GenerateAccessTokenWithClaimsPrincipal("*****@*****.**",
                                                                      new[]
            {
                new Claim(ClaimTypes.GivenName, "FName"),
                new Claim(ClaimTypes.Surname, "LName")
            });

            Assert.True(tcp.ClaimsPrincipal != null);
            Assert.True(!string.IsNullOrWhiteSpace(tcp.AccessToken));
            Assert.True(tcp.ClaimsPrincipal.FindFirst(ClaimTypes.GivenName).Value == "FName");
            Assert.True(tcp.ClaimsPrincipal.FindFirst(ClaimTypes.Surname).Value == "LName");
            Assert.True(tcp.AuthProperties != null &&
                        tcp.AuthProperties.Items.Any() &&
                        !string.IsNullOrWhiteSpace(tcp.AuthProperties.GetTokenValue(TokenConstants.TokenName)));
        }
        public UsersApiTests()
        {
            const string issuer = "http://localhost:49345";
            const string key    = "some-long-secret-key";

            // Must initialize and open Sqlite connection in order to keep in-memory database tables
            _connection = new SqliteConnection("DataSource=:memory:");
            _connection.Open();

            Startup.ConfigureDbContext = (configuration, builder) => builder.UseSqlite(_connection);

            var server = new TestServer(new WebHostBuilder()
                                        .UseSetting("Tokens:Issuer", issuer)
                                        .UseSetting("Tokens:Key", key)
                                        .UseStartup <Startup>()
                                        .UseUrls("https://localhost:49345"))
            {
                BaseAddress = new Uri("https://localhost:49345")
            };

            // Force creation of InMemory database
            var dbContext = server.Services.GetService <TimeTrackerDbContext>();

            dbContext.Database.EnsureCreated();

            _client = server.CreateClient();

            _nonAdminToken = JwtTokenGenerator.Generate(
                "aspnetcore-workshop-demo", false, issuer, key);
            _adminToken = JwtTokenGenerator.Generate(
                "aspnetcore-workshop-demo", true, issuer, key);
        }
Exemple #13
0
 public AccountController(AccountManager accountManager,
                          IFileService fileService,
                          StatsManager statsManager,
                          AccountFriendManager accountFriendManager,
                          FriendRequestManager friendRequestManager,
                          DataContext dataContext,
                          SessionManager sessionManager,
                          AccountItemManager accountItemManager,
                          ShopItemManager shopItemManager,
                          IImageProcessingService imageProcessingService,
                          FileManager fileManager,
                          IOptions <FileOptions> options, JwtTokenGenerator tokenGenerator, NotificationManager notificationManager)
 {
     _accountManager         = accountManager;
     _fileService            = fileService;
     _statsManager           = statsManager;
     _accountFriendManager   = accountFriendManager;
     _friendRequestManager   = friendRequestManager;
     _dataContext            = dataContext;
     _sessionManager         = sessionManager;
     _accountItemManager     = accountItemManager;
     _shopItemManager        = shopItemManager;
     _imageProcessingService = imageProcessingService;
     _fileManager            = fileManager;
     _tokenGenerator         = tokenGenerator;
     _notificationManager    = notificationManager;
     _options = options.Value;
 }
Exemple #14
0
        public void GenerateJwtToken_ShouldCreate_ValidToken()
        {
            var token = JwtTokenGenerator.GenerateJwtToken(1, "THIS IS MY VERY LONG TESTING SECRET THAT NO ONE SHOULD KNOW");

            Assert.IsType <string>(token);
            Assert.NotNull(token);
        }
Exemple #15
0
 public AccountController(AccountManager accountManager, IEmailService emailService,
                          FileManager fileManager,
                          IOptions <EmailVerificationOptions> emailVerificationOptions,
                          IOptions <ResetPasswordOptions> resetPasswordOptions,
                          IOptions <FinancialOptions> financialOptions,
                          IFileService fileService,
                          IHostingEnvironment hostingEnvironment,
                          IOptions <FileOptions> fileOptions,
                          JwtTokenGenerator tokenGenerator,
                          SessionManager sessionManager,
                          AccountItemManager accountItemManager,
                          ShopItemManager shopItemManager,
                          IImageProcessingService imageProcessingService,
                          StatsManager statsManager)
 {
     _accountManager           = accountManager;
     _emailService             = emailService;
     _fileManager              = fileManager;
     _fileService              = fileService;
     _accountItemManager       = accountItemManager;
     _shopItemManager          = shopItemManager;
     _imageProcessingService   = imageProcessingService;
     _statsManager             = statsManager;
     _emailVerificationOptions = emailVerificationOptions.Value;
     _resetPasswordOptions     = resetPasswordOptions.Value;
 }
        public IActionResult GenerateToken(string name = "dockertalk")
        {
            var jwt = JwtTokenGenerator
                      .Generate(name, true, _configuration["Tokens:Issuer"], _configuration["Tokens:Key"]);

            return(Ok(jwt));
        }
Exemple #17
0
 public AccountController(UserRepository userRepository,
                          SmsService smsService,
                          JwtTokenGenerator jwtTokenGenerator)
 {
     _userRepository    = userRepository;
     _smsService        = smsService;
     _jwtTokenGenerator = jwtTokenGenerator;
 }
Exemple #18
0
 public AuthController(SignInManager <User> signInManager, UserManager <User> userManager, KinoContext context, IEncoder encoder, JwtTokenGenerator tokenGenerator)
 {
     this.signInManager  = signInManager;
     this.userManager    = userManager;
     this.context        = context;
     this.encoder        = encoder;
     this.tokenGenerator = tokenGenerator;
 }
Exemple #19
0
 public UserController(UserManager <User> userManager, JwtTokenGenerator tokenGenerator, Json json)
 {
     Ensure.NotNull(userManager, "userManager");
     Ensure.NotNull(tokenGenerator, "tokenGenerator");
     Ensure.NotNull(json, "json");
     this.userManager    = userManager;
     this.tokenGenerator = tokenGenerator;
     this.json           = json;
 }
Exemple #20
0
 public AuthResponse Authenticate(AuthRequest model)
 {
     if (_user.Username == model.Username && _user.Password == model.Password)
     {
         var token = JwtTokenGenerator.Generate(_user, _appSettings.GetValue <string>("SecretKey"));
         return(new AuthResponse(_user, token));
     }
     return(null);
 }
Exemple #21
0
 public UserService(UserManager <User> userManager, SignInManager <User> signInManager,
                    IConfiguration configuration, ILogger <UserService> logger)
 {
     _userManager       = userManager;
     _signInManager     = signInManager;
     _configuration     = configuration;
     _logger            = logger;
     _jwtTokenGenerator = new JwtTokenGenerator(configuration);
 }
Exemple #22
0
        public void JwtTokenGenerator_GenerateJwtToken()
        {
            var claimsIdentity    = new ClaimsIdentity();
            var tokenManager      = new CertificateTokenManager(new FedCertificateDetails());
            var jwtTokenGenerator = new JwtTokenGenerator(tokenManager);
            var jwtToken          = jwtTokenGenerator.GenerateJwtToken(claimsIdentity, 1);

            Assert.IsInstanceOfType(jwtToken, typeof(string));
            Assert.IsTrue(!string.IsNullOrEmpty(jwtToken));
        }
Exemple #23
0
        public JwtTokenGeneratorTests()
        {
            var configuration = new MockConfiguration("none")
            {
                ["Jwt:PrivateKey"] = "MIIEogIBAAKCAQEApTU5T4kF54Eqid0EYfALxYJdz6LAcJxNyXrVa8BFTb9qZyPyBUBNWI6bk/5yjkXgMStb+IwEcIXpMPdoVAY0W7qGsRq7W5W+abOFES4qkgcilhmZONBL0Zeau66qcUPIgt6AJNZqNmmZZ1Swv60u/kuPwlFx2eRCVAJDpTJZZwicVnSELYTHPzbUs24LQaj3ABajZBKtAVRo1giU6s+1Lnl4/v9+yVT5RBzvPcsmjxJeU5JmEt2gDZqEsDmpoeYasEkRsTq8jZNB6a5lVEvwlljktksmUtImcjLvibiRAGjMW86NiiYLjESTEBrKIteKhEH0DoioAoFzUBjapGWKrQIDAQABAoIBAHOZtIqE1M7TQRLKxqBJOdNwj3gU6BdkJ8IN43zMQzJN+IRHULh/8B9BWnfKGhqXpnKBZo+aWhjqeuu6kxQIa2asNEeE7wj81QpdhYUqCru3pmnla6OnjQYR0UH2zGkJBysbygr8xcFhTuhRCIR3CGUENonAN6xB3m+uTeswOgKvj8/873cn7UxeQQTzozXjsYp3f7UfiA0uJySVHV3yUCJFK11Il+NxLvjpdw29ncnxuTUVYR/zZM8uHOOeo5qQ5GvI25iMn+emxOSXxm1m14JISWdc5ejSjBOM2lrxhJ5XCrDNzBJrx/BFKrw78+3yhl3/ns9M9+eY7l2gSg6TxHkCgYEA6GT5zK4SvArj4DKeOAGqmwKHGFhod9pgMMix+8mGmPGy2brXwoCsYKTTISxNH/1pvDGL4i5lh8EGaBxq8ws28mzYfdGnTLzIt9CweaKkIAFkYDTKUO8cTAIDvGDaHJbo6oZvKG87+G4VEtUVziKxivcdN5m0dbooFAGc9VpcD0sCgYEAtf0tDon0fe7qE0/CwAyKaj9Fgfnn4EAS6NJltzmD5J8tD+gIqw5iCvj8EzpobJimkpNhIN0QW4rIw9FicLv44oBZKxU41503e8bQgeCszOb++D5BYFaWzHWPh/goPvpJsXIXdGCj1ZOiVmNJlKLw+XDzwywoZTa3DqMWgkveeucCgYBD2H7pF4TWqyM95+kzFqF1IbbJD75oBzP/6ge0J3CJJD7/u8GTwjcQ++27iJB3n2cIDzr0bHEtwdeZ+3npvMNs4QQPL271Q0QiDeYHjMj3oxBn2eGa4UPUmN34WBo1MIWNOnQnTNooPBMg7V6xUIWeuWgpPFFn8VIUDSiCpL+towKBgA305pmw1sE5q1XjzgmwbIUNaSU4pyG5iDm2uPo+PPExi+EmaFPF/Jre0WYgGpYJduzSxKYijfiXQiJSUnxWzhWAxlXZgMx4UCL78k2jj1z/chpTm+vpeBMiCOnijCOYSkKDf2z7ZFUix1Zcsu3lORnIIcmb/1UTxyImO7muW9eNAoGAd/6epupITJbWItujddk5WtQf1FbCKttEpJzZQV+S9h3ed55QK5wK7kXyTR2LFlPtb+R5ul0oeZwpu0ANNmUcZohTZPCd27mBhFAeGzPjWtA2dcQ0yS+cKPZOZWP/WbQygaX8LsB4lvA0PTTyXeBFb4cyAQNctD1CxpIXOmb7GPo=",
                ["Jwt:PublicKey"]  = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApTU5T4kF54Eqid0EYfALxYJdz6LAcJxNyXrVa8BFTb9qZyPyBUBNWI6bk/5yjkXgMStb+IwEcIXpMPdoVAY0W7qGsRq7W5W+abOFES4qkgcilhmZONBL0Zeau66qcUPIgt6AJNZqNmmZZ1Swv60u/kuPwlFx2eRCVAJDpTJZZwicVnSELYTHPzbUs24LQaj3ABajZBKtAVRo1giU6s+1Lnl4/v9+yVT5RBzvPcsmjxJeU5JmEt2gDZqEsDmpoeYasEkRsTq8jZNB6a5lVEvwlljktksmUtImcjLvibiRAGjMW86NiiYLjESTEBrKIteKhEH0DoioAoFzUBjapGWKrQIDAQAB",
                ["Jwt:ExpireDays"] = "1",
                ["Jwt:Issuer"]     = "testIssuer"
            };

            _tokenGenerator = new JwtTokenGenerator(configuration);
        }
Exemple #24
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole();
            app.UseJwtBearerAuthentication(new JwtBearerOptions
            {
                AutomaticAuthenticate     = true,
                AutomaticChallenge        = true,
                TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer           = true,
                    ValidIssuer              = AuthOptions.ISSUER,
                    ValidateAudience         = true,
                    ValidAudience            = AuthOptions.AUDIENCE,
                    ValidateLifetime         = true,
                    IssuerSigningKey         = AuthOptions.GetSymmetricSecurityKey(),
                    ValidateIssuerSigningKey = true,
                }
            });
            RouteBuilder routeBuilder = new RouteBuilder(app);

            routeBuilder.MapGet("api/code/{id:int}", context =>
            {
                if (context.Authentication.HttpContext.User.Identity.IsAuthenticated)
                {
                    var res = AppConfiguration[context.GetRouteValue("id").ToString()];
                    return(context.Response.WriteAsync(res == null ? (context.Response.StatusCode = 400).ToString()
                    : $"{AppConfiguration["Codeprefix"]}{DateTime.Now.Month}{DateTime.Now.Year}-{res}"));
                }
                return(context.Response.WriteAsync((context.Response.StatusCode = 401).ToString()));
            });
            routeBuilder.MapPost("token/", context =>
            {
                var token  = new  JwtTokenGenerator();
                var identy = token.GetIdentity(context.Request.Headers["username"], context.Request.Headers["password"]);
                if (identy == null)
                {
                    return(context.Response.WriteAsync("Invalid username or password."));;
                }
                var response = new
                {
                    access_token = token.GenerateToken(identy),
                    username     = identy.Name
                };
                context.Response.ContentType = "application/json";
                return(context.Response.WriteAsync(JsonConvert.SerializeObject(response, new JsonSerializerSettings {
                    Formatting = Formatting.Indented
                })));
            });

            app.UseRouter(routeBuilder.Build());
        }
        public async Task <Response <AuthResultDto> > Handle(RegisterStudentCommand request, CancellationToken cancellationToken)
        {
            var existingStudent = await _userManager.FindByEmailAsync(request.Email);

            if (existingStudent != null)
            {
                return(Response.Fail <AuthResultDto>($"User with this email ({request.Email} already exists)"));
            }

            var schoolClass = await _context.SchoolClasses.AsNoTracking()
                              .SingleOrDefaultAsync(c => c.Id == request.SchoolClassId, cancellationToken);

            if (schoolClass is null)
            {
                return(Response.Fail <AuthResultDto>(
                           $"In our school we don't have class with Id#{request.SchoolClassId}"));
            }

            try
            {
                var newUser = _mapper.Map <Student>(request);
                newUser.AbsentMarkCount = 0;
                newUser.NormalizedEmail = request.Email.ToUpper();
                var ph = new PasswordHasher <Student>();
                newUser.PasswordHash  = ph.HashPassword(newUser, request.Password);
                newUser.SchoolClassId = request.SchoolClassId;
                await _context.Students.AddAsync(newUser, cancellationToken);

                var isAdded = await _context.SaveChangesAsync(cancellationToken);

                if (isAdded == 0)
                {
                    return(Response.Fail <AuthResultDto>("Problem occured while creating user entity"));
                }

                await _userManager.AddToRoleAsync(newUser, "Student");

                var result = new AuthResultDto
                {
                    Token = JwtTokenGenerator.GenerateToken(newUser.Email, newUser.Id,
                                                            _jwtSettings.Secret, "Student")
                };
                return(Response.Success <AuthResultDto>(result, "Token is created successfully"));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Exemple #26
0
 public AuthController(UserRepository userRepository,
                       PermissionRepository permissionRepository,
                       CompanyRepository companyRepository,
                       IPasswordHasher <UserEntity> passwordHasher,
                       JwtTokenGenerator jwtTokenGenerator,
                       ILogger <AuthController> logger)
 {
     _userRepository           = userRepository;
     this.permissionRepository = permissionRepository;
     this.companyRepository    = companyRepository;
     _logger            = logger;
     _passwordHasher    = passwordHasher;
     _jwtTokenGenerator = jwtTokenGenerator;
 }
Exemple #27
0
        public async Task <ActionResult <AuthenticateResponseDto> > AuthenticateAsync(AuthenticateRequestDto model)
        {
            var request  = _mapper.Map <AuthenticateRequest>(model);
            var response = await _userService.AuthenticateAsync(request);

            if (response == null)
            {
                return(BadRequest(new { message = "Username or password is incorrect" }));
            }

            response.Token = JwtTokenGenerator.GenerateJwtToken(response.Id, _appSettings.Secret);

            return(Ok(_mapper.Map <AuthenticateResponseDto>(response)));
        }
Exemple #28
0
 public AccountController(
     JwtTokenGenerator jwtTokenGenerator,
     UserManager <User> userManager,
     SignInManager <User> signInManager,
     IUserRepository userRepository,
     IMediator mediator
     )
 {
     _userManager       = userManager;
     _jwtTokenGenerator = jwtTokenGenerator;
     _userRepository    = userRepository;
     _signInManager     = signInManager;
     _mediator          = mediator;
 }
        public GamesApiTests()
        {
            const string issuer = "http://localhost:49194";
            const string key    = "some-long-secret-key";

            var server = new TestServer(new WebHostBuilder()
                                        .UseStartup <Startup>()
                                        .UseSetting("Tokens:Issuer", issuer)
                                        .UseSetting("Tokens:Key", key));

            _client = server.CreateClient();

            _nonAdminToken = JwtTokenGenerator.Generate("mscommunity", false, issuer, key);
            _adminToken    = JwtTokenGenerator.Generate("mscommunity", true, issuer, key);
        }
Exemple #30
0
        public IActionResult Refresh([FromBody] RefreshToken authorizationHeader)
        {
            var tokenHandler = new JwtSecurityTokenHandler();
            var token = tokenHandler.ReadJwtToken(authorizationHeader.Refresh);

            if (token.ValidTo >= DateTime.UtcNow)
            {
                var accessToken = JwtTokenGenerator.Create(DateTime.UtcNow.AddSeconds(accessTokenLifetime), "access");
                accessTokenRequestCount++;
                return this.Ok(new
                {
                    access = accessToken,
                });
            }
            return this.Unauthorized(new { Error = "Wrong refresh token" });
        }