public NewExternalIdp(ExternalIdentityProviderDto externalIdentityProviderDto, ServiceGateway service, ServerDto serverDto, string tenantName)
        {
            _service    = service;
            _serverDto  = serverDto;
            _tenantName = tenantName;
            _externalIdentityProviderDtoOrig = externalIdentityProviderDto;
            InitializeComponent();

            txtEntityId.ReadOnly           = true;
            btnCreate.Visible              = false;
            btnAddCert.Visible             = false;
            btnRemoveCert.Visible          = false;
            btnAddNameIdFormat.Visible     = false;
            btnRemoveNameIdFormat.Visible  = false;
            btnAddSsoService.Visible       = false;
            btnRemoveSsoService.Visible    = false;
            btnAddSubjectFormat.Visible    = false;
            btnRemoveSubjectFormat.Visible = false;
            btnSloService.Visible          = false;
            btnRemoveSloService.Visible    = false;
            lstNameIdFormats.Enabled       = false;
            lstSubjectFormat.Enabled       = false;
            lstSloServices.Enabled         = false;
            lstSsoServices.Enabled         = false;
            chkJit.Enabled = false;
            DtoToView(_externalIdentityProviderDtoOrig);
            if (lstCertificateChain.Items.Count > 0)
            {
                lstCertificateChain.Items[0].Selected = true;
            }
            Text           = "External Identity Provider";
            btnCreate.Text = "Update";
        }
Example #2
0
        private void btnCreateSignerIdentity_Click(object sender, EventArgs e)
        {
            if (ValidateInputs())
            {
                var auth = SnapInContext.Instance.AuthTokenManager.GetAuthToken(_serverDto, _tenantName);
                ActionHelper.Execute(delegate
                {
                    var externalIdentityProviderDto = new ExternalIdentityProviderDto
                    {
                        EntityID            = txtEntityId.Text,
                        Alias               = txtAlias.Text,
                        JitEnabled          = chkJit.Checked,
                        NameIDFormats       = GetNamedIdFormats(),
                        SsoServices         = GetSsoServices(),
                        SloServices         = GetSloServices(),
                        SubjectFormats      = GetSubjectFormats(),
                        SigningCertificates = GetCertificates()
                    };

                    IExternalIdentityProviderService idp = _service.ExternalIdentityProvider;
                    _externalIdentityProviderDtoOrig     = idp.Create(_serverDto, _tenantName, externalIdentityProviderDto, auth.Token);
                }, auth);
                this.DialogResult = DialogResult.OK;
            }
        }
Example #3
0
        private ExternalIdentityProviderDto AddExternalIdp(ExternalIdentityProviderDto idp)
        {
            var serverDto  = GetServerDto();
            var auth       = SnapInContext.Instance.AuthTokenManager.GetAuthToken(serverDto.ServerName);
            var tenantName = GetTenant();

            return(SnapInContext.Instance.ServiceGateway.ExternalIdentityProvider.Create(serverDto, tenantName, idp, auth.Token));
        }
Example #4
0
        public ExternalIdentityProviderDto GetIdentityProvider(ExternalIdentityProviderDto provider)
        {
            var idp = new ExternalIdentityProviderDto();

            ActionHelper.Execute(delegate() {
                var serverDto  = GetServerDto();
                var auth       = SnapInContext.Instance.AuthTokenManager.GetAuthToken(serverDto.ServerName);
                var tenantName = GetTenant();
                idp            = SnapInContext.Instance.ServiceGateway.ExternalIdentityProvider.Get(serverDto, tenantName, provider, auth.Token);
            });
            return(idp);
        }
Example #5
0
 public void DeleteExternalIdentityProvider(ExternalIdentityProviderDto dto)
 {
     ActionHelper.Execute(delegate() {
         var serverDto = GetServerDto();
         var tenant    = GetTenant();
         var auth      = SnapInContext.Instance.AuthTokenManager.GetAuthToken(serverDto.ServerName);
         var success   = SnapInContext.Instance.ServiceGateway.ExternalIdentityProvider.Delete(serverDto, tenant, dto, auth.Token);
         if (success)
         {
             UIErrorHelper.ShowAlert("External Identity Provider " + dto.EntityID + " deleted successfully", "Information");
         }
         else
         {
             UIErrorHelper.ShowAlert("Failed to delete External Identity Provider " + dto.EntityID, "Information");
         }
         Refresh(this, EventArgs.Empty);
     });
 }
        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);
                }
            };
        }
        public ExternalIdentityProviderDto Update(ServerDto serverDto, string tenant, ExternalIdentityProviderDto externalIdentityProvider, Token token)
        {
            var url  = string.Format(ServiceConfigManager.ExternalIdentityProviderEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, externalIdentityProvider.EntityID);
            var json = JsonConvert.Serialize(externalIdentityProvider);

            json = SerializationJsonHelper.Cleanup(json);
            json = Cleanup(json);
            ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
            var requestConfig = new RequestSettings
            {
                Method = HttpMethod.Put,
            };
            var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType);

            json = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower() + "&" + json;
            var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, json);

            response = SerializationJsonHelper.JsonToDictionary("subjectFormats", response);
            var dto = typeof(IdentityProviderDto).Assembly;

            return(JsonConvert.Deserialize <ExternalIdentityProviderDto>(response, "root", dto.GetTypes(), true));
        }