コード例 #1
0
        public override bool DeleteUser(string username, bool deleteAllRelatedData)
        {
            if (string.IsNullOrEmpty(username))
            {
                throw new ArgumentNullException("username");
            }
            string tenantName;
            string tenantUsername;

            if (!Upn.TryParse(username, out tenantName, out tenantUsername))
            {
                return(false);  //invalid username format
            }
            try
            {
                if (!AuthenticationProxy.UserExists(tenantName, tenantUsername))
                {
                    return(false); //not exists
                }
                AuthenticationProxy.DeleteUser(tenantName, tenantUsername);
            }
            catch (Exception ex)
            {
                throw new ProviderException(ex.Message, ex);
            }
            return(true);
        }
コード例 #2
0
        public override string[] GetRolesForUser(string username)
        {
            string tenantName     = null;
            string tenantUsername = null;

            Upn.TryParse(username, out tenantName, out tenantUsername);
            return(AuthorizationProxy.GetRolesForUser(tenantName, tenantUsername));
        }
コード例 #3
0
        public override bool IsUserInRole(string username, string roleName)
        {
            string tenantName     = null;
            string tenantUsername = null;

            Upn.TryParse(username, out tenantName, out tenantUsername);
            return(AuthorizationProxy.IsUserInRole(tenantName, tenantUsername, roleName));
        }
コード例 #4
0
        public override void CreateRole(string roleName)
        {
            string tenantName     = null;
            string tenantUsername = null;

            Upn.TryParse(HttpContext.Current.User.Identity.Name, out tenantName, out tenantUsername);
            if (!string.IsNullOrEmpty(tenantName))
            {
                AuthorizationProxy.CreateRole(tenantName, roleName);
            }
        }
コード例 #5
0
        private string[] FromUpns(string[] upns)
        {
            string tenantName = null;

            string[] usernames = new string[upns.Length];
            for (int i = 0; i < upns.Length; i++)
            {
                Upn.TryParse(upns[i], out tenantName, out usernames[i]);
            }
            return(usernames);
        }
コード例 #6
0
        public override bool ValidateUser(string username, string password)
        {
            string tenantName;
            string tenantUsername;

            if (!Upn.TryParse(username, out tenantName, out tenantUsername))
            {
                return(false);
            }
            return(AuthenticationProxy.ValidateUser(tenantName, tenantUsername, password));
        }
コード例 #7
0
        public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames)
        {
            string tenantName     = null;
            string tenantUsername = null;

            Upn.TryParse(HttpContext.Current.User.Identity.Name, out tenantName, out tenantUsername);
            string[] adamUsernames = FromUpns(usernames);
            if (!string.IsNullOrEmpty(tenantName))
            {
                AuthorizationProxy.RemoveUsersFromRoles(tenantName, adamUsernames, roleNames);
            }
        }
コード例 #8
0
        public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
        {
            string tenantName     = null;
            string tenantUsername = null;

            Upn.TryParse(HttpContext.Current.User.Identity.Name, out tenantName, out tenantUsername);
            if (!string.IsNullOrEmpty(tenantName))
            {
                AuthorizationProxy.DeleteRole(tenantName, roleName);
            }
            return(true);
        }
コード例 #9
0
        public override bool RoleExists(string roleName)
        {
            string tenantName     = null;
            string tenantUsername = null;

            Upn.TryParse(HttpContext.Current.User.Identity.Name, out tenantName, out tenantUsername);
            if (!string.IsNullOrEmpty(tenantName))
            {
                return(AuthorizationProxy.RoleExists(tenantName, roleName));
            }
            else
            {
                return(false);
            }
        }
コード例 #10
0
        public override string[] GetAllRoles()
        {
            string tenantName     = null;
            string tenantUsername = null;

            Upn.TryParse(HttpContext.Current.User.Identity.Name, out tenantName, out tenantUsername);
            if (!string.IsNullOrEmpty(tenantName))
            {
                return(AuthorizationProxy.GetAllRoles(tenantName));
            }
            else
            {
                return(null);
            }
        }
コード例 #11
0
        public override MembershipUser GetUser(string username, bool userIsOnline)
        {
            string tenantName;
            string tenantUsername;

            if (!Upn.TryParse(username, out tenantName, out tenantUsername))
            {
                throw new ArgumentException(string.Format("The username {0} is invalid!", username));
            }
            AdamUser adamUser = AuthenticationProxy.GetAdamUser(tenantName, tenantUsername);

            if (adamUser == null)
            {
                return(null);
            }
            object providerUserKey = new SecurityIdentifier(adamUser.Sid, 0);

            return(new ActiveDirectoryMembershipUser(this.Name, adamUser.PrincipleName, providerUserKey, adamUser.Email, string.Empty, string.Empty
                                                     , true, false, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now));
        }
コード例 #12
0
        public override bool ChangePassword(string username, string oldPassword, string newPassword)
        {
            if (string.IsNullOrEmpty(username))
            {
                throw new ArgumentNullException("username");
            }
            string tenantName;
            string tenantUsername;

            if (!Upn.TryParse(username, out tenantName, out tenantUsername))
            {
                return(false);
            }
            CheckPassword(oldPassword, MinRequiredPasswordLength, "oldPassword");
            CheckPassword(oldPassword, MinRequiredPasswordLength, "newPassword");
            if (newPassword.Length < this.MinRequiredPasswordLength)
            {
                throw new ArgumentException(string.Format("The length of the passowrd {0} must not be shorter than {1} characters!", "newPassword", MinRequiredPasswordLength));
            }
            int num1 = 0;

            for (int num2 = 0; num2 < newPassword.Length; num2++)
            {
                if (!char.IsLetterOrDigit(newPassword, num2))
                {
                    num1++;
                }
            }
            if (num1 < this.MinRequiredNonAlphanumericCharacters)
            {
                throw new ArgumentException(string.Format("Non alpha numeric characters of {0} must be more than {1}", "newPassword", MinRequiredNonAlphanumericCharacters));
            }
            if ((this.PasswordStrengthRegularExpression.Length > 0) && !Regex.IsMatch(newPassword, this.PasswordStrengthRegularExpression))
            {
                throw new ArgumentException(string.Format("The format of the password {0} is not correct!", "newPassword"));
            }

            AuthenticationProxy.ChangePassword(tenantName, tenantUsername, oldPassword, newPassword);
            return(true);
        }
コード例 #13
0
        public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
        {
            //extract tenant name from the current user upn
            string tenantName;
            string username;

            Upn.TryParse(HttpContext.Current.User.Identity.Name, out tenantName, out username);

            MembershipUserCollection collection = new MembershipUserCollection();

            string[] usernames = AuthenticationProxy.GetUsers(tenantName);
            totalRecords = usernames.Length;
            int start = pageIndex * pageSize;

            if (start >= 0 && start < totalRecords)
            {
                for (int i = start; i < totalRecords && i < start + pageSize; i++)
                {
                    collection.Add(System.Web.Security.Membership.GetUser((new Upn(tenantName, usernames[i])).ToString()));
                }
            }
            return(collection);
        }
コード例 #14
0
        public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            status = MembershipCreateStatus.Success;
            string tenantName;
            string tenantUsername;

            if (string.IsNullOrEmpty(username))
            {
                status = MembershipCreateStatus.InvalidUserName;
                return(null);
            }

            if (!Upn.TryParse(username, out tenantName, out tenantUsername))
            {
                status = MembershipCreateStatus.InvalidUserName;
                return(null);
            }

            if (string.IsNullOrEmpty(email))
            {
                status = MembershipCreateStatus.InvalidEmail;
                return(null);
            }

            if (string.IsNullOrEmpty(password) || password.Length < MinRequiredPasswordLength)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }

            int i = 0;

            for (int j = 0; j < password.Length; j++)
            {
                if (!char.IsLetterOrDigit(password, j))
                {
                    i++;
                }
            }
            if (i < MinRequiredNonAlphanumericCharacters)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }
            if ((PasswordStrengthRegularExpression.Length > 0) && !Regex.IsMatch(password, PasswordStrengthRegularExpression))
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }
            ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(username, password, true);

            base.OnValidatingPassword(args);
            if (args.Cancel)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }

            try
            {
                if (AuthenticationProxy.UserExists(tenantName, tenantUsername))
                {
                    status = MembershipCreateStatus.DuplicateUserName;
                    return(null);
                }
                AuthenticationProxy.CreateUser(tenantName, tenantUsername, password, email);
            }
            catch (Exception ex)
            {
                throw new ProviderException(ex.Message, ex);
            }
            return(GetUser(username, false));
        }