Ejemplo n.º 1
0
        /// <summary>
        /// Updates an application.
        /// </summary>
        /// <param name="applicationId">The id of the application to be updated.</param>
        /// <param name="applicationInfo">The application containing the updated information.</param>
        /// <returns>Returns the updated application.</returns>
        public SecurityApplicationInfo UpdateApplication(string applicationId, SecurityApplicationInfo applicationInfo)
        {
            var id = Guid.Empty;

            if (!Guid.TryParse(applicationId, out id))
            {
                throw new ArgumentException($"{nameof(applicationId)} must be a valid GUID");
            }

            if (id != applicationInfo.Id)
            {
                throw new ArgumentException($"Cannot update application using id: {id} and {applicationInfo.Id}");
            }

            var securityRepository = ApplicationContext.Current.GetService <ISecurityRepositoryService>();

            if (securityRepository == null)
            {
                throw new InvalidOperationException($"{nameof(ISecurityRepositoryService)} not found");
            }

            applicationInfo.Application.Policies.AddRange(applicationInfo.Policies.Select(p => new SecurityPolicyInstance(p.Policy, p.Grant)));

            var updatedApplication = securityRepository.SaveApplication(applicationInfo.Application);

            return(new SecurityApplicationInfo(updatedApplication));
        }
Ejemplo n.º 2
0
 public override object Update(object data)
 {
     if (data is SecurityApplication)
     {
         data = new SecurityApplicationInfo(data as SecurityApplication);
     }
     return(base.Update(data));
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EditApplicationModel"/> class.
 /// </summary>
 /// <param name="securityApplicationInfo">The security application information.</param>
 public EditApplicationModel(SecurityApplicationInfo securityApplicationInfo) : this()
 {
     this.ApplicationName     = securityApplicationInfo.Application.Name;
     this.ApplicationPolicies = securityApplicationInfo.Policies.Select(p => new PolicyViewModel(p)).OrderBy(p => p.Name).ToList();
     this.CreationTime        = securityApplicationInfo.Application.CreationTime.DateTime;
     this.HasPolicies         = this.ApplicationPolicies.Any();
     this.Id         = securityApplicationInfo.Id.Value;
     this.Policies   = this.ApplicationPolicies.Select(p => p.Id.ToString()).ToList();
     this.IsObsolete = securityApplicationInfo.Application.ObsoletionTime != null;
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates a security application.
        /// </summary>
        /// <param name="applicationInfo">The security application to be created.</param>
        /// <returns>Returns the created security application.</returns>
        public SecurityApplicationInfo CreateApplication(SecurityApplicationInfo applicationInfo)
        {
            var securityRepositoryService = ApplicationContext.Current.GetService <ISecurityRepositoryService>();

            if (securityRepositoryService == null)
            {
                throw new InvalidOperationException($"{nameof(ISecurityRepositoryService)} not found");
            }

            applicationInfo.Application?.Policies.AddRange(applicationInfo.Policies.Select(p => new SecurityPolicyInstance(p.Policy, p.Grant)));

            var createdApplication = securityRepositoryService.CreateApplication(applicationInfo.Application);

            return(new SecurityApplicationInfo(createdApplication));
        }
        // [PolicyPermission(System.Security.Permissions.SecurityAction.Demand, PolicyId = PermissionPolicyIdentifiers.UnrestrictedMetadata)]
        public static void AddAssigningAuthority(AddAssigningAuthorityParams parms)
        {
            // First, resolve the assigner
            SecurityApplicationInfo assigner = null;

            if (!String.IsNullOrEmpty(parms.Assigner))
            {
                assigner = m_amiClient.GetApplications(o => o.Name == parms.Assigner).CollectionItem.FirstOrDefault() as SecurityApplicationInfo;
                if (assigner == null)
                {
                    throw new KeyNotFoundException("Assigner unknown");
                }
            }

            // Scope
            List <Concept> scope = new List <Concept>();

            if (parms.Scope?.Count > 0)
            {
                foreach (var s in parms.Scope)
                {
                    var scp = m_hdsiClient.Query <Concept>(o => o.Mnemonic == s, 0, 1, false).Item.OfType <Concept>().FirstOrDefault();
                    if (scp == null)
                    {
                        throw new KeyNotFoundException($"Scope {s} unknown");
                    }
                    scope.Add(scp);
                }
            }

            // Construct AA
            foreach (var domainName in parms.Authority)
            {
                var aa = new AssigningAuthority(domainName, parms.Name, parms.Oid)
                {
                    Url                  = parms.Url,
                    AuthorityScope       = scope,
                    AssigningApplication = assigner?.Entity,
                    IsUnique             = parms.Unique
                };
                aa = m_amiClient.CreateAssigningAuthority(aa);
                Console.WriteLine("CREATE AUTHORITY {0} = {1}", aa.DomainName, aa.Key);
            }
        }
Ejemplo n.º 6
0
        public override object Create(object data, bool updateIfExists)
        {
            if (data is SecurityApplication)
            {
                data = new SecurityApplicationInfo(data as SecurityApplication);
            }

            var sde = data as SecurityApplicationInfo;

            // If no policies then assign the ones from SYNCHRONIZERS
            if (sde.Policies == null || sde.Policies.Count == 0 && sde.Entity?.Policies == null || sde.Entity.Policies.Count == 0)

            {
                var role     = ApplicationServiceContext.Current.GetService <ISecurityRepositoryService>()?.GetRole("SYNCHRONIZERS");
                var policies = ApplicationServiceContext.Current.GetService <IPolicyInformationService>()?.GetPolicies(role);
                if (policies != null)
                {
                    sde.Policies = policies.Select(o => new SecurityPolicyInfo(o)).ToList();
                }
            }

            return(base.Create(data, updateIfExists));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Converts a <see cref="EditApplicationModel"/> to a <see cref="SecurityApplicationInfo"/>
        /// </summary>
        /// <param name="model">The edit device model to convert.</param>
        /// <param name="appInfo">The security application info for which to apply the changes against.</param>
        /// <returns>Returns a security device info object.</returns>
        protected SecurityApplicationInfo ToSecurityApplicationInfo(EditApplicationModel model, SecurityApplicationInfo appInfo)
        {
            appInfo.Application.Key = model.Id;
            appInfo.Id = model.Id;
            appInfo.Application.Name = model.ApplicationName;
            appInfo.Name             = model.ApplicationName;

            var policyList = this.GetNewPolicies(model.Policies.Select(Guid.Parse));

            appInfo.Policies.Clear();
            appInfo.Policies.AddRange(policyList.Select(p => new SecurityPolicyInfo(p)
            {
                Grant = PolicyGrantType.Grant
            }));

            return(appInfo);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ApplicationViewModel"/> class
 /// with a specific <see cref="SecurityApplicationInfo"/> instance.
 /// </summary>
 /// <param name="securityApplicationInfo">The <see cref="SecurityApplicationInfo"/> instance.</param>
 public ApplicationViewModel(SecurityApplicationInfo securityApplicationInfo) : base(securityApplicationInfo)
 {
     this.ApplicationName = securityApplicationInfo.Name;
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Updates an application.
 /// </summary>
 /// <param name="applicationId">The id of the application to be updated.</param>
 /// <param name="applicationInfo">The application containing the updated information.</param>
 /// <returns>Returns the updated application.</returns>
 public SecurityApplicationInfo UpdateApplication(Guid applicationId, SecurityApplicationInfo applicationInfo)
 {
     return(this.Client.Put <SecurityApplicationInfo, SecurityApplicationInfo>($"SecurityApplication/{applicationId}", applicationInfo));
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Creates a security application.
 /// </summary>
 /// <param name="applicationInfo">The security application to be created.</param>
 /// <returns>Returns the created security application.</returns>
 public SecurityApplicationInfo CreateApplication(SecurityApplicationInfo applicationInfo)
 {
     return(this.Client.Post <SecurityApplicationInfo, SecurityApplicationInfo>("SecurityApplication", applicationInfo));
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Updates an application.
 /// </summary>
 /// <param name="applicationId">The id of the application to be updated.</param>
 /// <param name="applicationInfo">The application containing the updated information.</param>
 /// <returns>Returns the updated application.</returns>
 public SecurityApplicationInfo UpdateApplication(string applicationId, SecurityApplicationInfo applicationInfo)
 {
     return(this.Client.Put <SecurityApplicationInfo, SecurityApplicationInfo>($"application/{applicationId}", this.Client.Accept, applicationInfo));
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SecurityViewModel"/> class
 /// with a specific <see cref="SecurityApplicationInfo"/> instance.
 /// </summary>
 /// <param name="securityApplicationInfo">The <see cref="SecurityApplicationInfo"/> instance.</param>
 protected SecurityViewModel(SecurityApplicationInfo securityApplicationInfo) : this(securityApplicationInfo.Application, securityApplicationInfo.Policies)
 {
 }