Filter:   InfoImg
download AssertionBuilder.java
Language: Java
Copyright: (c) 2005 by Sun Microsystems/Ray Lai under Common Development and Distribution License
LOC: 97
Project Info
identity management security patterns(identitypatterns)
Server: java.net
Type: cvs
...terns\src\com\csp\identity\
   Assertion.java
   AssertionBuilder.java
   AssertionContext.java
   AssertionContextImpl.java
   Attribute.java
   AttributeStatement.java
   ...nticationStatement.java
   ...nDecisionStatement.java
   BinaryToken.java
   CredentialTokenizer.java
   SecurityToken.java
   SSOContext.java
   SSOContextImpl.java
   SSODelegator.java
   SSODelegatorException.java
   SSODelegatorFactory.java
   ...legatorFactoryImpl.java
   ...er_SampleFunction1.java
   SSOServiceProvider.java
   ...rviceProviderImpl1.java
   ...rviceProviderImpl2.java
   Subject.java
   TokenContext.java
   TokenContextImpl.java
   UsernameToken.java
   X509CertToken.java

/*
 * 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();
    }    
}