/// <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 CreateResourceCategory(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(CreateXacmlJsonAttribute(AltinnXacmlUrns.PartyId, instanceOwnerPartyId, DefaultType, DefaultIssuer, includeResult)); } if (!string.IsNullOrWhiteSpace(instanceGuid) && !string.IsNullOrWhiteSpace(instanceOwnerPartyId)) { resourceCategory.Attribute.Add(CreateXacmlJsonAttribute(AltinnXacmlUrns.InstanceId, instanceOwnerPartyId + "/" + instanceGuid, DefaultType, DefaultIssuer, includeResult)); } if (!string.IsNullOrWhiteSpace(org)) { resourceCategory.Attribute.Add(CreateXacmlJsonAttribute(AltinnXacmlUrns.OrgId, org, DefaultType, DefaultIssuer)); } if (!string.IsNullOrWhiteSpace(app)) { resourceCategory.Attribute.Add(CreateXacmlJsonAttribute(AltinnXacmlUrns.AppId, app, DefaultType, DefaultIssuer)); } return(resourceCategory); }
private static void AssertEqual(XacmlJsonCategory expected, XacmlJsonCategory actual) { Assert.Equal(expected.CategoryId, actual.CategoryId); Assert.Equal(expected.Content, actual.Content); Assert.Equal(expected.Id, actual.Id); AssertEqual(expected.Attribute, actual.Attribute); }
public static XacmlJsonCategory CreateSubjectCategory(IEnumerable <Claim> claims) { XacmlJsonCategory subjectAttributes = new XacmlJsonCategory(); subjectAttributes.Attribute = CreateSubjectAttributes(claims); return(subjectAttributes); }
public static XacmlJsonCategory CreateActionCategory(string actionType, bool includeResult = false) { XacmlJsonCategory actionAttributes = new XacmlJsonCategory(); actionAttributes.Attribute = new List <XacmlJsonAttribute>(); actionAttributes.Attribute.Add(CreateXacmlJsonAttribute(MatchAttributeIdentifiers.ActionId, actionType, DefaultType, DefaultIssuer, includeResult)); return(actionAttributes); }
private static XacmlJsonCategory CreateMultipleSubjectCategory(IEnumerable <Claim> claims) { XacmlJsonCategory subjectAttributes = DecisionHelper.CreateSubjectCategory(claims); subjectAttributes.Id = SubjectId + "1"; return(subjectAttributes); }
private static XacmlJsonCategory CreateActionCategory(string actionType) { XacmlJsonCategory actionAttributes = new XacmlJsonCategory(); actionAttributes.Attribute = new List <XacmlJsonAttribute>(); actionAttributes.Attribute.Add(CreateXacmlJsonAttribute(MatchAttributeIdentifiers.ActionId, actionType, DefaultType, DefaultIssuer)); return(actionAttributes); }
private static XacmlJsonCategory CreateSubjectCategory(string consumer) { XacmlJsonCategory subjectAttributes = new XacmlJsonCategory(); subjectAttributes.Attribute = CreateSubjectAttributes(consumer); return(subjectAttributes); }
private static XacmlJsonCategory CreateActionCategory(string actionType, bool includeResult = false) { XacmlJsonCategory actionAttributes = new XacmlJsonCategory { Attribute = new List <XacmlJsonAttribute> { DecisionHelper.CreateXacmlJsonAttribute(MatchAttributeIdentifiers.ActionId, actionType, DefaultType, DefaultIssuer, includeResult) } }; return(actionAttributes); }
private static XacmlJsonCategory CreateSubjectCategory(IEnumerable <Claim> claims) { XacmlJsonCategory subjectAttributes = new XacmlJsonCategory(); subjectAttributes.Attribute = new List <XacmlJsonAttribute>(); // Mapping all claims on user to attributes foreach (Claim claim in claims) { if (IsValidUrn(claim.Type)) { subjectAttributes.Attribute.Add(CreateXacmlJsonAttribute(claim.Type, claim.Value, claim.ValueType, claim.Issuer)); } } return(subjectAttributes); }
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> ConvertAttributes(ICollection <XacmlContextAttributes> attributes) { if (attributes == null || attributes.Count == 0) { return(null); } List <XacmlJsonCategory> categories = new List <XacmlJsonCategory>(); foreach (XacmlContextAttributes contextAttributes in attributes) { XacmlJsonCategory category = new XacmlJsonCategory(); category.CategoryId = contextAttributes.Category.OriginalString; category.Id = contextAttributes.Id; category.Attribute = ConvertAttribute(contextAttributes.Attributes); categories.Add(category); } return(categories); }
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 XacmlJsonCategory CreateResourceCategory(string org, string app, string instanceOwnerPartyId, string instanceGuid) { XacmlJsonCategory resourceAttributes = new XacmlJsonCategory(); resourceAttributes.Attribute = new List <XacmlJsonAttribute>(); if (string.IsNullOrWhiteSpace(instanceOwnerPartyId)) { resourceAttributes.Attribute.Add(CreateXacmlJsonAttribute(XacmlInstanceId, instanceGuid, DefaultType, DefaultIssuer)); } else if (string.IsNullOrWhiteSpace(instanceGuid)) { resourceAttributes.Attribute.Add(CreateXacmlJsonAttribute(XacmlResourcePartyId, instanceOwnerPartyId, DefaultType, DefaultIssuer)); } else { resourceAttributes.Attribute.Add(CreateXacmlJsonAttribute(XacmlInstanceId, instanceOwnerPartyId + "/" + instanceGuid, DefaultType, DefaultIssuer)); } resourceAttributes.Attribute.Add(CreateXacmlJsonAttribute(XacmlResourceOrgId, org, DefaultType, DefaultIssuer)); resourceAttributes.Attribute.Add(CreateXacmlJsonAttribute(XacmlResourceAppId, app, DefaultType, DefaultIssuer)); return(resourceAttributes); }