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) { } }
public static RBACPrincipalCache GetInstance() { if (instance == null) { instance = new RBACPrincipalCache(); RBACManager.GetInstance().AddObserver(instance); } return(instance); }
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); } } }
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; } } }
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); }