public IAdapterPresentation TryEndAuthentication(IAuthenticationContext context, IProofData proofData, System.Net.HttpListenerRequest request, out System.Security.Claims.Claim[] claims)
 {
     claims = null;
     IAdapterPresentation result = null;
     string pin = proofData.Properties["pin"].ToString();
     if (pin == "98765")
     {
         System.Security.Claims.Claim claim = new System.Security.Claims.Claim("http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", "http://schemas.microsoft.com/ws/2012/12/authmethod/otp");
         claims = new System.Security.Claims.Claim[] { claim };
     }
     else
     {
         result = new SimplePINAdapterPresentation("Authentication failed.", false);
     }
     return result;
 }
        public async Task<Client> FetchClient(string siteId, string clientId, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            var client = await _queries.FetchAsync(siteId, clientId, cancellationToken).ConfigureAwait(false);
            if(client != null)
            {
                var clientClaims = await GetClientClaims(siteId, client.ClientId, cancellationToken).ConfigureAwait(false);
                foreach(var cc in clientClaims)
                {
                    var c = new System.Security.Claims.Claim(cc.Type, cc.Value);
                    client.Claims.Add(c);
                }
            }
            

            return client;
        }
Beispiel #3
0
        public async Task<Client> FindClientByIdAsync(string clientId)
        {
            var site = _contextAccessor.HttpContext.GetTenant<SiteContext>();
            if (site == null) return null;

            var client =  await _queries.FetchAsync(
                site.Id.ToString(), // aka nodb projectid
                clientId 
                ).ConfigureAwait(false);

            if (client != null)
            {
                var clientClaims = await GetClientClaims(site.Id.ToString(), client.ClientId).ConfigureAwait(false);
                foreach (var cc in clientClaims)
                {
                    var c = new System.Security.Claims.Claim(cc.Type, cc.Value);
                    client.Claims.Add(c);
                }
            }

            return client;
        }
 public bool IsAvailableForUser(Claim identityClaim, IAuthenticationContext context)
 {
     return(true);
 }
Beispiel #5
0
 public Task ReplaceClaimAsync(ApplicationUser user, System.Security.Claims.Claim claim, System.Security.Claims.Claim newClaim, CancellationToken cancellationToken)
 {
     throw new NotImplementedException();
 }
Beispiel #6
0
 public List <long> GetUserIdsByClaim(System.Security.Claims.Claim claim)
 {
     return(DbSet.Where(x => x.ClaimType == claim.Type && x.ClaimValue == claim.Value).Select(o => o.UserId).ToList());
 }
 public virtual bool TryRemoveClaim(System.Security.Claims.Claim claim)
 {
     throw null;
 }
 public static System.Security.Claims.Claim ToSecurityClaim(this Claim model)
 {
     System.Security.Claims.Claim claim = null;
     if (model != null)
         claim = new System.Security.Claims.Claim(model.ClaimType, model.ClaimValue, "http://www.w3.org/2001/XMLSchema#string");
     return claim;
 }
        /// <summary>
        /// Uses JwtSecurityTokenHandler.OutboundClaimTypeMap to map claimtype.
        /// </summary>
        /// <param name="claim"></param>
        /// <returns></returns>
        public static Claim OutboundClaim( Claim claim )
        {
            Claim outboundClaim = claim;
            if ( JwtSecurityTokenHandler.OutboundClaimTypeMap.ContainsKey( claim.Type ) )
            {
                outboundClaim = new Claim( JwtSecurityTokenHandler.OutboundClaimTypeMap[claim.Type], claim.Value, claim.ValueType, claim.Issuer, claim.OriginalIssuer, claim.Subject );
                foreach ( KeyValuePair< string, string > kv in claim.Properties )
                {
                    outboundClaim.Properties.Add( kv );
                }
            }

            return outboundClaim;
        }
        public static IEnumerable<Claim> ExpectedInClaimsIdentityUsingAllInboundShortClaimTypes(string issuer, string originalIssuer, IEnumerable<Claim> extraClaims = null)
        {
            foreach (KeyValuePair<string, string> pair in JwtSecurityTokenHandler.InboundClaimTypeMap)
            {
                Claim claim = new Claim(pair.Value, pair.Value, ClaimValueTypes.String, issuer, originalIssuer);
                claim.Properties.Add(new KeyValuePair<string, string>(JwtSecurityTokenHandler.ShortClaimTypeProperty, pair.Key));
                yield return claim;
            }

            if (extraClaims != null)
            {
                foreach (Claim c in extraClaims)
                {
                    yield return c;
                }
            }
        }
        public System.Threading.Tasks.Task AddClaimAsync(SoftFluent.Samples.AspNetIdentity2.User user, System.Security.Claims.Claim claim)
        {
            SoftFluent.Samples.AspNetIdentity2.UserClaim userClaim = new SoftFluent.Samples.AspNetIdentity2.UserClaim();
            userClaim.User  = user;
            userClaim.Type  = claim.Type;
            userClaim.Value = claim.Value;

            userClaim.Issuer = claim.Issuer;

            userClaim.OriginalIssuer = claim.OriginalIssuer;

            userClaim.ValueType = claim.ValueType;


            userClaim.Save();
            return(System.Threading.Tasks.Task.FromResult(0));
        }
Beispiel #12
0
 protected Claim(System.Security.Claims.Claim other, System.Security.Claims.ClaimsIdentity subject)
 {
 }
Beispiel #13
0
 public virtual bool TryRemoveClaim(System.Security.Claims.Claim claim)
 {
     return(default(bool));
 }
Beispiel #14
0
 public virtual void RemoveClaim(System.Security.Claims.Claim claim)
 {
 }
Beispiel #15
0
 protected Claim(System.Security.Claims.Claim other)
 {
 }
Beispiel #16
0
 public virtual void AddClaim(System.Security.Claims.Claim claim)
 {
 }
        public async Task ReplaceClaimAsync(DemoIdentityUser user, System.Security.Claims.Claim claim, System.Security.Claims.Claim newClaim, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();
            throwIfDisposed();
            ExceptionUtil.ThrowIfNull(user, nameof(user));
            ExceptionUtil.ThrowIfNull(claim, nameof(claim));
            ExceptionUtil.ThrowIfNull(newClaim, nameof(newClaim));

            var userId = getGuid(user.Id);

            var userClaim = (await _unitOfWork.UserClaimRepository.GetByUserIdAsync(userId))
                            .SingleOrDefault(x => x.Type == claim.Type && x.Value == claim.Value);

            if (userClaim != null)
            {
                userClaim.Type  = newClaim.Type;
                userClaim.Value = newClaim.Value;

                await _unitOfWork.UserClaimRepository.UpdateAsync(userClaim);

                await _unitOfWork.CommitAsync();
            }
        }
        private JwtPayload doBuildPayload(PrivateClaims privateClaims, JWTOptions options)
        {
            JwtPayload payload = new JwtPayload();
            // ****START BUILD PAYLOAD****//
            // Adding private claims
            List <Claim> privateC = privateClaims.getAllClaims();

            foreach (Claim privateClaim in privateC)
            {
                if (privateClaim.getNestedClaims() != null)
                {
                    payload.Add(privateClaim.getKey(), privateClaim.getNestedClaims().getNestedMap());
                }
                else
                {
                    System.Security.Claims.Claim netPrivateClaim = null;
                    object obj = privateClaim.getValue();
                    if (obj.GetType() == typeof(string))
                    {
                        netPrivateClaim = new System.Security.Claims.Claim(privateClaim.getKey(), (string)privateClaim.getValue());
                    }
                    else if (obj.GetType() == typeof(int))
                    {
                        int value = (int)obj;
                        netPrivateClaim = new System.Security.Claims.Claim(privateClaim.getKey(), value.ToString(), System.Security.Claims.ClaimValueTypes.Integer32);
                    }
                    else if (obj.GetType() == typeof(long))
                    {
                        long value = (long)obj;
                        netPrivateClaim = new System.Security.Claims.Claim(privateClaim.getKey(), value.ToString(), System.Security.Claims.ClaimValueTypes.Integer64);
                    }
                    else if (obj.GetType() == typeof(double))
                    {
                        double value = (double)obj;
                        netPrivateClaim = new System.Security.Claims.Claim(privateClaim.getKey(), value.ToString(), System.Security.Claims.ClaimValueTypes.Double);
                    }
                    else if (obj.GetType() == typeof(bool))
                    {
                        bool value = (bool)obj;
                        netPrivateClaim = new System.Security.Claims.Claim(privateClaim.getKey(), value.ToString(), System.Security.Claims.ClaimValueTypes.Boolean);
                    }
                    else
                    {
                        this.error.setError("JW012", "Unrecognized data type");
                    }

                    //System.Security.Claims.Claim netPrivateClaim = new System.Security.Claims.Claim(privateClaim.getKey(), privateClaim.getValue());

                    payload.AddClaim(netPrivateClaim);
                }
            }
            // Adding public claims
            if (options.hasPublicClaims())
            {
                PublicClaims publicClaims = options.getAllPublicClaims();
                List <Claim> publicC      = publicClaims.getAllClaims();
                foreach (Claim publicClaim in publicC)
                {
                    System.Security.Claims.Claim netPublicClaim = new System.Security.Claims.Claim(publicClaim.getKey(), (string)publicClaim.getValue());
                    payload.AddClaim(netPublicClaim);
                }
            }
            // Adding registered claims
            if (options.hasRegisteredClaims())
            {
                RegisteredClaims registeredClaims = options.getAllRegisteredClaims();
                List <Claim>     registeredC      = registeredClaims.getAllClaims();
                foreach (Claim registeredClaim in registeredC)
                {
                    System.Security.Claims.Claim netRegisteredClaim;

                    if (RegisteredClaimUtils.isTimeValidatingClaim(registeredClaim.getKey()))
                    {
                        netRegisteredClaim = new System.Security.Claims.Claim(registeredClaim.getKey(), (string)registeredClaim.getValue(), System.Security.Claims.ClaimValueTypes.Integer32);
                    }
                    else
                    {
                        netRegisteredClaim = new System.Security.Claims.Claim(registeredClaim.getKey(), (string)registeredClaim.getValue());
                    }

                    payload.AddClaim(netRegisteredClaim);
                }
            }
            // ****END BUILD PAYLOAD****//
            return(payload);
        }
        public static List<Claim> RoleClaimsLongType(string issuer, string originalIssuer)
        {
            var claims = new List<Claim>();

            var claim = new Claim(ClaimTypes.Role, "role1", ClaimValueTypes.String, issuer, originalIssuer);
            claim.Properties.Add(JwtSecurityTokenHandler.ShortClaimTypeProperty, "role");
            claims.Add(claim);

            claim = new Claim(ClaimTypes.Role, "roles1", ClaimValueTypes.String, issuer, originalIssuer);
            claim.Properties.Add(JwtSecurityTokenHandler.ShortClaimTypeProperty, "roles");
            claims.Add(claim);

            return claims;
        }
 public System.Threading.Tasks.Task RemoveClaimAsync(SoftFluent.Samples.AspNetIdentity2.User user, System.Security.Claims.Claim claim)
 {
     SoftFluent.Samples.AspNetIdentity2.UserClaimCollection.DeleteByTypeAndValue(claim.Type, claim.Value);
     return(System.Threading.Tasks.Task.FromResult(0));
 }
        /// <summary>
        /// Simulates that a claim arrived and was mapped, adds the short name property for any claims that would have been translated
        /// </summary>
        /// <param name="claim"></param>
        /// <returns></returns>
        public static Claim InboundClaim( Claim claim )
        {
            if ( JwtSecurityTokenHandler.OutboundClaimTypeMap.ContainsKey( claim.Type ) )
            {
                if ( JwtSecurityTokenHandler.InboundClaimTypeMap.ContainsKey( JwtSecurityTokenHandler.OutboundClaimTypeMap[claim.Type] ) )
                {
                    if ( !claim.Properties.ContainsKey( JwtSecurityTokenHandler.ShortClaimTypeProperty ) )
                    {
                        claim.Properties.Add( JwtSecurityTokenHandler.ShortClaimTypeProperty, JwtSecurityTokenHandler.OutboundClaimTypeMap[claim.Type] );
                    }
                }
            }

            return claim;
        }
Beispiel #22
0
        private static UserInfo GetOrCreateCachedUserInfo(JwtSecurityToken jwt, PortalSettings portalSettings, System.Security.Claims.Claim userClaim)
        {
            var usernamePrefixEnabled = bool.Parse(AzureConfig.GetSetting(AzureConfig.ServiceName, "UsernamePrefixEnabled", portalSettings.PortalId, "true"));
            var usernameToFind        = usernamePrefixEnabled ? $"azureb2c-{userClaim.Value}" : userClaim.Value;
            var userInfo = UserController.GetUserByName(portalSettings.PortalId, usernameToFind);
            var tokenKey = ComputeSha256Hash(jwt.RawData);
            var cache    = DotNetNuke.Services.Cache.CachingProvider.Instance();

            if (string.IsNullOrEmpty((string)cache.GetItem($"SyncB2CToken|{tokenKey}")))
            {
                var azureClient = new AzureClient(portalSettings.PortalId, AuthMode.Login)
                {
                    JwtIdToken = jwt
                };
                azureClient.SetAuthTokenInternal(jwt.RawData);
                azureClient.SetAutoMatchExistingUsers(true);
                var userData = azureClient.GetCurrentUserInternal(jwt);
                if (userInfo == null)
                {
                    // If user doesn't exist, create the user
                    userInfo                     = userData.ToUserInfo(usernamePrefixEnabled);
                    userInfo.PortalID            = portalSettings.PortalId;
                    userInfo.Membership.Password = UserController.GeneratePassword();
                    var result = UserController.CreateUser(ref userInfo);
                }

                azureClient.AuthenticateUser(userData, portalSettings, HttpContext.Current.Request["REMOTE_ADDR"], azureClient.AddCustomProperties, azureClient.OnUserAuthenticated);
                azureClient.UpdateUserProfile(jwt, portalSettings, false, false);
                cache.Insert($"SyncB2CToken|{tokenKey}", "OK", null, jwt.ValidTo, TimeSpan.Zero);
            }

            return(userInfo);
        }
 public UserHttpContext(string userKey)
 {
     var claim = new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.NameIdentifier, userKey);
     var claimIdentity = new System.Security.Claims.ClaimsIdentity(new List<System.Security.Claims.Claim> { claim }, "Test");
     var identity = new System.Security.Claims.ClaimsIdentity[] { claimIdentity };
     var principal = new System.Security.Claims.ClaimsPrincipal(identity);
     User = principal;
     _Request = MockHttpContextFactory.CreateRequest();
     _Response = MockHttpContextFactory.CreateResponse();
 }
Beispiel #24
0
        public Task RemoveClaimAsync(User user, Claim claim)
        {
            var c = user.Claims.FirstOrDefault(l =>
                l.Type == claim.Type &&
                l.Value == claim.Value
            );

            if (c != null)
                user.Claims.Remove(c);

            return Task.FromResult(0);
        }
 private static System.Security.Claims.ClaimsPrincipal CreateClaimsPrincipal(string userKey)
 {
     System.Security.Claims.ClaimsIdentity claimIdentity;
     if (userKey == null)
     {
         claimIdentity = new System.Security.Claims.ClaimsIdentity();
     }
     else
     {
         var claim = new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.NameIdentifier, userKey);
         var claims = new List<System.Security.Claims.Claim> { claim };
         claimIdentity = new System.Security.Claims.ClaimsIdentity(claims, "Test");
     }
     var identity = new System.Security.Claims.ClaimsIdentity[] { claimIdentity };
     return new System.Security.Claims.ClaimsPrincipal(identity);
 }
 Task IUserClaimStore <JoinIdentityUser, int> .RemoveClaimAsync(JoinIdentityUser user, Claim claim) =>
 throw new NotImplementedException();
Beispiel #27
0
        public Task AddClaimAsync(User user, Claim claim)
        {
            var c = new Core.Security.Claim();
            c.Type = claim.Type;
            c.Value = claim.Value;

            user.Claims.Add(c);
            return Task.FromResult(0);
        }
 public async Task AddClaimAsync(ApplicationUser user, System.Security.Claims.Claim claim)
 {
     this.ThrowIfDisposed();
     await this._userManagementService.AddClaimAsync(user.ToDomainUser(), claim.ToDomainClaim(), new CancellationToken());
 }
Beispiel #29
0
 public Task <IList <ApplicationUser> > GetUsersForClaimAsync(System.Security.Claims.Claim claim, CancellationToken cancellationToken)
 {
     throw new NotImplementedException();
 }
 protected virtual void WriteClaim(System.IO.BinaryWriter writer, System.Security.Claims.Claim claim)
 {
 }