protected void btnCreateStore_Click(object sender, EventArgs e) { IAzManStorage storage = new SqlAzManStorage(ConfigurationManager.ConnectionStrings["NetSqlAzManStorage"].ConnectionString); storage.OpenConnection(); try { storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted); IAzManStore store = storage.CreateStore("Store Created Programmatically", "store description"); for (int i = 0; i < 10; i++) { IAzManApplication app = store.CreateApplication("App " + i.ToString(), "application description"); IAzManItem prevItem = null; for (int j = 0; j < 10; j++) { IAzManItem item = app.CreateItem("Item " + j.ToString(), "item description", ItemType.Operation); if (prevItem!=null) item.AddMember(prevItem); prevItem = item; } } storage.CommitTransaction(); } catch { storage.RollBackTransaction(); throw; } finally { storage.CloseConnection(); } }
/// <summary> /// Create an Authorization Delegate /// </summary> private void AddDBUserToRole(string dbUserName, string roleName) { //Sql Storage connection string string sqlConnectionString = "data source=(local);initial catalog=NetSqlAzManStorage;user id=sa;password=password"; //Create an instance of SqlAzManStorage class using (IAzManStorage storage = new SqlAzManStorage(sqlConnectionString)) { storage.OpenConnection(); IAzManStore mystore = storage.GetStore("My Store"); //or storage["My Store"] IAzManApplication myapp = mystore.GetApplication("My Application"); IAzManItem myRole = myapp.GetItem(roleName); //Retrieve DB user identity IAzManDBUser dbUser = storage.GetDBUser(dbUserName); //Add DB "My Db User" to "My Role" role. IAzManAuthorization auth = myRole.CreateAuthorization(new SqlAzManSID(WindowsIdentity.GetCurrent().User), WhereDefined.LDAP, dbUser.CustomSid, WhereDefined.Database, AuthorizationType.Allow, null, null); //Optional: add authorization attribute //auth.CreateAttribute("attribute key", "attribute value"); storage.CloseConnection(); storage.Dispose(); } }
/// <summary> /// Handles the Click event of the btnCreateALotOfItems control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void btnCreateALotOfItems_Click(object sender, EventArgs e) { string cs = "data source=(local);initial catalog=NetSqlAzManStorage;Integrated Security=SSPI;"; IAzManStorage storage = new SqlAzManStorage(cs); storage.OpenConnection(); storage.BeginTransaction(); IAzManStore store = storage.CreateStore("Test2", String.Empty); IAzManApplication app = store.CreateApplication("Test", String.Empty); storage.ENS.AuthorizationCreated+= new AuthorizationCreatedDelegate(ens_AuthorizationCreated); //Create 1 MLN Items for (int r = 0; r < 100; r++) { IAzManItem role = app.CreateItem("Role " + r.ToString(), "", ItemType.Role); IAzManAuthorization auth = role.CreateAuthorization(new SqlAzManSID(WindowsIdentity.GetCurrent().User), WhereDefined.Local, new SqlAzManSID(WindowsIdentity.GetCurrent().User), WhereDefined.Local, AuthorizationType.Allow, null, null); Debug.WriteLine("Role "+ r.ToString()); auth.CreateAttribute("key", "value"); for (int t = 0; t < 100; t++) { IAzManItem task = app.CreateItem("Task " + t.ToString() + " of Role " + r.ToString(), "", ItemType.Task); role.AddMember(task); for (int o = 0; o < 100; o++) { IAzManItem op = app.CreateItem("Operation " + o.ToString() + " of Task " + t.ToString() + " of Role " + r.ToString() , "", ItemType.Operation); task.AddMember(op); } } } storage.CommitTransaction(); storage.CloseConnection(); }
/// <summary> /// Create a Full Storage through .NET code /// </summary> private void CreateFullStorage() { // USER MUST BE A MEMBER OF SQL DATABASE ROLE: NetSqlAzMan_Administrators //Sql Storage connection string string sqlConnectionString = "data source=(local);initial catalog=NetSqlAzManStorage;user id=netsqlazmanuser;password=password"; //Create an instance of SqlAzManStorage class IAzManStorage storage = new SqlAzManStorage(sqlConnectionString); //Open Storage Connection storage.OpenConnection(); //Begin a new Transaction storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted); //Create a new Store IAzManStore newStore = storage.CreateStore("My Store", "Store description"); //Create a new Basic StoreGroup IAzManStoreGroup newStoreGroup = newStore.CreateStoreGroup(SqlAzManSID.NewSqlAzManSid(), "My Store Group", "Store Group Description", String.Empty, GroupType.Basic); //Retrieve current user SID IAzManSid mySid = new SqlAzManSID(((System.Threading.Thread.CurrentPrincipal.Identity as WindowsIdentity) ?? WindowsIdentity.GetCurrent()).User); //Add myself as sid of "My Store Group" IAzManStoreGroupMember storeGroupMember = newStoreGroup.CreateStoreGroupMember(mySid, WhereDefined.Local, true); //Create a new Application IAzManApplication newApp = newStore.CreateApplication("New Application", "Application description"); //Create a new Role IAzManItem newRole = newApp.CreateItem("New Role", "Role description", ItemType.Role); //Create a new Task IAzManItem newTask = newApp.CreateItem("New Task", "Task description", ItemType.Task); //Create a new Operation IAzManItem newOp = newApp.CreateItem("New Operation", "Operation description", ItemType.Operation); //Add "New Operation" as a sid of "New Task" newTask.AddMember(newOp); //Add "New Task" as a sid of "New Role" newRole.AddMember(newTask); //Create an authorization for myself on "New Role" IAzManAuthorization auth = newRole.CreateAuthorization(mySid, WhereDefined.Local, mySid, WhereDefined.Local, AuthorizationType.AllowWithDelegation, null, null); //Create a custom attribute IAzManAttribute<IAzManAuthorization> attr = auth.CreateAttribute("New Key", "New Value"); //Create an authorization for DB User "Andrea" on "New Role" IAzManAuthorization auth2 = newRole.CreateAuthorization(mySid, WhereDefined.Local, storage.GetDBUser("Andrea").CustomSid, WhereDefined.Local, AuthorizationType.AllowWithDelegation, null, null); //Commit transaction storage.CommitTransaction(); //Close connection storage.CloseConnection(); }
private void btnTestNetSqlAzMan_Click(object sender, EventArgs e) { this.Clessidra(true); this.StartTimer(); int n = int.Parse(this.txtNetSqlAzManThreads.Text); int max = int.Parse(this.txtUnita.Text); this.pb.Maximum = n - 1; if (!this.chkNetSqlAzManMultiThread.Checked) { if (!this.chkCache.Checked) { for (int i = 0; i < n; i++) { this.TestSuNetSqlAzMan(this.txtNetSqlAzManConnectionString.Text, max); this.pb.Value = i; Application.DoEvents(); } } else { WindowsIdentity id = WindowsIdentity.GetCurrent(); IAzManStorage storage = new SqlAzManStorage(this.txtNetSqlAzManConnectionString.Text); storage.OpenConnection(); int rnd = new Random().Next(max); NetSqlAzMan.Cache.UserPermissionCache c = new NetSqlAzMan.Cache.UserPermissionCache(storage, "Store Stress Test", "Application" + rnd.ToString(), id, true, true); for (int i = 0; i < n; i++) { List<KeyValuePair<string, string>> attr; AuthorizationType res = c.CheckAccess("Operation" + rnd.ToString(), DateTime.Now, out attr); this.pb.Value = i; Application.DoEvents(); } storage.CloseConnection(); storage.Dispose(); } } else { Thread[] tt = new Thread[n]; //Threads Prepare for (int i = 0; i < n; i++) { tt[i] = new Thread(new ThreadStart(this.TestSuNetSqlAzManForThread)); tt[i].Start(); this.pb.Value = i; } //Threads Consume for (int i = 0; i < n; i++) { tt[i].Join(); this.pb.Value = i; } //Threads Destroy for (int i = 0; i < n; i++) { tt[i] = null; this.pb.Value = i; } } this.StopTimer(this.txtNetSqlAzManElapsed); this.Clessidra(false); }
private void TestSuNetSqlAzMan(string connectionString, int max) { WindowsIdentity id = WindowsIdentity.GetCurrent(); int rnd = new Random().Next(max); IAzManStorage storage = new SqlAzManStorage(connectionString); storage.OpenConnection(); AuthorizationType res = storage.CheckAccess("Store Stress Test", "Application" + rnd.ToString(), "Operation" + rnd.ToString(), id, DateTime.Now, true, new KeyValuePair<string, object>("chiave","valore")); //AuthorizationType res = storage.CheckAccess("Store Stress Test", "Application" + rnd.ToString(), "Operation" + rnd.ToString(), storage.GetDBUser("Andrea"), DateTime.Now, true, new KeyValuePair<string, object>("chiave", "valore")); storage.CloseConnection(); storage.Dispose(); }
private void CreaStrutturaSuNetSqlAzMan(string connectionString, int n) { this.Clessidra(true); this.StartTimer(); WindowsIdentity id = WindowsIdentity.GetCurrent(); IAzManStorage storage = new SqlAzManStorage(connectionString); storage.ENS.AuthorizationCreated += new NetSqlAzMan.ENS.AuthorizationCreatedDelegate(ENS_AuthorizationCreated); try { IAzManStore s = storage["Store Stress Test"]; if (s != null) s.Delete(); } catch { } storage.OpenConnection(); storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted); IAzManStore store = storage.CreateStore("Store Stress Test", String.Empty); this.pb.Maximum = n - 1; for (int a = 0; a < n; a++) { IAzManApplication app = store.CreateApplication("Application" + a.ToString(), String.Empty); this.pb.Value = a; Application.DoEvents(); for (int i = 0; i < n; i++) { IAzManItem role = app.CreateItem("Role" + i.ToString(), String.Empty, ItemType.Role); IAzManItem task = app.CreateItem("Task" + i.ToString(), String.Empty, ItemType.Task); IAzManItem op = app.CreateItem("Operation" + i.ToString(), String.Empty, ItemType.Operation); role.AddMember(task); task.AddMember(op); role.CreateAuthorization(new SqlAzManSID(id.User), WhereDefined.LDAP, new SqlAzManSID(id.User), WhereDefined.LDAP, AuthorizationType.Allow, null, null); //add current Windows user //role.CreateAuthorization(new SqlAzManSID(id.User), WhereDefined.LDAP, new SqlAzManSID(storage.GetDBUser("Andrea").CustomSid.BinaryValue, true), WhereDefined.Database, AuthorizationType.Allow, null, null); //add Andrea DB User } } //storage.RollBackTransaction(); storage.CommitTransaction(); storage.CloseConnection(); this.StopTimer(this.txtNetSqlAzManElapsed); this.Clessidra(false); }