Ejemplo n.º 1
0
 private Rule CreateRule(string description, long iid, string inputClaim, ServiceBusOperation outputClaim)
 {
     return(new Rule
     {
         Description = description,
         IssuerId = iid,
         InputClaimType = ClaimTypes.NameIdentifier,
         InputClaimValue = inputClaim,
         OutputClaimType = SERVICE_BUS_CLAIM_TYPE,
         OutputClaimValue = Enum.GetName(typeof(ServiceBusOperation), outputClaim)
     });
 }
Ejemplo n.º 2
0
        private void CreateThingInRule(Guid id, string ruleGroupName, ServiceBusOperation operation)
        {
            var thing     = _thingRepository.GetThingById(id);
            var partition = thing.Partition;
            var acsMgr    = GetAccessControlManagementService(partition.Namespace, partition.AccessControl, partition.AccessControlSecret);
            var issuerAcs = acsMgr.GetIssuerByName(ISSUER_ACCESS_CONTROL_SERVICE);
            var ruleGroup = acsMgr.RuleGroups.Where(rg => rg.Name == ruleGroupName).FirstOrDefault();
            var rule      = CreateRule(thing.Description, issuerAcs.Id, thing.Id.ToString(), operation);

            if (acsMgr.Rules.Where(r => r.RuleGroup.Name == ruleGroupName &&
                                   r.InputClaimValue == rule.InputClaimValue &&
                                   r.OutputClaimValue == rule.OutputClaimValue).FirstOrDefault() == null)
            {
                acsMgr.AddRelatedObject(ruleGroup, NAVIGATION_PROPERTY_RULES, rule);
                acsMgr.SaveChangesBatch();
            }
        }