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); } } }
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; } }
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)); }
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"; }
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)); }
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); }); }
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); } }); }; }
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); }