Пример #1
0
        private void DtoToView(OidcClientDto oidcClientDto)
        {
            txtClientId.Text          = oidcClientDto.ClientId;
            txtSubjectDN.Text         = oidcClientDto.OidcClientMetadataDTO.CertSubjectDN;
            txtLogoutUri.Text         = oidcClientDto.OidcClientMetadataDTO.LogoutUri;
            cbTokenAuth.SelectedIndex = oidcClientDto.OidcClientMetadataDTO.TokenEndpointAuthMethod == "none" ? 0 : 1;
            if (oidcClientDto.OidcClientMetadataDTO.RedirectUris != null)
            {
                foreach (var value in oidcClientDto.OidcClientMetadataDTO.RedirectUris)
                {
                    var lstItem = new ListViewItem(value)
                    {
                        Tag = value
                    };
                    lstRedirectUris.Items.Add(lstItem);
                }
            }

            if (oidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris != null)
            {
                foreach (var value in oidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris)
                {
                    var lstItem = new ListViewItem(value)
                    {
                        Tag = value
                    };
                    lstPostLogoutRedirectUris.Items.Add(lstItem);
                }
            }
        }
Пример #2
0
 private void btnCreateSignerIdentity_Click(object sender, EventArgs e)
 {
     if (ValidateInputs())
     {
         var auth = SnapInContext.Instance.AuthTokenManager.GetAuthToken(_serverDto, _tenantName);
         ActionHelper.Execute(delegate
         {
             var oidcClientMetadataDTO = new OidcClientMetadataDto
             {
                 CertSubjectDN           = txtSubjectDN.Text,
                 LogoutUri               = string.IsNullOrWhiteSpace(txtLogoutUri.Text) ? null : txtLogoutUri.Text,
                 TokenEndpointAuthMethod = cbTokenAuth.Items[cbTokenAuth.SelectedIndex].ToString(),
                 RedirectUris            = GetRedirectUris(),
                 PostLogoutRedirectUris  = GetPostLogoutRedirectUris()
             };
             if (_oidcClientDtoOrig == null)
             {
                 _oidcClientDtoOrig = _service.OidcClient.Create(_serverDto, _tenantName, oidcClientMetadataDTO, auth.Token);
             }
             else
             {
                 _oidcClientDtoOrig = _service.OidcClient.Update(_serverDto, _tenantName, txtClientId.Text, oidcClientMetadataDTO, auth.Token);
             }
         }, auth);
         this.DialogResult = DialogResult.OK;
     }
 }
Пример #3
0
        private OidcClientDto AddOidcClient(OidcClientDto oidcClientDto)
        {
            var serverDto  = GetServerDto();
            var auth       = SnapInContext.Instance.AuthTokenManager.GetAuthToken(serverDto.ServerName);
            var tenantName = GetTenant();

            return(SnapInContext.Instance.ServiceGateway.OidcClient.Create(serverDto, tenantName, oidcClientDto.OidcClientMetadataDTO, auth.Token));
        }
Пример #4
0
 public NewOidcClient(OidcClientDto oidcClientDto, ServiceGateway service, ServerDto serverDto, string tenantName)
 {
     _service           = service;
     _serverDto         = serverDto;
     _tenantName        = tenantName;
     _oidcClientDtoOrig = oidcClientDto;
     InitializeComponent();
     DtoToView(_oidcClientDtoOrig);
     Text           = "OIDC Client";
     btnCreate.Text = "Update";
 }
Пример #5
0
        public OidcClientDto Get(ServerDto serverDto, string tenant, OidcClientDto oidcClientDto, Token token)
        {
            tenant = Uri.EscapeDataString(tenant);
            var clientId = Uri.EscapeDataString(oidcClientDto.ClientId);
            var url      = string.Format(_serviceConfigManager.GetOidcClientPostEndPoint(), serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, clientId);

            ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
            var requestConfig = new RequestSettings
            {
                Method = HttpMethod.Post,
            };
            var headers  = ServiceHelper.AddHeaders(ServiceConstants.JsonContentType);
            var json     = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower();
            var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, json);

            return(JsonConvert.Deserialize <OidcClientDto>(response));
        }
Пример #6
0
 public void DeleteOidc(OidcClientDto dto)
 {
     ActionHelper.Execute(delegate() {
         var serverDto = GetServerDto();
         var tenant    = GetTenant();
         var auth      = SnapInContext.Instance.AuthTokenManager.GetAuthToken(serverDto.ServerName);
         var success   = SnapInContext.Instance.ServiceGateway.OidcClient.Delete(serverDto, tenant, dto, auth.Token);
         if (success)
         {
             UIErrorHelper.ShowAlert("Relying party " + dto.ClientId + " deleted successfully", "Information");
         }
         else
         {
             UIErrorHelper.ShowAlert("Failed to delete relying party " + dto.ClientId, "Information");
         }
         Refresh(this, EventArgs.Empty);
     });
 }
Пример #7
0
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();
            OidcClientDto = new OidcClientDto {
                ClientId = OidcClientDtoOriginal.ClientId,
                OidcClientMetadataDTO = new OidcClientMetadataDto {
                    RedirectUris           = OidcClientDtoOriginal.OidcClientMetadataDTO.RedirectUris,
                    PostLogoutRedirectUris = OidcClientDtoOriginal.OidcClientMetadataDTO.PostLogoutRedirectUris,
                    CertSubjectDN          = OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN,
                    LogoutUri = OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri,
                    TokenEndpointAuthMethod = OidcClientDtoOriginal.OidcClientMetadataDTO.TokenEndpointAuthMethod
                }
            };

            TxtName.StringValue = OidcClientDtoOriginal.ClientId;
            var authIndex = OidcClientDtoOriginal.OidcClientMetadataDTO.TokenEndpointAuthMethod == "none" ? 0 : 1;

            CbTokenAuthMethod.SelectItem(authIndex);
            TxtLogoutUrl.StringValue = string.IsNullOrEmpty(OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri) ? string.Empty :
                                       OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri;
            TxtCertificateDN.StringValue = string.IsNullOrEmpty(OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN) ?
                                           string.Empty : OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN;
            ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
            ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);

            BtnBrowseCertificate.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);
                        TxtCertificateDN.StringValue = cert.Subject;
                    });
                }
            };

            BtnAddRedirectUri.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtRedirectUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Redirect Uri cannot be empty", "Alert");
                    return;
                }
                OidcClientDto.OidcClientMetadataDTO.RedirectUris.Add(TxtRedirectUri.StringValue);
                ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
                TxtRedirectUri.StringValue = (NSString)string.Empty;
            };

            BtnAddPostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtPostLogoutRedirectUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Post logout redirect Uri cannot be empty", "Alert");
                    return;
                }
                OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Add(TxtPostLogoutRedirectUri.StringValue);
                ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
                TxtPostLogoutRedirectUri.StringValue = (NSString)string.Empty;
            };

            BtnRemoveRedirectUri.Activated += (object sender, EventArgs e) => {
                if (RedirectUriTableView.SelectedRows.Count > 0)
                {
                    foreach (var row in RedirectUriTableView.SelectedRows)
                    {
                        OidcClientDto.OidcClientMetadataDTO.RedirectUris.RemoveAt((int)row);
                    }
                    ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
                }
            };

            BtnRemovePostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
                if (PostLogoutRedirectUriTableView.SelectedRows.Count > 0)
                {
                    foreach (var row in PostLogoutRedirectUriTableView.SelectedRows)
                    {
                        OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.RemoveAt((int)row);
                    }
                    ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
                }
            };

            this.BtnApply.Activated += (object sender, EventArgs e) => {
                ActionHelper.Execute(delegate() {
                    if (string.IsNullOrEmpty(TxtCertificateDN.StringValue))
                    {
                        UIErrorHelper.ShowAlert("Please choose a valid certificate", "Alert");
                    }
                    else if (string.IsNullOrEmpty(TxtLogoutUrl.StringValue))
                    {
                        UIErrorHelper.ShowAlert("Please enter valid logout uri", "Alert");
                    }
                    else if (OidcClientDto.OidcClientMetadataDTO.RedirectUris.Count == 0)
                    {
                        UIErrorHelper.ShowAlert("Please enter a valid redirect URI", "Alert");
                    }
                    else if (OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Count == 0)
                    {
                        UIErrorHelper.ShowAlert("Please enter a valid post logout redirect URI", "Alert");
                    }
                    else
                    {
                        OidcClientDto.OidcClientMetadataDTO.LogoutUri = TxtLogoutUrl.StringValue;
                        OidcClientDto.OidcClientMetadataDTO.TokenEndpointAuthMethod = (NSString)CbTokenAuthMethod.SelectedValue;
                        OidcClientDto.OidcClientMetadataDTO.CertSubjectDN           = TxtCertificateDN.StringValue;
                        var auth      = SnapInContext.Instance.AuthTokenManager.GetAuthToken(ServerDto.ServerName);
                        OidcClientDto = SnapInContext.Instance.ServiceGateway.OidcClient.Update(ServerDto, TenantName, OidcClientDto.ClientId, OidcClientDto.OidcClientMetadataDTO, auth.Token);
                        NSNotificationCenter.DefaultCenter.PostNotificationName("RefreshTableView", this);
                    }
                });
            };
        }
Пример #8
0
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();
            OidcClientDto = new OidcClientDto {
                OidcClientMetadataDTO = new OidcClientMetadataDto {
                    RedirectUris           = new List <string>(),
                    PostLogoutRedirectUris = new List <string>()
                }
            };
            BtnSelectCertificate.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);
                        TxtCertificateDN.StringValue = cert.Subject;
                    });
                }
            };

            BtnAddRedirectUri.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtRedirectUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Redirect Uri cannot be empty", "Alert");
                    return;
                }
                else if (!WebUtil.IsValidHttpUrl(TxtRedirectUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Redirect Uri is invalid", "Alert");
                    return;
                }
                OidcClientDto.OidcClientMetadataDTO.RedirectUris.Add(TxtRedirectUri.StringValue);
                ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
                TxtRedirectUri.StringValue = (NSString)string.Empty;
            };

            BtnAddPostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
                if (string.IsNullOrEmpty(TxtPostLogoutRedirectUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Post logout redirect Uri cannot be empty", "Alert");
                    return;
                }
                else if (!WebUtil.IsValidHttpUrl(TxtPostLogoutRedirectUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Post logout is invalid", "Alert");
                    return;
                }
                OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Add(TxtPostLogoutRedirectUri.StringValue);
                ReloadTableView(PostLogoutUtiTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
                TxtPostLogoutRedirectUri.StringValue = (NSString)string.Empty;
            };

            BtnRemoveRedirectUri.Activated += (object sender, EventArgs e) => {
                if (RedirectUriTableView.SelectedRows.Count > 0)
                {
                    foreach (var row in RedirectUriTableView.SelectedRows)
                    {
                        OidcClientDto.OidcClientMetadataDTO.RedirectUris.RemoveAt((int)row);
                    }
                    ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
                }
            };

            BtnRemovePostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
                if (PostLogoutUtiTableView.SelectedRows.Count > 0)
                {
                    foreach (var row in PostLogoutUtiTableView.SelectedRows)
                    {
                        OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.RemoveAt((int)row);
                    }
                    ReloadTableView(PostLogoutUtiTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
                }
            };

            BtnClose.Activated += (object sender, EventArgs e) => {
                OidcClientDto = null;
                this.Close();
                NSApplication.SharedApplication.StopModalWithCode(0);
            };

            this.BtnSave.Activated += (object sender, EventArgs e) => {
                var value = (NSString)CbAuthTokenMethod.SelectedValue;
                if (value == "private_key_jwt" && string.IsNullOrEmpty(TxtCertificateDN.StringValue))
                {
                    UIErrorHelper.ShowAlert("Please choose a valid certificate", "Alert");
                }
                else if (string.IsNullOrEmpty(TxtLogoutUri.StringValue) || !WebUtil.IsValidHttpUrl(TxtLogoutUri.StringValue))
                {
                    UIErrorHelper.ShowAlert("Please enter valid logout uri", "Alert");
                }
                else if (OidcClientDto.OidcClientMetadataDTO.RedirectUris.Count == 0)
                {
                    UIErrorHelper.ShowAlert("Please enter a valid redirect URI", "Alert");
                }
                else if (OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Count == 0)
                {
                    UIErrorHelper.ShowAlert("Please enter a valid post logout redirect URI", "Alert");
                }
                else
                {
                    OidcClientDto.OidcClientMetadataDTO.LogoutUri = TxtLogoutUri.StringValue;
                    OidcClientDto.OidcClientMetadataDTO.TokenEndpointAuthMethod = (NSString)CbAuthTokenMethod.SelectedValue;
                    OidcClientDto.OidcClientMetadataDTO.CertSubjectDN           = TxtCertificateDN.StringValue;
                    this.Close();
                    NSApplication.SharedApplication.StopModalWithCode(1);
                }
            };

            CbAuthTokenMethod.SelectItem(0);
        }