123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
/* * Program: AssertionBuilder.java * Purpose: Main program to create assertion builder to illustrate the Assertion Builder pattern * @author Ray Lai (ray.lai@sun.com) * @version 1.0 * Updated: April 18, 2005, 6:45 AM * Copyright: (c) 2005 by Sun Microsystems/Ray Lai under Common Development and Distribution License * Remarks: Full program and documentation will be available under developer.java.net * ===================================================================================== * Dependnecies: * - AssertionContextImpl.java * * For simplicity, logger class is removed. */ package com.csp.identity; import java.util.ArrayList; import java.util.Collection; import org.w3c.dom.Document; public class AssertionBuilder { // common variables and constants protected com.csp.identity.AssertionContextImpl assertionFactory; protected com.csp.identity.Subject subject; protected static final String authMethod = "urn:oasis:names:tc:SAML:1.0:am:password"; protected static final String sourceSite = "www.coresecuritypattern.com"; protected static final String destinationSite = "www.prenhall.com"; protected static final String subjectDNS = "dns.coresecuritypattern.com"; protected static final String subjectIP = "192.168.1.1"; protected static final String subjectName = "Maryjo Parker"; protected static final String subjectQualifiedName = "cn=Maryjo, cn=Parker, ou=authors, o=coresecurity, o=com"; // authentication assertion specific protected com.csp.identity.AuthenticationStatement authenticationStatement; protected Document authAssertionDOM; // authorization decision assertion specific protected com.csp.identity.AuthorizationDecisionStatement authzDecisionStatement; protected static final String decision = "someDecision"; protected static final String resource = "someResource"; protected java.util.Collection actions = new ArrayList(); protected java.util.Collection evidence = new ArrayList(); protected Document authzDecisionAssertionDOM; // attribute assertion specific protected com.csp.identity.AttributeStatement attributeStatement; protected com.csp.identity.Attribute attribute; protected Collection attributeCollection = new ArrayList();; protected Document attributeStatementDOM; /** Constructor - Creates a new instance of AssertionBuilder */ public AssertionBuilder() { System.out.println("Assertion Builder - this demo will create 3 types of SAML assertion statements"); System.out.println(); // common assertionFactory = new com.csp.identity.AssertionContextImpl(); subject = new com.csp.identity.Subject(); subject.setSubjectName(subjectName); subject.setSubjectNameQualifier(subjectQualifiedName); assertionFactory.setAssertionType(com.csp.identity.AuthenticationStatement.ASSERTION_TYPE); // =================create authentication statement ======================= // create authentication assertion object attribute authenticationStatement = new com.csp.identity.AuthenticationStatement(); assertionFactory.setAuthenticationMethod(authMethod); authenticationStatement.setSourceSite(sourceSite); authenticationStatement.setDestinationSite(destinationSite); authenticationStatement.setSubjectDNS(subjectDNS); authenticationStatement.setSubjectIP(subjectIP); authenticationStatement.setSubject(subject); // create authentication statement System.out.println("Example to create SAML authentication statement:"); authAssertionDOM = assertionFactory.createAssertionStatement((com.csp.identity.AuthenticationStatement)authenticationStatement); // dump content for verification System.out.println("sourceSite=" + authenticationStatement.getSourceSite()); System.out.println("destinationSite=" + authenticationStatement.getDestinationSite()); System.out.println("subjectDNS=" + authenticationStatement.getSubjectDNS()); System.out.println("subjectIP=" + authenticationStatement.getSubjectIP()); System.out.println(); //====================end of create authentication statement ============ // ==================create authorization decision statement ================= // create authorization decision assertion object attribute authzDecisionStatement = new com.csp.identity.AuthorizationDecisionStatement(); authzDecisionStatement.setSourceSite(sourceSite); authzDecisionStatement.setDestinationSite(destinationSite); authzDecisionStatement.setSubjectDNS(subjectDNS); authzDecisionStatement.setSubjectIP(subjectIP); authzDecisionStatement.setResource(resource); authzDecisionStatement.setDecision(decision); authzDecisionStatement.setSubject(subject); assertionFactory.setAssertionType(com.csp.identity.AuthorizationDecisionStatement.ASSERTION_TYPE); // Prepare evidence this.evidence.add("Evidence1"); this.evidence.add("Evidence2"); this.evidence.add("Evidence3"); authzDecisionStatement.setEvidence(evidence); // Prepare action this.actions.add("Action1"); this.actions.add("Action2"); this.actions.add("Action3"); authzDecisionStatement.setActions(actions); // create authorization descision statement System.out.println("Example to create SAML authorization decision statement:"); authzDecisionAssertionDOM = assertionFactory.createAssertionStatement((com.csp.identity.AuthorizationDecisionStatement)authzDecisionStatement); // dump content for verification System.out.println("sourceSite=" + authzDecisionStatement.getSourceSite()); System.out.println("destinationSite=" + authzDecisionStatement.getDestinationSite()); System.out.println("subjectDNS=" + authzDecisionStatement.getSubjectDNS()); System.out.println("subjectIP=" + authzDecisionStatement.getSubjectIP()); System.out.println(); // ====================end of create authorization statement ==================== // ==================create attribute statement ================= // create attribute assertion object attribute attributeStatement = new com.csp.identity.AttributeStatement(); attributeStatement.setSourceSite(sourceSite); attributeStatement.setDestinationSite(destinationSite); attributeStatement.setSubjectDNS(subjectDNS); attributeStatement.setSubjectIP(subjectIP); attributeStatement.setSubject(subject); assertionFactory.setAssertionType(com.csp.identity.AttributeStatement.ASSERTION_TYPE); // Prepare attribute attribute = new com.csp.identity.Attribute(); this.attributeCollection.add("Attribute1"); this.attributeCollection.add("Attribute2"); this.attributeCollection.add("Attribute3"); this.attribute.setAttribute(attributeCollection); attributeStatement.addAttribute(attribute); // create attribute statement System.out.println("Example to create SAML attribute statement:"); attributeStatementDOM = assertionFactory.createAssertionStatement((com.csp.identity.AttributeStatement)attributeStatement); // dump content for verification System.out.println("sourceSite=" + attributeStatement.getSourceSite()); System.out.println("destinationSite=" + attributeStatement.getDestinationSite()); System.out.println("subjectDNS=" + attributeStatement.getSubjectDNS()); System.out.println("subjectIP=" + attributeStatement.getSubjectIP()); System.out.println(); // ====================end of create attribute statement ==================== } public static void main(String[] args) { new AssertionBuilder(); } }