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; } } }