/// <summary> /// Replaces Resource attributes with data from instance. Add all relevant values so PDP have it all /// </summary> /// <param name="jsonRequest">The JSON Request</param> /// <param name="instance">The instance</param> public static void EnrichXacmlJsonRequest(XacmlJsonRequestRoot jsonRequest, Instance instance) { XacmlJsonCategory resourceCategory = new XacmlJsonCategory { Attribute = new List <XacmlJsonAttribute>() }; string instanceId = instance.Id; string task = instance.Process?.CurrentTask?.ElementId; string instanceOwnerPartyId = instance.InstanceOwner.PartyId; string org = instance.Org; string app = instance.AppId.Split("/")[1]; if (task != null) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(XacmlResourceTaskId, task, DefaultType, DefaultIssuer)); } else if (instance.Process?.EndEvent != null) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(XacmlResourceEndId, instance.Process.EndEvent, DefaultType, DefaultIssuer)); } if (!string.IsNullOrWhiteSpace(instanceId)) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.InstanceId, instanceId, DefaultType, DefaultIssuer, true)); } resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.PartyId, instanceOwnerPartyId, DefaultType, DefaultIssuer)); resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.OrgId, org, DefaultType, DefaultIssuer)); resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.AppId, app, DefaultType, DefaultIssuer)); // Replaces the current Resource attributes jsonRequest.Request.Resource = new List <XacmlJsonCategory> { resourceCategory }; }
private static XacmlJsonCategory CreateEventsResourceCategory(string org, string app, string instanceOwnerPartyId, string instanceGuid, bool includeResult = false) { XacmlJsonCategory resourceCategory = new XacmlJsonCategory(); resourceCategory.Attribute = new List <XacmlJsonAttribute>(); if (!string.IsNullOrWhiteSpace(instanceOwnerPartyId)) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.PartyId, instanceOwnerPartyId, DefaultType, DefaultIssuer, includeResult)); } if (!string.IsNullOrWhiteSpace(instanceGuid) && !string.IsNullOrWhiteSpace(instanceOwnerPartyId)) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.InstanceId, instanceOwnerPartyId + "/" + instanceGuid, DefaultType, DefaultIssuer, includeResult)); } if (!string.IsNullOrWhiteSpace(org)) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.OrgId, org, DefaultType, DefaultIssuer)); } if (!string.IsNullOrWhiteSpace(app)) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.AppId, app, DefaultType, DefaultIssuer)); } resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.AppResource, "events", DefaultType, DefaultIssuer)); return(resourceCategory); }
private static XacmlJsonCategory CreateActionCategory(string actionType, bool includeResult = false) { XacmlJsonCategory actionAttributes = new XacmlJsonCategory(); actionAttributes.Attribute = new List <XacmlJsonAttribute>(); actionAttributes.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(MatchAttributeIdentifiers.ActionId, actionType, DefaultType, DefaultIssuer, includeResult)); return(actionAttributes); }
private static List <XacmlJsonCategory> CreateMultipleResourceCategory(List <CloudEvent> events) { List <XacmlJsonCategory> resourcesCategories = new List <XacmlJsonCategory>(); int counter = 1; foreach (CloudEvent cloudEvent in events) { XacmlJsonCategory resourceCategory = new XacmlJsonCategory { Attribute = new List <XacmlJsonAttribute>() }; Uri source = cloudEvent.Source; string path = source.PathAndQuery; string[] paths = path.Split("/"); if (paths.Length == 6) { // This is the scenario for events related to a given instance string instanceId = paths[4] + "/" + paths[5]; string instanceOwnerPartyId = cloudEvent.Subject.Split("/")[2]; string org = paths[1]; string app = paths[2]; string eventId = cloudEvent.Id; if (!string.IsNullOrWhiteSpace(instanceId)) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.InstanceId, instanceId, DefaultType, DefaultIssuer, true)); } resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.AppResource, "events", DefaultType, DefaultIssuer)); resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.EventId, eventId, DefaultType, DefaultIssuer, true)); resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.PartyId, instanceOwnerPartyId, DefaultType, DefaultIssuer)); resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.OrgId, org, DefaultType, DefaultIssuer)); resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.AppId, app, DefaultType, DefaultIssuer)); resourceCategory.Id = ResourceId + counter.ToString(); resourcesCategories.Add(resourceCategory); counter++; } } return(resourcesCategories); }
private static List <XacmlJsonCategory> CreateMultipleResourceCategory(List <Instance> instances) { List <XacmlJsonCategory> resourcesCategories = new List <XacmlJsonCategory>(); int counter = 1; foreach (Instance instance in instances) { XacmlJsonCategory resourceCategory = new XacmlJsonCategory { Attribute = new List <XacmlJsonAttribute>() }; string instanceId = instance.Id.Split("/")[1]; string task = instance.Process?.CurrentTask?.ElementId; string instanceOwnerPartyId = instance.InstanceOwner.PartyId; string org = instance.Org; string app = instance.AppId.Split("/")[1]; if (task != null) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(XacmlResourceTaskId, task, DefaultType, DefaultIssuer)); } else if (instance.Process?.EndEvent != null) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(XacmlResourceEndId, instance.Process.EndEvent, DefaultType, DefaultIssuer)); } if (!string.IsNullOrWhiteSpace(instanceId)) { resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.InstanceId, instanceOwnerPartyId + "/" + instanceId, DefaultType, DefaultIssuer, true)); } resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.PartyId, instanceOwnerPartyId, DefaultType, DefaultIssuer)); resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.OrgId, org, DefaultType, DefaultIssuer)); resourceCategory.Attribute.Add(DecisionHelper.CreateXacmlJsonAttribute(AltinnXacmlUrns.AppId, app, DefaultType, DefaultIssuer)); resourceCategory.Id = ResourceId + counter.ToString(); resourcesCategories.Add(resourceCategory); counter++; } return(resourcesCategories); }
private static List <XacmlJsonAttribute> CreateSubjectAttributes(string consumer) { List <XacmlJsonAttribute> attributes = new List <XacmlJsonAttribute>(); if (consumer.StartsWith(UserPrefix)) { string value = consumer.Replace(UserPrefix, string.Empty); attributes.Add(DecisionHelper.CreateXacmlJsonAttribute(ClaimUserId, value, ClaimValueTypes.String, DefaultIssuer)); } else if (consumer.StartsWith(OrgPrefix)) { string value = consumer.Replace(OrgPrefix, string.Empty); attributes.Add(DecisionHelper.CreateXacmlJsonAttribute(ClaimOrg, value, ClaimValueTypes.String, DefaultIssuer)); } else if (consumer.StartsWith(PartyPrefix)) { string value = consumer.Replace(PartyPrefix, string.Empty); attributes.Add(DecisionHelper.CreateXacmlJsonAttribute(ClaimPartyID, value, ClaimValueTypes.Integer32, DefaultIssuer)); } return(attributes); }