Ejemplo n.º 1
0
        public RBACPrincipal(X509Certificate2 clientCert, IIdentity ident)
        {
            this.ident = ident;

            string organization = null;
            string group        = null;

            string[] nameParts = clientCert.SubjectName.Name.Split(',');
            foreach (var pp in nameParts)
            {
                string[] keyVal = pp.Trim().Split('=');
                if (keyVal[0] == "O")
                {
                    organization = keyVal[1];
                }
                else if (keyVal[0] == "OU")
                {
                    group = keyVal[1];
                }
            }

            //string finalGroupName = organization == null ? group : organization + "\\" + group;
            string finalGroupName = group;

            try
            {
                roles.UnionWith(RBACManager.GetInstance().GetPermsForGroup(finalGroupName));
            }
            catch (Exception)
            {
            }
        }
Ejemplo n.º 2
0
        public static RBACPrincipalCache GetInstance()
        {
            if (instance == null)
            {
                instance = new RBACPrincipalCache();
                RBACManager.GetInstance().AddObserver(instance);
            }

            return(instance);
        }
Ejemplo n.º 3
0
        public RBACPrincipal(WindowsIdentity ident)
        {
            this.ident = ident;

            RBACManager rbacMgr = RBACManager.GetInstance();

            foreach (var group in ident.Groups)
            {
                try
                {
                    IdentityReference ntAcc = group.Translate(typeof(NTAccount));
                    //List<string> perms = rbacMgr.GetPermsForGroup(ntAcc.Value);
                    List <string> perms = rbacMgr.GetPermsForGroup(Formatter.ParseName(ntAcc.Value));
                    roles.UnionWith(perms);
                }
                catch (Exception e)
                {
                    //Console.WriteLine("RBACPrincipal exception: {0}", e.Message);
                }
            }
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            IRBACManager RBAC = RBACManager.GetInstance();

            char selection;
            bool running = true;

            while (running)
            {
                PrintMenuSelection();

                selection = Console.ReadKey().KeyChar;

                switch (selection)
                {
                case '1':
                    OptionAddGroup(RBAC);
                    break;

                case '2':
                    OptionAddPermission(RBAC);
                    break;

                case '3':
                    OptionRemoveGroup(RBAC);
                    break;

                case '4':
                    OptionRemovePermission(RBAC);
                    break;

                case '5':
                    running = false;
                    break;

                default:
                    break;
                }
            }
        }
Ejemplo n.º 5
0
        public RBACManagerTests()
        {
            var container = new UnityContainer();

            container.RegisterType <IPasswordHasher, PasswordHasher>();

            //TODO: Refactor to Generic RepositoryFactory
            _userRepositoryMock = new Mock <IUserRepository>();
            _userRepositoryMock.Setup(dp => dp.GetAllAsync())
            .Returns(Task.FromResult(GetUsers()));

            _roleRepositoryMock = new Mock <IRoleRepository>();
            _roleRepositoryMock.Setup(dp => dp.GetAllAsync())
            .Returns(Task.FromResult(GetRoles()));

            var aclRepositoryMock  = new Mock <IAclRepository>();
            var passwordHasherMock = new Mock <IPasswordHasher>();

            var loggedInEventMock   = new Mock <AfterUserLoggedinEvent>();
            var eventAggregatorMock = new Mock <IEventAggregator>();

            eventAggregatorMock.Setup(ea => ea.GetEvent <AfterUserLoggedinEvent>())
            .Returns(loggedInEventMock.Object);

            var loggedOutEventMock = new Mock <AfterUserLoggedoutEvent>();

            eventAggregatorMock.Setup(ea => ea.GetEvent <AfterUserLoggedoutEvent>())
            .Returns(loggedOutEventMock.Object);

            var aclVerbRepositoryMock = new Mock <IAclVerbRepository>();

            aclVerbRepositoryMock.Setup(v => v.GetAllAsync())
            .Returns(Task.FromResult(GetACLVerbs()));

            _rbacManager = new RBACManager(_userRepositoryMock.Object, _roleRepositoryMock.Object, aclRepositoryMock.Object,
                                           container.Resolve <IPasswordHasher>(), eventAggregatorMock.Object, aclVerbRepositoryMock.Object);
        }