コード例 #1
0
 public SecurityStore(ISecurityEngine engine)
 {
     Engine             = engine;
     SecurityIdentities = new SecurityCollection <ISecurityIdentity>().RegisterCollectionNotifyChanged(SecurityIdentitiesChanged);
     SecurityItems      = new SecurityCollection <ISecurityItem>().RegisterCollectionNotifyChanged(SecurityItemsChanged);
     Authorizations     = new SecurityCollection <IAuthorization>().RegisterCollectionNotifyChanged(AuthorizationsChanged);
 }
コード例 #2
0
        public void Operation_Deny_Direct_To_User()
        {
            EngineFactory   factory    = new EngineFactory();
            ISecurityEngine engine     = factory.CreateEngine();
            ISecurityItem   operation1 = engine.Store.AddSecurityItem().AddBagItem(Name, "Operation1");
            ISecurityItem   operation2 = engine.Store.AddSecurityItem().AddBagItem(Name, "Operation2");
            ISecurityItem   task       = engine.Store.AddSecurityItem().AddBagItem(Name, "Task");

            task.Children.Add(operation1);
            task.Children.Add(operation2);
            ISecurityItem     hasNoAccessFromUserOperation = engine.Store.AddSecurityItem().AddBagItem(Name, "HasNoAccessFromUserOperation");
            ISecurityIdentity user = engine.Store.AddSecurityIdentity().AddBagItem(Name, "user");

            engine.Store.AccessAuthorize(user, task);
            engine.Store.AccessAuthorize(user, operation1).Deny();

            ICheckAccessResult operation1AccessResult = engine.CheckAccess(user, operation1);
            ICheckAccessResult operation2AccessResult = engine.CheckAccess(user, operation2);
            ICheckAccessResult taskAccessResult       = engine.CheckAccess(user, task);
            ICheckAccessResult hasNoAccessFromUserOperationAccessResult = engine.CheckAccess(user, hasNoAccessFromUserOperation);


            Assert.False(operation1AccessResult.HasAccess());
            Assert.True(operation2AccessResult.HasAccess());
            Assert.True(taskAccessResult.HasAccess());
            Assert.False(hasNoAccessFromUserOperationAccessResult.HasAccess());
        }
コード例 #3
0
        public void Add_SecurityIdentity()
        {
            EngineFactory       factory         = new EngineFactory();
            ISecurityEngine     engine          = factory.CreateEngine();
            TestSecurityStorage securityStorage = new TestSecurityStorage();

            engine.Store.AttachToStorage(securityStorage);

            engine.Store.AddSecurityIdentity("6B46E638-69B6-4C2B-A1D6-6B3A514FBFDE");

            Assert.Contains("6B46E638-69B6-4C2B-A1D6-6B3A514FBFDE", securityStorage.StorageEntities.Keys);
        }
コード例 #4
0
        public void Add_SecurityItem()
        {
            EngineFactory       factory         = new EngineFactory();
            ISecurityEngine     engine          = factory.CreateEngine();
            TestSecurityStorage securityStorage = new TestSecurityStorage();

            engine.Store.AttachToStorage(securityStorage);

            engine.Store.AddSecurityItem("BD4335A8-D067-429F-B2EE-70DD5E3C214B");

            Assert.Contains("BD4335A8-D067-429F-B2EE-70DD5E3C214B", securityStorage.StorageEntities.Keys);
        }
コード例 #5
0
        public void Add_SecurityIdentity_Bag()
        {
            EngineFactory       factory         = new EngineFactory();
            ISecurityEngine     engine          = factory.CreateEngine();
            TestSecurityStorage securityStorage = new TestSecurityStorage();

            engine.Store.AttachToStorage(securityStorage);

            ISecurityIdentity securityIdentity = engine.Store.AddSecurityIdentity("AC2ECB1E-AFE1-46EA-B9A7-F1593E2C92C6");

            securityIdentity.Bag["Name"] = "Test";
            Assert.Contains("AC2ECB1E-AFE1-46EA-B9A7-F1593E2C92C6", securityStorage.StorageEntities.Keys);
        }
コード例 #6
0
        public void Add_SecurityItem_Bag()
        {
            EngineFactory       factory         = new EngineFactory();
            ISecurityEngine     engine          = factory.CreateEngine();
            TestSecurityStorage securityStorage = new TestSecurityStorage();

            engine.Store.AttachToStorage(securityStorage);

            ISecurityItem securityItem = engine.Store.AddSecurityItem("07325155-574E-4D89-B680-C0F1B90569E5");

            securityItem.Bag["Name"] = "Test";
            Assert.Contains("07325155-574E-4D89-B680-C0F1B90569E5_Name", securityStorage.StorageEntities.Keys);
        }
コード例 #7
0
        public void Add_SecurityIdentity_Relation()
        {
            EngineFactory       factory         = new EngineFactory();
            ISecurityEngine     engine          = factory.CreateEngine();
            TestSecurityStorage securityStorage = new TestSecurityStorage();

            engine.Store.AttachToStorage(securityStorage);

            ISecurityIdentity parentSecurityIdentity = engine.Store.AddSecurityIdentity("77A018B1-EC20-41F1-951D-549193486D4B");
            ISecurityIdentity childSecurityIdentity  = engine.Store.AddSecurityIdentity("4B64042A-B5DE-4BDF-8A5D-60112F65275B");

            parentSecurityIdentity.Children.Add(childSecurityIdentity);

            Assert.Contains("77A018B1-EC20-41F1-951D-549193486D4B_4B64042A-B5DE-4BDF-8A5D-60112F65275B", securityStorage.StorageEntities.Keys);
        }
コード例 #8
0
        public void Add_SecurityItem_Relation()
        {
            EngineFactory       factory         = new EngineFactory();
            ISecurityEngine     engine          = factory.CreateEngine();
            TestSecurityStorage securityStorage = new TestSecurityStorage();

            engine.Store.AttachToStorage(securityStorage);

            ISecurityItem parentSecurityItem = engine.Store.AddSecurityItem("3F028123-7EDA-42F7-80B9-09A9DE954047");
            ISecurityItem childSecurityItem  = engine.Store.AddSecurityItem("13F1C233-90DC-4904-9EAA-C1A912D2B0A7");

            parentSecurityItem.Children.Add(childSecurityItem);

            Assert.Contains("3F028123-7EDA-42F7-80B9-09A9DE954047_13F1C233-90DC-4904-9EAA-C1A912D2B0A7", securityStorage.StorageEntities.Keys);
        }
コード例 #9
0
        public void Operation_Access_Operation_Direct_To_User()
        {
            EngineFactory     factory   = new EngineFactory();
            ISecurityEngine   engine    = factory.CreateEngine();
            ISecurityItem     operation = engine.Store.AddSecurityItem().AddBagItem(Name, "Operation");
            ISecurityItem     hasNoAccessFromUserOperation = engine.Store.AddSecurityItem().AddBagItem(Name, "HasNoAccessFromUserOperation");
            ISecurityIdentity user = engine.Store.AddSecurityIdentity().AddBagItem(Name, "user");

            engine.Store.AccessAuthorize(user, operation);

            ICheckAccessResult operationAccessResult = engine.CheckAccess(user, operation);
            ICheckAccessResult hasNoAccessFromUserOperationAccessResult = engine.CheckAccess(user, hasNoAccessFromUserOperation);


            Assert.True(operationAccessResult.HasAccess());
            Assert.False(hasNoAccessFromUserOperationAccessResult.HasAccess());
        }
コード例 #10
0
        public void Add_SecurityItem()
        {
            EngineFactory   factory     = new EngineFactory();
            ISecurityEngine firstEngine = factory.CreateEngine();

            using (StorageProvider storageProvider = GetStorageProvider())
            {
                firstEngine.Store.AttachToStorage(storageProvider.Storage);
                ISecurityItem addSecurityItem = firstEngine.Store.AddSecurityItem();
            }
            ISecurityEngine secondEngine = factory.CreateEngine();

            using (StorageProvider storageProvider = GetStorageProvider())
            {
                secondEngine.Store.AttachToStorage(storageProvider.Storage);
            }
        }
コード例 #11
0
        public void Engine_Instantiate()
        {
            EngineFactory   factory    = new EngineFactory();
            ISecurityEngine engine     = factory.CreateEngine();
            ISecurityItem   operation1 = engine.Store.AddSecurityItem().AddBagItem(Name, "Operation1");
            ISecurityItem   operation2 = engine.Store.AddSecurityItem().AddBagItem(Name, "Operation2");
            ISecurityItem   task       = engine.Store.AddSecurityItem().AddBagItem(Name, "Task");

            task.Children.Add(operation1);
            task.Children.Add(operation2);
            ISecurityIdentity user1 = engine.Store.AddSecurityIdentity().AddBagItem(Name, "user1");
            ISecurityIdentity user2 = engine.Store.AddSecurityIdentity().AddBagItem(Name, "user2");
            ISecurityIdentity group = engine.Store.AddSecurityIdentity().AddBagItem(Name, "group");

            group.Children.Add(user1);
            group.Children.Add(user2);
            IAccessAuthorization user1ToOperationAccessAuthorization = engine.Store.AccessAuthorize(user1, operation1);
        }
コード例 #12
0
        public void Operation_Access_To_Group()
        {
            EngineFactory     factory    = new EngineFactory();
            ISecurityEngine   engine     = factory.CreateEngine();
            ISecurityItem     operation  = engine.Store.AddSecurityItem().AddBagItem(Name, "Operation");
            ISecurityIdentity user1      = engine.Store.AddSecurityIdentity().AddBagItem(Name, "user1");
            ISecurityIdentity user2      = engine.Store.AddSecurityIdentity().AddBagItem(Name, "user2");
            ISecurityIdentity adminGroup = engine.Store.AddSecurityIdentity().AddBagItem(Name, "adminGroup");

            adminGroup.Children.Add(user1);
            engine.Store.AccessAuthorize(adminGroup, operation);


            ICheckAccessResult user1AccessResult = engine.CheckAccess(user1, operation);
            ICheckAccessResult user2AccessResult = engine.CheckAccess(user2, operation);

            Assert.True(user1AccessResult.HasAccess());
            Assert.False(user2AccessResult.HasAccess());
        }