public void ExtractClaimUid_ClaimsIdentity()
        {
            // Arrange
            Mock <IIdentity> mockIdentity = new Mock <IIdentity>();

            mockIdentity.Setup(o => o.IsAuthenticated).Returns(true);
            MockAntiForgeryConfig config = new MockAntiForgeryConfig()
            {
                UniqueClaimTypeIdentifier = "unique-identifier"
            };
            ClaimsIdentityConverter converter = new ClaimsIdentityConverter(new Func <IIdentity, ClaimsIdentity>[] {
                identity =>
                {
                    Assert.Equal(mockIdentity.Object, identity);
                    MockClaimsIdentity claimsIdentity = new MockClaimsIdentity();
                    claimsIdentity.AddClaim("unique-identifier", "some-value");
                    return(claimsIdentity);
                }
            });

            ClaimUidExtractor extractor = new ClaimUidExtractor(
                config: config,
                claimsIdentityConverter: converter);

            // Act
            BinaryBlob retVal = extractor.ExtractClaimUid(mockIdentity.Object);

            // Assert
            Assert.NotNull(retVal);
            Assert.Equal("CA9CCFF86F903FBB7505BAAA9F222E49EC2A1E8FAD630AE73DE180BD679751ED", HexUtil.HexEncode(retVal.GetData()));
        }
示例#2
0
 internal ClaimUidExtractor(
     IAntiForgeryConfig config,
     ClaimsIdentityConverter claimsIdentityConverter
     )
 {
     _config = config;
     _claimsIdentityConverter = claimsIdentityConverter;
 }
        public void TryConvert_NoMatches_ReturnsNull()
        {
            // Arrange
            IIdentity identity = new Mock <IIdentity>().Object;
            ClaimsIdentityConverter converter = new ClaimsIdentityConverter(new Func <IIdentity, ClaimsIdentity> [0]);

            // Act
            ClaimsIdentity retVal = converter.TryConvert(identity);

            // Assert
            Assert.Null(retVal);
        }
        public void TryConvert_NoMatches_ReturnsNull()
        {
            // Arrange
            IIdentity identity = new Mock<IIdentity>().Object;
            ClaimsIdentityConverter converter = new ClaimsIdentityConverter(new Func<IIdentity, ClaimsIdentity>[0]);

            // Act
            ClaimsIdentity retVal = converter.TryConvert(identity);

            // Assert
            Assert.Null(retVal);
        }
示例#5
0
 public static void ConfigureClaimsConverter(this ClaimsIdentityConverter claimsProvider)
 {
     claimsProvider.ConfigureClaimsConverter <VoterIdentity>(
         voterIdentity => new[]
     {
         // id
         new Claim(ClaimNames.Id, voterIdentity.Id.ToString()),
         // pesel
         new Claim(ClaimNames.Pesel, voterIdentity.Pesel.ToString()),
         // is administrator
         new Claim(ClaimNames.IsAdministrator, voterIdentity.IsAdministrator.ToString())
     });
 }
        public void TryConvert_SkipsGrandfatheredTypes(IIdentity identity)
        {
            // Arrange
            ClaimsIdentityConverter converter = new ClaimsIdentityConverter(new Func <IIdentity, ClaimsIdentity>[]
            {
                _ => { throw new Exception("Should never be called."); }
            });

            // Act
            ClaimsIdentity retVal = converter.TryConvert(identity);

            // Assert
            Assert.Null(retVal);
        }
        public void TryConvert_SkipsGrandfatheredTypes(IIdentity identity)
        {
            // Arrange
            ClaimsIdentityConverter converter = new ClaimsIdentityConverter(new Func<IIdentity, ClaimsIdentity>[]
            {
                _ => { throw new Exception("Should never be called."); }
            });

            // Act
            ClaimsIdentity retVal = converter.TryConvert(identity);

            // Assert
            Assert.Null(retVal);
        }
        public void TryConvert_ReturnsFirstMatch()
        {
            // Arrange
            IIdentity      identity       = new Mock <IIdentity>().Object;
            ClaimsIdentity claimsIdentity = new MockClaimsIdentity();

            ClaimsIdentityConverter converter = new ClaimsIdentityConverter(new Func <IIdentity, ClaimsIdentity>[]
            {
                _ => null,
                i => (i == identity) ? claimsIdentity : null
            });

            // Act
            ClaimsIdentity retVal = converter.TryConvert(identity);

            // Assert
            Assert.Same(claimsIdentity, retVal);
        }
        public void TryConvert_ReturnsFirstMatch()
        {
            // Arrange
            IIdentity identity = new Mock<IIdentity>().Object;
            ClaimsIdentity claimsIdentity = new MockClaimsIdentity();

            ClaimsIdentityConverter converter = new ClaimsIdentityConverter(new Func<IIdentity, ClaimsIdentity>[]
            {
                _ => null,
                i => (i == identity) ? claimsIdentity : null
            });

            // Act
            ClaimsIdentity retVal = converter.TryConvert(identity);

            // Assert
            Assert.Same(claimsIdentity, retVal);
        }
        public void ExtractClaimUid_NotAClaimsIdentity()
        {
            // Arrange
            Mock <IIdentity> mockIdentity = new Mock <IIdentity>();

            mockIdentity.Setup(o => o.IsAuthenticated).Returns(true);
            MockAntiForgeryConfig   config    = new MockAntiForgeryConfig();
            ClaimsIdentityConverter converter = new ClaimsIdentityConverter(new Func <IIdentity, ClaimsIdentity> [0]);

            ClaimUidExtractor extractor = new ClaimUidExtractor(
                config: config,
                claimsIdentityConverter: converter);

            // Act
            BinaryBlob retVal = extractor.ExtractClaimUid(mockIdentity.Object);

            // Assert
            Assert.Null(retVal);
        }
示例#11
0
        public static void ConfigureIdentityConverter(this ClaimsIdentityConverter claimsProvider)
        {
            claimsProvider.ConfigureIdentityConverter(
                claims =>
            {
                var claimsDictionary = claims.ToDictionary(c => c.Type, c => c.Value);

                // id
                var idValue = claimsDictionary.GetValueOrDefault(ClaimNames.Id);
                var id      = idValue != default ? Guid.Parse(idValue) : default;

                // pesel
                var peselValue = claimsDictionary.GetValueOrDefault(ClaimNames.Pesel);
                var pesel      = peselValue ?? string.Empty;

                // is administrator
                var isAdministratorValue = claimsDictionary.GetValueOrDefault(ClaimNames.IsAdministrator);
                var isAdministrator      = !string.IsNullOrEmpty(isAdministratorValue) && bool.Parse(isAdministratorValue);

                return(new VoterIdentity(id, pesel, isAdministrator));
            });
        }