public override void AwakeFromNib()
        {
            base.AwakeFromNib();
            if (ExternalIdentityProviderDto.NameIDFormats == null)
            {
                ExternalIdentityProviderDto.NameIDFormats = new List <string> ();
            }

            if (ExternalIdentityProviderDto.SubjectFormats == null)
            {
                ExternalIdentityProviderDto.SubjectFormats = new Dictionary <string, string> ();
            }
            if (ExternalIdentityProviderDto.SsoServices == null)
            {
                ExternalIdentityProviderDto.SsoServices = new List <ServiceEndpointDto> ();
            }
            if (ExternalIdentityProviderDto.SloServices == null)
            {
                ExternalIdentityProviderDto.SloServices = new List <ServiceEndpointDto> ();
            }
            if (ExternalIdentityProviderDto.SigningCertificates == null)
            {
                ExternalIdentityProviderDto.SigningCertificates = new CertificateChainDto {
                    Certificates = new List <CertificateDto>()
                }
            }
            ;
            TxtEntityName.StringValue = (NSString)(string.IsNullOrEmpty(ExternalIdentityProviderDto.EntityID) ? string.Empty : ExternalIdentityProviderDto.EntityID);
            TxtAlias.StringValue      = (NSString)(string.IsNullOrEmpty(ExternalIdentityProviderDto.Alias) ? string.Empty : ExternalIdentityProviderDto.Alias);
            BtnJit.StringValue        = ExternalIdentityProviderDto.JitEnabled ? "1" : "0";
            ReloadTableView(NameFormatTableView, ExternalIdentityProviderDto.NameIDFormats);
            ReloadTableView(SubjectFormatTableView, ExternalIdentityProviderDto.SubjectFormats);
            ReloadCertificates();
            InitializeSsoServices();
            InitializeSloServices();

            BtnViewCertificate.Activated += (object sender, EventArgs e) =>
            {
                if (CertificateTableView.SelectedRows.Count > 0)
                {
                    var row         = CertificateTableView.SelectedRows.First();
                    var encoded     = ExternalIdentityProviderDto.SigningCertificates.Certificates[(int)row].Encoded;
                    var bytes       = System.Text.Encoding.ASCII.GetBytes(encoded);
                    var certificate = new X509Certificate2(bytes);
                    CertificateService.DisplayX509Certificate2(this, certificate);
                }
            };
        }
 public override void AwakeFromNib()
 {
     base.AwakeFromNib();
     ChkActive.StringValue         = CertificateDto.IsSigner ? "1" : "0";
     BtnViewCertificate.Activated += (object sender, EventArgs e) =>
     {
         CertificateService.DisplayX509Certificate2(this, _certificate);
     };
     ActionHelper.Execute(delegate() {
         _certificate             = new X509Certificate2(Encoding.ASCII.GetBytes(CertificateDto.Encoded));
         TxtIssuer.StringValue    = _certificate.Issuer;
         TxtValidFrom.StringValue = _certificate.NotBefore.ToShortDateString();
         TxtValidTo.StringValue   = _certificate.NotAfter.ToShortDateString();
         TxtDn.StringValue        = _certificate.IssuerName.Format(true);
     });
 }
Exemple #3
0
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();
            SolutionUserDto            = SolutionUserDtoOriginal.DeepCopy();
            TxtName.StringValue        = SolutionUserDto.Name;
            TxtDescription.StringValue = string.IsNullOrEmpty(SolutionUserDto.Description)?string.Empty:SolutionUserDto.Description;
            cbDisabled.StringValue     = SolutionUserDto.Disabled ? "0" : "1";
            _certificate = new X509Certificate2(Encoding.ASCII.GetBytes(SolutionUserDto.Certificate.Encoded));
            ActionHelper.Execute(delegate() {
                TxtIssuer.StringValue    = _certificate.Issuer;
                TxtValidFrom.StringValue = _certificate.NotBefore.ToShortDateString();
                TxtValidTo.StringValue   = _certificate.NotAfter.ToShortDateString();
                TxtDn.StringValue        = _certificate.IssuerName.Format(true);
            });

            //Events
            this.BtnSave.Activated += OnClickSaveButton;

            this.BtnChangeCertificate.Activated += (object sender, EventArgs e) => {
                var openPanel = new NSOpenPanel();
                openPanel.ReleasedWhenClosed = true;
                openPanel.Prompt             = "Select file";

                var result = openPanel.RunModal();
                if (result == 1)
                {
                    var filePath = openPanel.Url.AbsoluteString.Replace("file://", string.Empty);
                    var cert1    = new X509Certificate2();
                    ActionHelper.Execute(delegate() {
                        cert1.Import(filePath);
                        TxtIssuer.StringValue    = cert1.Issuer;
                        TxtValidFrom.StringValue = cert1.NotBefore.ToShortDateString();
                        TxtValidTo.StringValue   = cert1.NotAfter.ToShortDateString();
                        TxtDn.StringValue        = cert1.IssuerName.Format(true);
                        _certificate             = cert1;
                    });
                    SolutionUserDto.Certificate.Encoded = _certificate.ToPem();
                }
            };

            BtnViewCertificate.Activated += (object sender, EventArgs e) =>
            {
                CertificateService.DisplayX509Certificate2(this, _certificate);
            };

            BtnSave.Hidden = !IsSystemDomain;
        }
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();
            RelyingPartyDto       = RelyingPartyDtoOriginal.DeepCopy();
            TxtRpName.StringValue = string.IsNullOrEmpty(RelyingPartyDto.Name) ? string.Empty :
                                    RelyingPartyDto.Name.Length > 10 ? RelyingPartyDto.Name.Substring(0, 10) + "..." :
                                    RelyingPartyDto.Name;
            TxtUrl.StringValue         = string.IsNullOrEmpty(RelyingPartyDto.Url) ? string.Empty : RelyingPartyDto.Url;
            TxtCertificate.StringValue = "Certificate";
            _certificate = new X509Certificate2(Encoding.ASCII.GetBytes(RelyingPartyDtoOriginal.Certificate.Encoded));
            this.BtnAddSignAlgo.Activated         += OnAddSignatureAlgorithm;
            this.BtnAddAssertServices.Activated   += OnAddAssertServices;
            this.BtnAddAttributeService.Activated += OnAddAttributeServices;
            this.BtnAddSloService.Activated       += OnAddSloServices;

            this.BtnRemoveSignAlgo.Activated         += OnRemoveSignatureAlgorithm;
            this.BtnRemoveAssertService.Activated    += OnRemoveAssertServices;
            this.BtnRemoveAttributeService.Activated += OnRemoveAttributeServices;
            this.BtnRemoveSloService.Activated       += OnRemoveSloServices;

            this.SignAlgorithmTableView.DoubleClick += OnSignatureAlgorithmUpdate;
            this.SloServicesTableView.DoubleClick   += OnSloUpdate;
            this.AttributeTableView.DoubleClick     += OnAttributeUpdate;
            this.AssertTableView.DoubleClick        += OnAssertUpdate;

            this.BtnApply.Activated             += OnClickSaveButton;
            this.BtnBrowseCertificate.Activated += OnBrowseCertificate;
            this.BtnViewCertificate.Activated   += (object sender, EventArgs e) =>
            {
                ActionHelper.Execute(delegate() {
                    var cert = new X509Certificate2(Encoding.ASCII.GetBytes(RelyingPartyDtoOriginal.Certificate.Encoded));
                    CertificateService.DisplayX509Certificate2(this, cert);
                });
            };

            InitializeSignatureAlgorithm();
            InitializeAssertionConsumerServices();
            InitializeAttributeConsumerServices();
            InitializeSloServices();
        }
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();
            if (ExternalIdentityProviderDto.NameIDFormats == null)
            {
                ExternalIdentityProviderDto.NameIDFormats = new List <string> ();
            }

            if (ExternalIdentityProviderDto.SubjectFormats == null)
            {
                ExternalIdentityProviderDto.SubjectFormats = new Dictionary <string, string> ();
            }
            if (ExternalIdentityProviderDto.SsoServices == null)
            {
                ExternalIdentityProviderDto.SsoServices = new List <ServiceEndpointDto> ();
            }
            if (ExternalIdentityProviderDto.SloServices == null)
            {
                ExternalIdentityProviderDto.SloServices = new List <ServiceEndpointDto> ();
            }
            if (ExternalIdentityProviderDto.SigningCertificates == null)
            {
                ExternalIdentityProviderDto.SigningCertificates = new CertificateChainDto {
                    Certificates = new List <CertificateDto>()
                }
            }
            ;
            TxtEntityName.StringValue = (NSString)(string.IsNullOrEmpty(ExternalIdentityProviderDto.EntityID) ? string.Empty : ExternalIdentityProviderDto.EntityID);
            TxtAlias.StringValue      = (NSString)(string.IsNullOrEmpty(ExternalIdentityProviderDto.Alias) ? string.Empty : ExternalIdentityProviderDto.Alias);
            BtnJit.StringValue        = ExternalIdentityProviderDto.JitEnabled ? "1" : "0";
            ReloadTableView(NameFormatTableView, ExternalIdentityProviderDto.NameIDFormats);
            ReloadTableView(SubjectFormatTableView, ExternalIdentityProviderDto.SubjectFormats);
            ReloadCertificates();
            InitializeSsoServices();
            InitializeSloServices();

            BtnViewCertificate.Activated += (object sender, EventArgs e) =>
            {
                if (CertificateTableView.SelectedRows.Count > 0)
                {
                    var row         = CertificateTableView.SelectedRows.First();
                    var encoded     = ExternalIdentityProviderDto.SigningCertificates.Certificates[(int)row].Encoded;
                    var bytes       = System.Text.Encoding.ASCII.GetBytes(encoded);
                    var certificate = new X509Certificate2(bytes);
                    CertificateService.DisplayX509Certificate2(this, certificate);
                }
            };

            EditButton.Activated += (object sender, EventArgs e) => {
                ActionHelper.Execute(delegate() {
                    var form = new AddNewExternalIdentityProviderController
                    {
                        ServerDto  = ServerDto,
                        TenantName = TenantName,
                        ExternalIdentityProviderDto = ExternalIdentityProviderDto
                    };
                    var result = NSApplication.SharedApplication.RunModalForWindow(form.Window);
                    if (result == VMIdentityConstants.DIALOGOK)
                    {
                        if (form.ExternalIdentityProviderDto != null)
                        {
                            UIErrorHelper.ShowAlert("External IDP " + form.ExternalIdentityProviderDto.EntityID + " updated successfully", "Information");
                            Refresh(sender, e);
                        }
                    }
                });
            };
        }
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();
            ExternalIdentityProviderDto = new ExternalIdentityProviderDto()
            {
                NameIDFormats       = new List <string>(),
                SubjectFormats      = new Dictionary <string, string>(),
                SsoServices         = new List <ServiceEndpointDto>(),
                SloServices         = new List <ServiceEndpointDto>(),
                SigningCertificates = new CertificateChainDto {
                    Certificates = new List <CertificateDto>()
                }
            };

            // Name Id formats
            BtnAddNameIdFormat.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtNameIdFormat.StringValue))
                {
                    UIErrorHelper.ShowAlert("Name Id format cannot be empty", "Alert");
                    return;
                }
                ExternalIdentityProviderDto.NameIDFormats.Add(TxtNameIdFormat.StringValue);
                ReloadTableView(LstNameIdFormat, ExternalIdentityProviderDto.NameIDFormats);
                TxtNameIdFormat.StringValue = (NSString)string.Empty;
            };

            BtnRemoveNameIdFormat.Activated += (object sender, EventArgs e) => {
                if (LstNameIdFormat.SelectedRows.Count > 0)
                {
                    foreach (var row in LstNameIdFormat.SelectedRows)
                    {
                        ExternalIdentityProviderDto.NameIDFormats.RemoveAt((int)row);
                    }
                    ReloadTableView(LstNameIdFormat, ExternalIdentityProviderDto.NameIDFormats);
                }
            };
            ReloadTableView(LstNameIdFormat, ExternalIdentityProviderDto.NameIDFormats);

            // Subject formats
            BtnAddSubjectFormat.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtSubjectFormatName.StringValue))
                {
                    UIErrorHelper.ShowAlert("Subject format name cannot be empty", "Alert");
                    return;
                }
                if (string.IsNullOrEmpty(TxtSubjectFormatValue.StringValue))
                {
                    UIErrorHelper.ShowAlert("Subject format value cannot be empty", "Alert");
                    return;
                }
                if (ExternalIdentityProviderDto.SubjectFormats.ContainsKey(TxtSubjectFormatName.StringValue))
                {
                    UIErrorHelper.ShowAlert("Subject format name already exists", "Alert");
                    return;
                }
                ExternalIdentityProviderDto.SubjectFormats.Add(TxtSubjectFormatName.StringValue, TxtSubjectFormatValue.StringValue);
                ReloadTableView(LstSubjectFormat, ExternalIdentityProviderDto.SubjectFormats);
                TxtSubjectFormatName.StringValue  = (NSString)string.Empty;
                TxtSubjectFormatValue.StringValue = (NSString)string.Empty;
            };

            BtnRemoveSubjectFormat.Activated += (object sender, EventArgs e) => {
                if (LstSubjectFormat.SelectedRows.Count > 0)
                {
                    foreach (var row in LstSubjectFormat.SelectedRows)
                    {
                        var source = LstSubjectFormat.DataSource as DictionaryDataSource;
                        var name   = source.Entries[(int)row];
                        ExternalIdentityProviderDto.SubjectFormats.Remove(name);
                    }
                    ReloadTableView(LstSubjectFormat, ExternalIdentityProviderDto.SubjectFormats);
                }
            };
            ReloadTableView(LstSubjectFormat, ExternalIdentityProviderDto.SubjectFormats);

            // Certificates
            BtnAddCertificate.Activated += (object sender, EventArgs e) => {
                var openPanel = new NSOpenPanel();
                openPanel.ReleasedWhenClosed = true;
                openPanel.Prompt             = "Select file";

                var result = openPanel.RunModal();
                if (result == 1)
                {
                    var filePath = openPanel.Url.AbsoluteString.Replace("file://", string.Empty);
                    var cert     = new X509Certificate2();
                    ActionHelper.Execute(delegate() {
                        cert.Import(filePath);
                        var certfificateDto = new CertificateDto {
                            Encoded = cert.ExportToPem(),
                        };
                        ExternalIdentityProviderDto.SigningCertificates.Certificates.Add(certfificateDto);
                        ReloadCertificates();
                    });
                }
            };

            BtnRemoveCertificate.Activated += (object sender, EventArgs e) => {
                if (LstCertificates.SelectedRows.Count > 0)
                {
                    foreach (var row in LstCertificates.SelectedRows)
                    {
                        ExternalIdentityProviderDto.SigningCertificates.Certificates.RemoveAt((int)row);
                    }
                    ReloadCertificates();
                }
            };
            ReloadCertificates();

            // Sso Services
            BtnAddSso.Activated    += OnAddSsoServices;
            BtnRemoveSso.Activated += OnRemoveSsoServices;
            InitializeSsoServices();

            // Slo Services
            BtnAddSlo.Activated    += OnAddSloServices;
            BtnRemoveSlo.Activated += OnRemoveSloServices;
            InitializeSloServices();

            this.BtnSave.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtUniqueId.StringValue))
                {
                    UIErrorHelper.ShowAlert("Please choose a Unique Id", "Alert");
                }
                else if (ExternalIdentityProviderDto.NameIDFormats.Count() < 1)
                {
                    UIErrorHelper.ShowAlert("Please choose a Name Id format", "Alert");
                }
                else if (ExternalIdentityProviderDto.SubjectFormats.Count() < 1)
                {
                    UIErrorHelper.ShowAlert("Please choose a Subject Id format", "Alert");
                }
                else if (ExternalIdentityProviderDto.SsoServices.Count() < 1)
                {
                    UIErrorHelper.ShowAlert("Please choose a Sso Service", "Alert");
                }
                else if (ExternalIdentityProviderDto.SloServices.Count() < 1)
                {
                    UIErrorHelper.ShowAlert("Please choose a Slo service", "Alert");
                }
                else if (ExternalIdentityProviderDto.SigningCertificates.Certificates.Count() < 1)
                {
                    UIErrorHelper.ShowAlert("Please choose a certificate", "Alert");
                }
                else
                {
                    ExternalIdentityProviderDto.EntityID   = TxtUniqueId.StringValue;
                    ExternalIdentityProviderDto.Alias      = TxtAlias.StringValue;
                    ExternalIdentityProviderDto.JitEnabled = ChkJit.StringValue == "1";

                    ActionHelper.Execute(delegate {
                        var auth = SnapInContext.Instance.AuthTokenManager.GetAuthToken(ServerDto.ServerName);
                        SnapInContext.Instance.ServiceGateway.ExternalIdentityProvider.Create(ServerDto, TenantName, ExternalIdentityProviderDto, auth.Token);
                        this.Close();
                        NSApplication.SharedApplication.StopModalWithCode(1);
                    });
                }
            };

            BtnClose.Activated += (object sender, EventArgs e) => {
                this.Close();
                NSApplication.SharedApplication.StopModalWithCode(0);
            };
            BtnViewCertificate.Activated += (object sender, EventArgs e) =>
            {
                if (LstCertificates.SelectedRows.Count > 0)
                {
                    var row         = LstCertificates.SelectedRows.First();
                    var encoded     = ExternalIdentityProviderDto.SigningCertificates.Certificates[(int)row].Encoded;
                    var bytes       = System.Text.Encoding.ASCII.GetBytes(encoded);
                    var certificate = new X509Certificate2(bytes);
                    CertificateService.DisplayX509Certificate2(this, certificate);
                }
            };
        }