void btnQuery_Click(object sender, EventArgs e) { try { txtQueryResult.Text = DoQuery(txtQueryTransmittalBox.Text); try { Transmittal resultTransmittal = (Transmittal)SerializationHelper.DeserializeFromString(txtQueryResult.Text, typeof(Transmittal)); if (queryType.SelectedValue == "GetCensus") { foreach (var applicant in resultTransmittal.Applicants) { if (applicant.Relationship == Relationship.Employee || applicant.Relationship == Relationship.Unknown) { _LastEmployeeID = applicant.UniqueID; break; } } } } catch { } } catch (Exception ex) { txtQueryResult.Text = "Error: " + ex.Message; } SetDefaultGetLoginParameters(); }
private void SetDefaultQueryTransmittal() { Transmittal result = new Transmittal(); if (queryType.SelectedValue == "GetCensus") { result.Type = TransmittalType.Query; result.Group = new Group(); result.Group.GroupName = _LastPortfolioName; //if (string.IsNullOrEmpty(result.Group.GroupName)) // result.Group.GroupName = "Test Group"; Applicant employee = new Applicant(); employee.Relationship = Relationship.Employee; employee.SSN = _LastEmployeeSSN; result.Applicants = new ApplicantCollection(); result.Applicants.Add(employee); } else if (queryType.SelectedValue == "GetGroup") { result.Type = TransmittalType.GetPortfolio; result.Group = new Group(); result.Group.GroupName = _LastPortfolioName; //if (string.IsNullOrEmpty(result.Group.GroupName)) // result.Group.GroupName = "Test Group"; } txtQueryTransmittalBox.Text = SerializationHelper.SerializeToString(result); }
protected void OnStartButtonClicked(object sender, EventArgs e) { Session["Transmittal"] = null; Transmittal transmittal = new Transmittal(); transmittal.SenderID = Guid.NewGuid(); Applicant employee = new Applicant(); employee.ID = "1"; employee.AsOfDate = DateTime.Now; employee.SSN = "123-45-6789"; employee.FirstName = "Joell"; employee.MiddleInitial = "K"; employee.LastName = "AK-Carson"; employee.LegalStatus = LegalStatus.Employee; transmittal.Applicants = new ApplicantCollection(); transmittal.Applicants.Add(employee); Session["Transmittal"] = transmittal; bstIframe.Attributes.Add("src", "Saml2Request.aspx"); //bstIframe.Attributes.Add("src", "ShowTransmittal.aspx");// for test purposes }
private Transmittal BuildTransmittal() { Transmittal transmittal = new Transmittal(); transmittal.SenderID = Guid.NewGuid(); string agentName = !string.IsNullOrEmpty(this._MiddleInitial.Text) ? this._FirstName.Text + " " + this._MiddleInitial.Text + " " : this._FirstName.Text + " "; agentName += !string.IsNullOrEmpty(this._Suffix.Text) ? this._LastName.Text + " " + this._Suffix.Text : this._LastName.Text; Agent agent = new Agent(); agent.ID = Guid.NewGuid().ToString(); agent.Email = this._EmailText.Text; agent.FirstName = this._FirstName.Text; agent.MiddleInitial = this._MiddleInitial.Text; agent.LastName = this._LastName.Text; agent.Name = agentName; agent.PhoneWork = this._Phone1.Text + this._Phone2.Text + this._Phone3.Text + this._Phone4.Text; agent.Address = new Address(); agent.Address.Line1 = this._AddressLine1.Text; agent.Address.Line2 = this._AddressLine2.Text != null ? this._AddressLine2.Text : null; agent.Address.City = this._City.Text; agent.Address.State = this._State.SelectedValue; agent.Address.Zip = this._Zip.Text; transmittal.Agents = new AgentCollection(); transmittal.Agents.Add(agent); return(transmittal); }
private void SearchChanged(Transmittal obj) { if (obj == null) { IsSearching = false; return; } Results.Add(new TransmittalViewModel(obj)); }
public TransmittalViewModel(Transmittal transmittal) { OkayCommand = new RelayCommand(OkayCommandExecute, OkayCommandCanExecute); CancelCommand = new RelayCommand(CancelCommandExecute, CancelCommandCanExecute); AddFileCommand = new RelayCommand(AddFileExecute, FileEditCanExecute); RemoveFileCommand = new RelayCommand(RemoveFileExecute, FileRemoveCanExecute); EditRecipientsCommand = new RelayCommand(EditRecipientExecute, EditRecipientCanExecute); pg = new Progress <Document>(DocsUpdated); transmittalModel = transmittal; if (transmittalModel.IsLoadedFromDb) { Id = transmittalModel.Id; IssueToWorkshop = transmittalModel.IssueToWorkshop; SentDate = transmittalModel.SentDate; IssueType = transmittalModel.IssueType; TransmittalStatus = transmittalModel.TransmittalStatus; Comments = transmittalModel.Comments; IssueBy = transmittalModel.IssueBy; CreatedBy = transmittalModel.CreatedBy; Project = transmittalModel.Project; if (transmittalModel.ExtendedDataLoaded) { transmittalModel.Files.ForEach(f => files.Add(new FileDataViewModel(f))); Recipients = new RecipientsSelectionViewModel(transmittalModel.Recipients); } } else { CreatedBy = transmittalModel.CreatedBy; TransmittalStatus = TransmittalStatus.Preparing; } if (!transmittalModel.IsLoadedFromDb) { ViewStatus &= ViewStatusTypes.LoadedDb; } if (User.ActiveUser.Group == Groups.NoPermisions) { ViewStatus &= ViewStatusTypes.ViewOnly; } if (TransmittalStatus == TransmittalStatus.Issued) { ViewStatus &= ViewStatusTypes.Approved; } if (!ViewStatus.HasFlag(ViewStatusTypes.ViewOnly) && !ViewStatus.HasFlag(ViewStatusTypes.Approved)) { ViewStatus &= ViewStatusTypes.Editable; //Otherwise it should be editable. } }
public TransmittalDto UpdateTransmittal(long transmittalNumber, UpdateTransmittalRequest transmittalRequest) { Transmittal transmittalEntity = _transmittalRepository.GetByIdAsync(transmittalNumber).Result; transmittalEntity.TransmittalStatus = transmittalRequest.TransmittalStatus; transmittalEntity.TransmittalTotal = transmittalRequest.TransmittalTotal.Value; transmittalEntity.TransmittalTotalCount = transmittalRequest.TransmittalTotalCount.Value; _transmittalRepository.UpdateAsync(transmittalEntity).Wait(); return(_mapper.Map <TransmittalDto>(transmittalEntity)); }
void btnUpload_Click(object sender, EventArgs e) { try { txtUploadResult.Text = DoUpdate(txtUploadTransmittalBox.Text); try { Transmittal transmittal = (Transmittal)SerializationHelper.DeserializeFromString(txtUploadTransmittalBox.Text, typeof(Transmittal)); Transmittal resultTransmittal = (Transmittal)SerializationHelper.DeserializeFromString(txtUploadResult.Text, typeof(Transmittal)); if (uploadType.SelectedValue == "UploadCensus") { foreach (var applicant in transmittal.Applicants) { if (applicant.Relationship == Relationship.Employee || applicant.Relationship == Relationship.Unknown) { if (!string.IsNullOrEmpty(applicant.SSN)) { _LastEmployeeSSN = applicant.SSN; } break; } } } else if (uploadType.SelectedValue == "UploadGroup") { if (transmittal.Portfolio != null && !string.IsNullOrEmpty(transmittal.Portfolio.Name)) { _LastPortfolioName = transmittal.Portfolio.Name; } if (resultTransmittal.PortfolioID != Guid.Empty) { _LastPortfolioID = resultTransmittal.PortfolioID; } } } catch { } SetDefaultQueryTransmittal(); } catch (Exception ex) { txtUploadResult.Text = "Error: " + ex.Message; } SetDefaultGetLoginParameters(); }
public TransmittalViewModel() { ///This method shouldn't be used other than for debug OkayCommand = new RelayCommand(OkayCommandExecute, OkayCommandCanExecute); CancelCommand = new RelayCommand(CancelCommandExecute, CancelCommandCanExecute); AddFileCommand = new RelayCommand(AddFileExecute, FileEditCanExecute); RemoveFileCommand = new RelayCommand(RemoveFileExecute, FileRemoveCanExecute); EditRecipientsCommand = new RelayCommand(EditRecipientExecute, FileRemoveCanExecute); transmittalModel = new Transmittal(); TransmittalStatus = TransmittalStatus.Preparing; files = new DocumentCollectionViewModel(); ViewStatus = ViewStatusTypes.NewlyCreated & ViewStatusTypes.Editable; }
void _XMLTransmittalButton_Click(object sender, EventArgs e) { Button xmlTransmittalButton = (Button)sender; if (xmlTransmittalButton.CommandName == "ViewXMLTransmittal") { Transmittal transmittal = BuildTransmittal(); _XMLTransmittal.Text = SerializationHelper.SerializeToString(transmittal); //Hide User/Address textboxes. _Table.Rows[0].Attributes.Add("style", "display:none;"); _Table.Rows[1].Attributes.Add("style", "display:none;"); _Table.Rows[2].Attributes.Add("style", "display:none;"); _Table.Rows[3].Attributes.Add("style", "display:none;"); _Table.Rows[4].Attributes.Add("style", "display:none;"); _Table.Rows[5].Attributes.Add("style", "display:none;"); //Display XML textbox. _Table.Rows[6].Attributes.Add("style", "display:'';"); //Modify command name and text of button. xmlTransmittalButton.CommandName = "ViewTextBoxes"; xmlTransmittalButton.Text = "View Text Boxes"; } else if (xmlTransmittalButton.CommandName == "ViewTextBoxes") { //Add modified info from _XMLTransmittal.Text to appropriate text boxes. //Transmittal transmittal = (Transmittal)SerializationHelper.DeserializeFromString(_XMLTransmittal.Text, typeof(Transmittal)); //Hide TextBoxes. _Table.Rows[0].Attributes.Add("style", "display:'';"); _Table.Rows[1].Attributes.Add("style", "display:'';"); _Table.Rows[2].Attributes.Add("style", "display:'';"); _Table.Rows[3].Attributes.Add("style", "display:'';"); _Table.Rows[4].Attributes.Add("style", "display:'';"); _Table.Rows[5].Attributes.Add("style", "display:'';"); //Display XML TextBox. _Table.Rows[6].Attributes.Add("style", "display:none;"); //Modify command name and text of button. xmlTransmittalButton.CommandName = "ViewXMLTransmittal"; xmlTransmittalButton.Text = "View XML Transmittal"; //Remove text from _XMLTransmittal.Text. _XMLTransmittal.Text = string.Empty; } }
/// <summary> /// Handles the Click event of the submitButton control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void submitButton_Click(object sender, EventArgs e) { Transmittal transmittal = null; string employeeID = this._EmployeeID.Text; if (!string.IsNullOrEmpty(this._XMLText.Text)) { try { transmittal = (Transmittal)SerializationHelper.DeserializeFromString(this._XMLText.Text, typeof(Transmittal)); } catch (Exception exception) { this._XMLText.Text = exception.Message; Exception inner = exception.InnerException; while (inner != null) { this._XMLText.Text += "\n" + inner.Message; inner = inner.InnerException; } this._XMLText.Text = PrepareSourceCode(this._XMLText.Text); } } if (!string.IsNullOrEmpty(employeeID) && transmittal != null && transmittal.Applicants != null && transmittal.Applicants.Count > 0) { transmittal.Applicants[0].EmployeeIdent = employeeID; } Session["Transmittal"] = transmittal; //Creating SAML responce X509Certificate2 vendorCertificate = GetVendorCertificate(); X509Certificate2 selerixCertificate = GetSelerixCertificate(); string assertionConsumerServiceURL = "SamlResponse.aspx"; string audienceName = "whatever audience"; ComponentSpace.SAML.Protocol.Response samlResponse = new ComponentSpace.SAML.Protocol.Response(); samlResponse.Recipient = assertionConsumerServiceURL; samlResponse.Status = new ComponentSpace.SAML.Protocol.Status(ComponentSpace.SAML.Protocol.StatusCode.Codes.Success); ComponentSpace.SAML.Assertions.Assertion samlAssertion = new ComponentSpace.SAML.Assertions.Assertion(); samlAssertion.Issuer = "Vendor"; ComponentSpace.SAML.Assertions.SubjectConfirmation subjectConfirmation = new ComponentSpace.SAML.Assertions.SubjectConfirmation(ComponentSpace.SAML.Assertions.ConfirmationMethod.Methods.Bearer); ComponentSpace.SAML.Assertions.Subject subject = new ComponentSpace.SAML.Assertions.Subject(new ComponentSpace.SAML.Assertions.NameIdentifier("", "", employeeID), subjectConfirmation); ComponentSpace.SAML.Assertions.SubjectConfirmationData subjectConfirmationData = new ComponentSpace.SAML.Assertions.SubjectConfirmationData(); subjectConfirmation.SubjectConfirmationData = subjectConfirmationData; ComponentSpace.SAML.Assertions.Conditions conditions = new ComponentSpace.SAML.Assertions.Conditions(new TimeSpan(1, 0, 0)); ComponentSpace.SAML.Assertions.AudienceRestrictionCondition audienceRestriction = new ComponentSpace.SAML.Assertions.AudienceRestrictionCondition(); audienceRestriction.Audiences.Add(new ComponentSpace.SAML.Assertions.Audience(audienceName)); conditions.ConditionsList.Add(audienceRestriction); samlAssertion.Conditions = conditions; ComponentSpace.SAML.Assertions.AuthenticationStatement authnStatement = new ComponentSpace.SAML.Assertions.AuthenticationStatement(); authnStatement.Subject = subject; authnStatement.AuthenticationMethod = ComponentSpace.SAML.Assertions.AuthenticationStatement.AuthenticationMethods.Unspecified; samlAssertion.Statements.Add(authnStatement); ComponentSpace.SAML.Assertions.AttributeStatement attributeStatement = new ComponentSpace.SAML.Assertions.AttributeStatement(); if (Session["Transmittal"] != null) { attributeStatement.Attributes.Add(new ComponentSpace.SAML.Assertions.Attribute("Transmittal", "", SerializationHelper.SerializeToString(transmittal))); } //Check for Transmittal Options for (int i = 0; i < _TransmittalOptionsList.Items.Count; i++) { string answer = "no"; if (_TransmittalOptionsList.Items[i].Selected) { answer = "yes"; } if (_TransmittalOptionsList.Items[i].Value == "HeaderAndFooter") { attributeStatement.Attributes.Add(new ComponentSpace.SAML.Assertions.Attribute("HeaderAndFooter", "", answer)); } else if (_TransmittalOptionsList.Items[i].Value == "Sidebar") { attributeStatement.Attributes.Add(new ComponentSpace.SAML.Assertions.Attribute("Sidebar", "", answer)); } else if (_TransmittalOptionsList.Items[i].Value == "PersonalInfo") { attributeStatement.Attributes.Add(new ComponentSpace.SAML.Assertions.Attribute("PersonalInfo", "", answer)); } else if (_TransmittalOptionsList.Items[i].Value == "Welcome") { attributeStatement.Attributes.Add(new ComponentSpace.SAML.Assertions.Attribute("Welcome", "", answer)); } else if (_TransmittalOptionsList.Items[i].Value == "Review") { attributeStatement.Attributes.Add(new ComponentSpace.SAML.Assertions.Attribute("Review", "", answer)); } } samlAssertion.Statements.Add(attributeStatement); samlResponse.Assertions.Add(samlAssertion); //Created SAML response //Sending SAML response // Serialize the SAML response for transmission. XmlElement samlResponseXml = samlResponse.ToXml(); // Sign the SAML response. ComponentSpace.SAML.Protocol.ResponseSignature.Generate(samlResponseXml, vendorCertificate.PrivateKey, vendorCertificate); HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache"); HttpContext.Current.Response.AddHeader("Pragma", "no-cache"); RemotePost remotePost = new RemotePost(); remotePost.Add("SAMLResponse", ComponentSpace.SAML.SAML.ToBase64String(samlResponseXml)); remotePost.Url = assertionConsumerServiceURL; remotePost.Post(); }
public string Query(string transmittal) { Transmittal response = new Transmittal(); response.Result = new Result(); response.Result.Status = ResultStatus.OK; Transmittal request = null; try { if (string.IsNullOrEmpty(transmittal)) { throw new Exception("Transmittal parameter is not valid xml."); } request = (Transmittal)SerializationHelper.DeserializeFromString(transmittal, typeof(Transmittal)); switch (request.Type) { case TransmittalType.GetPortfolio: Portfolio p = FindPortfolio(request); if (p == null) { if (request.Portfolio.UniqueID != Guid.Empty) { throw new Exception( String.Format("Couldn't find portfolio \"{0}\" [{1}] or user doesn't have access to it", request.Portfolio.Name, request.Portfolio.UniqueID)); } else { throw new Exception( String.Format("Couldn't find portfolio \"{0}\" or user doesn't have access to it", request.Portfolio.Name)); } } response.Portfolio = p; break; case TransmittalType.Query: Transmittal t = FindCensus(request); if (t == null) { throw new Exception("Couldn't find employee"); } response.Applicants = t.Applicants; response.Applications = t.Applications; response.Group = t.Group; break; default: throw new Exception("Not supported transmittal type"); } } catch (Exception e) { response.Result.Status = ResultStatus.Error; response.Result.Error = e.Message; } string result = SerializationHelper.SerializeToString(response); return(result); }
public string Upload(string transmittal) { Transmittal response = new Transmittal(); response.Result = new Result(); response.Result.Status = ResultStatus.OK; Transmittal request = null; try { if (string.IsNullOrEmpty(transmittal)) { throw new Exception("Transmittal parameter is not valid xml."); } request = (Transmittal)SerializationHelper.DeserializeFromString(transmittal, typeof(Transmittal)); switch (request.Type) { case TransmittalType.UploadPortfolio: Portfolio portfolio = FindPortfolio(request); if (portfolio != null) { request.Portfolio.UniqueID = portfolio.UniqueID; _Portfolios.Remove(portfolio); _Portfolios.Add(request.Portfolio); response.PortfolioID = request.Portfolio.UniqueID; } else { //create new one. request.Portfolio.UniqueID = Guid.NewGuid(); _Portfolios.Add(request.Portfolio); response.PortfolioID = request.Portfolio.UniqueID; } break; case TransmittalType.UploadApplicants: Portfolio p = FindPortfolio(request); if (p == null) { throw new Exception("Portfolio is not found"); } Transmittal t = FindCensus(request); if (t != null) { _Census[request.Group.GroupName].Remove(t); } foreach (var applicant in request.Applicants) { if (applicant.UniqueID == Guid.Empty) { applicant.UniqueID = Guid.NewGuid(); } } if (!_Census.ContainsKey(request.Group.GroupName)) { _Census.Add(request.Group.GroupName, new List <Transmittal>()); } _Census[request.Group.GroupName].Add(request); break; default: throw new Exception("Not supported transmittal type"); } } catch (Exception e) { response.Result.Status = ResultStatus.Error; response.Result.Error = e.Message; } string result = SerializationHelper.SerializeToString(response); return(result); }
private Portfolio FindPortfolio(Transmittal request) { if ( (request.Group == null || string.IsNullOrEmpty(request.Group.GroupName)) && request.PortfolioID == Guid.Empty && ( request.Portfolio == null || (string.IsNullOrEmpty(request.Portfolio.Name) && request.Portfolio.UniqueID == Guid.Empty) ) ) { throw new Exception("Portfolio search criteria (PortfolioID, Name or UniqueID) is missing."); } Portfolio portfolio = null; if (request.PortfolioID != Guid.Empty) { foreach (var p in _Portfolios) { if (p.UniqueID == request.PortfolioID) { portfolio = p; break; } } } if (portfolio == null && request.Portfolio != null && request.Portfolio.UniqueID != Guid.Empty) { foreach (var p in _Portfolios) { if (p.UniqueID == request.Portfolio.UniqueID) { portfolio = p; break; } } } string groupName = request.Group != null ? request.Group.GroupName : request.Portfolio != null ? request.Portfolio.Name : null; string groupNumber = request.Group != null ? request.Group.GroupNumber : request.Portfolio != null ? request.Portfolio.GroupNumber : null; if (portfolio == null && (!string.IsNullOrEmpty(groupName) || !string.IsNullOrEmpty(groupNumber))) { if (portfolio == null && !string.IsNullOrEmpty(groupName)) { List <Portfolio> portfolios = new List <Portfolio>(); foreach (var p in _Portfolios) { if (p.Name == groupName.Trim()) { portfolios.Add(p); } } if (portfolios.Count > 1 && !string.IsNullOrEmpty(groupNumber)) { List <Portfolio> filteredPortfolios = new List <Portfolio>(); foreach (var p in portfolios) { if (p.GroupNumber == groupNumber) { filteredPortfolios.Add(p); } } portfolios = filteredPortfolios; } if (portfolios.Count > 0) { portfolio = portfolios[0]; } } } return(portfolio); }
private Transmittal FindCensus(Transmittal request) { if (request.Group == null || string.IsNullOrEmpty(request.Group.GroupName)) { throw new Exception("Request missing group name"); } if (request.Applicants == null || request.Applicants.Count == 0) { throw new Exception("Request missing applicants collection"); } Applicant employee = null; if (request.Applicants != null) { foreach (var applicant in request.Applicants) { if (applicant.Relationship == Relationship.Employee || applicant.Relationship == Relationship.Unknown) { if (employee != null) { throw new Exception("Multiple employees in request"); } employee = applicant; } } } if (employee == null) { throw new Exception("Couldn't find employee in request"); } if (string.IsNullOrEmpty(employee.SSN)) { throw new Exception("Employee is missing SSN"); } Transmittal result = null; if (_Census.ContainsKey(request.Group.GroupName)) { foreach (var transmittal in _Census[request.Group.GroupName]) { Applicant transmittalEmployee = null; foreach (var applicant in transmittal.Applicants) { if (applicant.Relationship == Relationship.Employee || applicant.Relationship == Relationship.Unknown) { transmittalEmployee = applicant; } } if (transmittalEmployee != null && transmittalEmployee.SSN == employee.SSN) { result = transmittal; break; } } } return(result); }
private void BuildSamlRequest() { ClientScript.RegisterStartupScript(typeof(Page), "OpaqueDivider", @" <script language=""javascript""> <!-- var dividerID = '" + this.SamlAgentDiv.ClientID + @"'; var divider = document.getElementById(dividerID); divider.style.visibility = 'visible'; //--> </script>" ); //Creating SAML response X509Certificate2 vendorCertificate = GetVendorCertificate(); X509Certificate2 selerixCertificate = GetSelerixCertificate(); //string assertionConsumerServiceURL = "SamlResponse.aspx"; string assertionConsumerServiceURL = "http://localhost:49000/login.aspx?Path=SAML_TEST"; string audienceName = "whatever audience"; SAMLResponse samlResponse = new SAMLResponse(); samlResponse.Destination = assertionConsumerServiceURL; Issuer issuer = new Issuer("Vendor"); samlResponse.Issuer = issuer; samlResponse.Status = new Status(SAMLIdentifiers.PrimaryStatusCodes.Success, null); SAMLAssertion samlAssertion = new SAMLAssertion(); samlAssertion.Issuer = issuer; Subject subject = null; //subject = new Subject(new EncryptedID(new NameID(this._EmailText.Text), selerixCertificate, new EncryptionMethod(EncryptedXml.XmlEncTripleDESUrl))); subject = new Subject(new NameID(this._EmailText.Text)); SubjectConfirmation subjectConfirmation = new SubjectConfirmation(SAMLIdentifiers.SubjectConfirmationMethods.Bearer); SubjectConfirmationData subjectConfirmationData = new SubjectConfirmationData(); subjectConfirmationData.Recipient = assertionConsumerServiceURL; subjectConfirmationData.NotOnOrAfter = DateTime.UtcNow.AddHours(1); subjectConfirmation.SubjectConfirmationData = subjectConfirmationData; subject.SubjectConfirmations.Add(subjectConfirmation); samlAssertion.Subject = subject; Conditions conditions = new Conditions(new TimeSpan(1, 0, 0)); AudienceRestriction audienceRestriction = new AudienceRestriction(); audienceRestriction.Audiences.Add(new Audience(audienceName)); conditions.ConditionsList.Add(audienceRestriction); samlAssertion.Conditions = conditions; AuthnStatement authnStatement = new AuthnStatement(); authnStatement.AuthnContext = new AuthnContext(); authnStatement.AuthnContext.AuthnContextClassRef = new AuthnContextClassRef(SAMLIdentifiers.AuthnContextClasses.Unspecified); samlAssertion.Statements.Add(authnStatement); AttributeStatement attributeStatement = new AttributeStatement(); Transmittal transmittal = BuildTransmittal(); if (transmittal != null && !string.IsNullOrEmpty(this._FirstName.Text) && !string.IsNullOrEmpty(this._LastName.Text)) { attributeStatement.Attributes.Add(new SAMLAttribute("Transmittal", SAMLIdentifiers.AttributeNameFormats.Basic, null, SerializationHelper.SerializeToString(transmittal))); } samlAssertion.Statements.Add(attributeStatement); // EncryptedAssertion encryptedAssertion = new EncryptedAssertion(samlAssertion, selerixCertificate, new EncryptionMethod(EncryptedXml.XmlEncTripleDESUrl)); // samlResponse.Assertions.Add(encryptedAssertion); samlResponse.Assertions.Add(samlAssertion); //Created SAML response //Sending SAML response // Serialize the SAML response for transmission. XmlElement samlResponseXml = samlResponse.ToXml(); // Sign the SAML response. SAMLMessageSignature.Generate(samlResponseXml, vendorCertificate.PrivateKey, vendorCertificate); HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache"); HttpContext.Current.Response.AddHeader("Pragma", "no-cache"); IdentityProvider.SendSAMLResponseByHTTPPost(HttpContext.Current.Response, assertionConsumerServiceURL, samlResponseXml, "");// for test purposes }
private void SetDefaultUploadTransmittal() { Transmittal result = new Transmittal(); if (uploadType.SelectedValue == "UploadCensus") { result.Type = TransmittalType.UploadApplicants; result.Group = new Group(); result.Group.GroupName = _LastPortfolioName; Applicant employee = new Applicant(); employee.Relationship = Relationship.Employee; employee.FirstName = "TestFirst"; employee.LastName = "TestLast"; employee.BirthDate = new DateTime(1980, 12, 24); employee.Sex = Gender.Male; employee.SSN = _LastEmployeeSSN; result.Applicants = new ApplicantCollection(); result.Applicants.Add(employee); } else if (uploadType.SelectedValue == "UploadGroup") { result.Type = TransmittalType.UploadPortfolio; result.Portfolio = new Portfolio(); result.Portfolio.Name = _LastPortfolioName; result.Portfolio.GroupNumber = "TESTXXXX"; //Enrollment info result.Portfolio.EnrollmentStartDate = new DateTime(2010, 12, 1); result.Portfolio.EnrollmentEndDate = new DateTime(2011, 2, 15); result.Portfolio.PlanYearStartDate = new DateTime(2011, 1, 1); //Employer Info result.Portfolio.Employer = new Employer(); result.Portfolio.Employer.Name = "Test Employer"; result.Portfolio.Employer.Address = new Address(); result.Portfolio.Employer.Address.Line1 = "123 Main Ln"; result.Portfolio.Employer.Address.Line2 = null; result.Portfolio.Employer.Address.City = "Chicago"; result.Portfolio.Employer.Address.State = "IL"; result.Portfolio.Employer.Address.Zip = "54342"; //Payroll provider result.Portfolio.PayrollProviders = new PayrollProviderCollection(); PayrollProvider payrollProvider = new PayrollProvider(); payrollProvider.Name = "Payroll Dept."; result.Portfolio.PayrollProviders.Add(payrollProvider); //Relationships included in enrollment result.Portfolio.DependentRelationships = new RelationshipCCCollection(); result.Portfolio.DependentRelationships.Add(new RelationshipCC(Relationship.Employee)); result.Portfolio.DependentRelationships.Add(new RelationshipCC(Relationship.Spouse)); result.Portfolio.DependentRelationships.Add(new RelationshipCC(Relationship.Child)); if (_LastPortfolioID != null) { result.Portfolio.UniqueID = _LastPortfolioID; } } txtUploadTransmittalBox.Text = SerializationHelper.SerializeToString(result); }
/// <summary> /// Handles the Click event of the submitButton control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void submitButton_Click(object sender, EventArgs e) { Transmittal transmittal = null; string employeeID = this._EmployeeID.Text; if (!string.IsNullOrEmpty(this._XMLText.Text)) { try { transmittal = (Transmittal)SerializationHelper.DeserializeFromString(this._XMLText.Text, typeof(Transmittal)); } catch (Exception exception) { this._XMLText.Text = exception.Message; Exception inner = exception.InnerException; while (inner != null) { this._XMLText.Text += "\n" + inner.Message; inner = inner.InnerException; } this._XMLText.Text = PrepareSourceCode(this._XMLText.Text); } } if (!string.IsNullOrEmpty(employeeID) && transmittal != null && transmittal.Applicants != null && transmittal.Applicants.Count > 0) { transmittal.Applicants[0].EmployeeIdent = employeeID; } Session["Transmittal"] = transmittal; //Creating SAML responce X509Certificate2 vendorCertificate = GetVendorCertificate(); X509Certificate2 selerixCertificate = GetSelerixCertificate(); string assertionConsumerServiceURL = "SamlResponse.aspx"; string audienceName = "whatever audience"; SAMLResponse samlResponse = new SAMLResponse(); samlResponse.Destination = assertionConsumerServiceURL; Issuer issuer = new Issuer("Vendor"); samlResponse.Issuer = issuer; samlResponse.Status = new Status(SAMLIdentifiers.PrimaryStatusCodes.Success, null); SAMLAssertion samlAssertion = new SAMLAssertion(); samlAssertion.Issuer = issuer; Subject subject = null; // subject = new Subject(new EncryptedID(new NameID(employeeID), selerixCertificate, new EncryptionMethod(EncryptedXml.XmlEncTripleDESUrl))); //employee ID subject = new Subject(new NameID(employeeID)); //employee ID SubjectConfirmation subjectConfirmation = new SubjectConfirmation(SAMLIdentifiers.SubjectConfirmationMethods.Bearer); SubjectConfirmationData subjectConfirmationData = new SubjectConfirmationData(); subjectConfirmationData.Recipient = assertionConsumerServiceURL; subjectConfirmationData.NotOnOrAfter = DateTime.UtcNow.AddHours(1); subjectConfirmation.SubjectConfirmationData = subjectConfirmationData; subject.SubjectConfirmations.Add(subjectConfirmation); samlAssertion.Subject = subject; Conditions conditions = new Conditions(new TimeSpan(1, 0, 0)); AudienceRestriction audienceRestriction = new AudienceRestriction(); audienceRestriction.Audiences.Add(new Audience(audienceName)); conditions.ConditionsList.Add(audienceRestriction); samlAssertion.Conditions = conditions; AuthnStatement authnStatement = new AuthnStatement(); authnStatement.AuthnContext = new AuthnContext(); authnStatement.AuthnContext.AuthnContextClassRef = new AuthnContextClassRef(SAMLIdentifiers.AuthnContextClasses.Unspecified); samlAssertion.Statements.Add(authnStatement); AttributeStatement attributeStatement = new AttributeStatement(); if (transmittal != null) { attributeStatement.Attributes.Add(new SAMLAttribute("Transmittal", SAMLIdentifiers.AttributeNameFormats.Basic, null, SerializationHelper.SerializeToString(transmittal))); if (transmittal.Applicants != null && transmittal.Applicants.Count > 0) { transmittal.Applicants[0].EmployeeIdent = employeeID; } } //Check for Transmittal Options for (int i = 0; i < _TransmittalOptionsList.Items.Count; i++) { string answer = "no"; if (_TransmittalOptionsList.Items[i].Selected) { answer = "yes"; } if (_TransmittalOptionsList.Items[i].Value == "HeaderAndFooter") { attributeStatement.Attributes.Add(new SAMLAttribute("HeaderAndFooter", SAMLIdentifiers.AttributeNameFormats.Basic, null, answer)); } else if (_TransmittalOptionsList.Items[i].Value == "Sidebar") { attributeStatement.Attributes.Add(new SAMLAttribute("Sidebar", SAMLIdentifiers.AttributeNameFormats.Basic, null, answer)); } else if (_TransmittalOptionsList.Items[i].Value == "PersonalInfo") { attributeStatement.Attributes.Add(new SAMLAttribute("PersonalInfo", SAMLIdentifiers.AttributeNameFormats.Basic, null, answer)); } else if (_TransmittalOptionsList.Items[i].Value == "Welcome") { attributeStatement.Attributes.Add(new SAMLAttribute("Welcome", SAMLIdentifiers.AttributeNameFormats.Basic, null, answer)); } else if (_TransmittalOptionsList.Items[i].Value == "Review") { attributeStatement.Attributes.Add(new SAMLAttribute("Review", SAMLIdentifiers.AttributeNameFormats.Basic, null, answer)); } } samlAssertion.Statements.Add(attributeStatement); // EncryptedAssertion encryptedAssertion = new EncryptedAssertion(samlAssertion, selerixCertificate, new EncryptionMethod(EncryptedXml.XmlEncTripleDESUrl)); // samlResponse.Assertions.Add(encryptedAssertion); samlResponse.Assertions.Add(samlAssertion); //Created SAML response //Sending SAML response // Serialize the SAML response for transmission. XmlElement samlResponseXml = samlResponse.ToXml(); // Sign the SAML response. SAMLMessageSignature.Generate(samlResponseXml, vendorCertificate.PrivateKey, vendorCertificate); HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache"); HttpContext.Current.Response.AddHeader("Pragma", "no-cache"); IdentityProvider.SendSAMLResponseByHTTPPost(HttpContext.Current.Response, assertionConsumerServiceURL, samlResponseXml, "");// for test purposes }