コード例 #1
0
        public void When_Given_User_Return_ClaimsPrincipal()
        {
            // Assign
            #region Options
            IOptions <LdapConfig> ldapOptions = Options.Create(new LdapConfig());
            #endregion
            #region Service
            var authService = new LdapAuthenticationService(ldapOptions);
            #endregion
            var authenticationProvider = new AuthenticationProvider(authService);
            var user = new User
            {
                DisplayName = "Calle Carlsson",
                Username    = "******",
            };

            // Act
            var claimsPrincipal = authenticationProvider.GetClaimsPrincipal(user);
            var identity        = claimsPrincipal.Identities.SingleOrDefault();
            var actClaims       = claimsPrincipal.Claims.ToList();

            // Assert
            Assert.True(identity.IsAuthenticated);
            Assert.True(identity.AuthenticationType == authService.GetType().Name);
            Assert.True(actClaims.SingleOrDefault(m => m.Type == "displayName").Value == user.DisplayName);
            Assert.True(actClaims.SingleOrDefault(m => m.Type == "username").Value == user.Username);
        }
コード例 #2
0
        public void When_Given_ClaimsPrincipal_Return_JWT()
        {
            // Assign
            #region TokenProviderOptions
            var secretKey  = "A very secret key123!!!";
            var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey));

            var audience           = "TestAudience";
            var issuer             = "TestIssuer";
            var expiration         = TimeSpan.FromMinutes(5);
            var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);

            IOptions <TokenProviderOptions> tokenProviderOptions = Options.Create
                                                                   (
                new TokenProviderOptions
            {
                Audience           = audience,
                Expiration         = expiration,
                Issuer             = issuer,
                SigningCredentials = signingCredentials,
            }
                                                                   );
            #endregion
            #region DateTimeFactoryMock
            var dateTimeOffset      = new DateTimeOffset(2017, 02, 10, 11, 11, 12, TimeSpan.FromMinutes(0));
            var dateTimeFactoryMock = new Mock <IDateTimeFactory>();
            dateTimeFactoryMock.Setup(m => m.DateTimeOffset).Returns(dateTimeOffset);
            #endregion
            #region ClaimsPrincipal
            var user = new User
            {
                DisplayName = "Oskar",
                IsAdmin     = true,
                Username    = "******",
            };

            var authOptions         = Options.Create(new LdapConfig());
            var authService         = new LdapAuthenticationService(authOptions);
            var authProvider        = new AuthenticationProvider(authService);
            var userClaimsPrincipal = authProvider.GetClaimsPrincipal(user);
            #endregion
            #region JwtSecurityTokenHandler
            var handler = new JwtSecurityTokenHandler();
            #endregion

            var jwtTokenProvider = new JwtTokenProvider(tokenProviderOptions, dateTimeFactoryMock.Object);

            // Act
            var encodedToken = jwtTokenProvider.GenerateToken(userClaimsPrincipal);
            var jwt          = handler.ReadJwtToken(encodedToken.accessToken);

            // Assert
            Assert.True(jwt.Claims.SingleOrDefault(c => c.Type == "displayName").Value == "Oskar");
            Assert.True(jwt.Claims.SingleOrDefault(c => c.Type == JwtRegisteredClaimNames.Iat).Value == dateTimeOffset.ToUnixTimeSeconds().ToString());
        }
コード例 #3
0
        public void When_Given_Developer_Ignore_Role_And_Return_ClaimsPrincipal()
        {
            // Assign
            #region Options
            IOptions <LdapConfig> ldapOptions = Options.Create(new LdapConfig());
            #endregion
            #region Service
            var authService = new LdapAuthenticationService(ldapOptions);
            #endregion
            var authenticationProvider = new AuthenticationProvider(authService);
            var user = new User
            {
                DisplayName = "Calle Carlsson",
                Username    = "******",
                IsDeveloper = true,
            };

            // Act
            var claimsPrincipal = authenticationProvider.GetClaimsPrincipal(user);

            // Assert
            Assert.False(claimsPrincipal.HasClaim(c => c.Type == ClaimTypes.Role));
        }
コード例 #4
0
        public void When_Given_Admin_Return_ClaimsPrincipal()
        {
            // Assign
            #region Options
            IOptions <LdapConfig> ldapOptions = Options.Create(new LdapConfig());
            #endregion
            #region Service
            var authService = new LdapAuthenticationService(ldapOptions);
            #endregion
            var authenticationProvider = new AuthenticationProvider(authService);
            var user = new User
            {
                DisplayName = "Calle Carlsson",
                Username    = "******",
                Email       = "*****@*****.**",
                IsAdmin     = true,
            };

            // Act
            var claimsPrincipal = authenticationProvider.GetClaimsPrincipal(user);

            // Assert
            Assert.True(claimsPrincipal.HasClaim(c => c.Type == ClaimTypes.Role && c.Value == "Admin"));
        }