JBoss Identity SVN: r269 - in identity-federation/trunk/identity-bindings/src: test/java/org/jboss/test/identity/federation/bindings/servlets and 1 other directories.
by jboss-identity-commits@lists.jboss.org
Author: anil.saldhana(a)jboss.com
Date: 2009-01-30 17:38:30 -0500 (Fri, 30 Jan 2009)
New Revision: 269
Added:
identity-federation/trunk/identity-bindings/src/test/resources/xacml/requests/interop-request.xml
Modified:
identity-federation/trunk/identity-bindings/src/main/java/org/jboss/identity/federation/bindings/servlets/SOAPSAMLXACMLServlet.java
identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/SOAPSAMLXACMLServletUnitTestCase.java
identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletRequest.java
Log:
fix interop test failure
Modified: identity-federation/trunk/identity-bindings/src/main/java/org/jboss/identity/federation/bindings/servlets/SOAPSAMLXACMLServlet.java
===================================================================
--- identity-federation/trunk/identity-bindings/src/main/java/org/jboss/identity/federation/bindings/servlets/SOAPSAMLXACMLServlet.java 2009-01-30 22:04:13 UTC (rev 268)
+++ identity-federation/trunk/identity-bindings/src/main/java/org/jboss/identity/federation/bindings/servlets/SOAPSAMLXACMLServlet.java 2009-01-30 22:38:30 UTC (rev 269)
@@ -122,7 +122,7 @@
Object element = jaxbElement.getValue();
if(element instanceof Envelope)
{
- envelope = (Envelope)unmarshalledObject;
+ envelope = (Envelope)element;
Body soapBody = envelope.getBody();
jaxbRequestType = (JAXBElement<RequestAbstractType>)soapBody.getAny().get(0);
xacmlRequest = (XACMLAuthzDecisionQueryType) jaxbRequestType.getValue();
@@ -166,7 +166,7 @@
}
catch (JAXBException e)
{
- log.error("Exception parsing SOAP:", e);
+ log.error("Exception parsing SOAP:", e);
envelope = this.createEnvelope(this.createFault("Parsing Error:"+e.getMessage()));
}
catch (PrivilegedActionException e)
Modified: identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/SOAPSAMLXACMLServletUnitTestCase.java
===================================================================
--- identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/SOAPSAMLXACMLServletUnitTestCase.java 2009-01-30 22:04:13 UTC (rev 268)
+++ identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/SOAPSAMLXACMLServletUnitTestCase.java 2009-01-30 22:38:30 UTC (rev 269)
@@ -88,6 +88,11 @@
assertTrue(fault.getValue() instanceof Fault);
}
+ public void testInteropSOAPRequest() throws Exception
+ {
+ validate("xacml/requests/interop-request.xml", DecisionType.PERMIT.value());
+ }
+
@SuppressWarnings("unchecked")
private void validate(String requestFile, String value) throws Exception
{
@@ -95,7 +100,10 @@
SOAPSAMLXACMLServlet servlet = new SOAPSAMLXACMLServlet();
servlet.init(new TestServletConfig(getServletContext()));
- ServletRequest sreq = new TestServletRequest(getInputStream(requestFile));
+ InputStream is = getInputStream(requestFile);
+ if(is == null)
+ throw new IllegalArgumentException("Input Stream to request file is null");
+ ServletRequest sreq = new TestServletRequest(is);
ServletResponse sresp = new TestServletResponse(baos);
servlet.service(sreq, sresp);
Modified: identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletRequest.java
===================================================================
--- identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletRequest.java 2009-01-30 22:04:13 UTC (rev 268)
+++ identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletRequest.java 2009-01-30 22:38:30 UTC (rev 269)
@@ -212,7 +212,7 @@
@Override
public int read() throws IOException
{
- return is.read();
+ return is.read();
}
};
}
Added: identity-federation/trunk/identity-bindings/src/test/resources/xacml/requests/interop-request.xml
===================================================================
--- identity-federation/trunk/identity-bindings/src/test/resources/xacml/requests/interop-request.xml (rev 0)
+++ identity-federation/trunk/identity-bindings/src/test/resources/xacml/requests/interop-request.xml 2009-01-30 22:38:30 UTC (rev 269)
@@ -0,0 +1,99 @@
+<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
+ <soap-env:Body>
+ <xacml-samlp:XACMLAuthzDecisionQuery
+ xmlns:xacml-samlp="urn:oasis:xacml:2.0:saml:protocol:schema:os"
+ xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
+ xacml-samlp:InputContextOnly="true" xacml-samlp:ReturnContext="true"
+ ID="s22e30cf15f08e3da00d3837fcf5b6c8cf3fcc9e0f" Version="2.0"
+ IssueInstant="2009-01-12T15:34:29Z">
+ <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">vaPepEntity
+ </saml:Issuer>
+ <xacml-context:Request
+ xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+ xmlns:xacml-context="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance/"
+ xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os http://docs.oasis-open.org/xacml/access_control-xacml-2.0-context-schema-...">
+ <xacml-context:Subject
+ SubjectCategory="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
+ <xacml-context:Attribute
+ AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>Doctor, Bob I</AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:subject:role" DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>physician</AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:subject:hl7:permission"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-010
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-012
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-017
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-005
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-003
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-009
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-006
+ </AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:oasis:names:tc:xacml:1.0:subject:locality"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>Facility A</AttributeValue>
+ </xacml-context:Attribute>
+ </xacml-context:Subject>
+ <xacml-context:Resource>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:resource:hl7:type"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>
+ urn:va:xacml:2.0:interop:rsa8:resource:hl7:medical-record
+ </AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:resource:hl7:permission"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-010
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-012
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-005
+ </AttributeValue>
+ <AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-003
+ </AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:resource:hl7:confidentiality-code"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>MA</AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:resource:hl7:radiology:dissented-subject-id"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>Doctor, Bob I</AttributeValue>
+ </xacml-context:Attribute>
+ </xacml-context:Resource>
+ <xacml-context:Action>
+ <xacml-context:Attribute
+ AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>read</AttributeValue>
+ </xacml-context:Attribute>
+ </xacml-context:Action>
+ <xacml-context:Environment>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:environment:locality"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <AttributeValue>Facility A</AttributeValue>
+ </xacml-context:Attribute>
+ </xacml-context:Environment>
+ </xacml-context:Request>
+ </xacml-samlp:XACMLAuthzDecisionQuery>
+ </soap-env:Body>
+</soap-env:Envelope>
15 years, 2 months
JBoss Identity SVN: r267 - in identity-federation/trunk: doc and 9 other directories.
by jboss-identity-commits@lists.jboss.org
Author: anil.saldhana(a)jboss.com
Date: 2009-01-30 16:39:15 -0500 (Fri, 30 Jan 2009)
New Revision: 267
Added:
identity-federation/trunk/doc/DeveloperGuide/
identity-federation/trunk/doc/DeveloperGuide/pom.xml
identity-federation/trunk/doc/DeveloperGuide/src/
identity-federation/trunk/doc/DeveloperGuide/src/main/
identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/
identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/Author_Group.xml
identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/DeveloperGuide.xml
identity-federation/trunk/doc/UserGuide/
identity-federation/trunk/doc/UserGuide/pom.xml
identity-federation/trunk/doc/UserGuide/src/
identity-federation/trunk/doc/UserGuide/src/main/
identity-federation/trunk/doc/UserGuide/src/main/docbook/
identity-federation/trunk/doc/UserGuide/src/main/docbook/Author_Group.xml
identity-federation/trunk/doc/UserGuide/src/main/docbook/UserGuide.xml
identity-federation/trunk/doc/UserGuide/src/main/docbook/images/
identity-federation/trunk/doc/UserGuide/src/main/docbook/images/HubNSpokeArchitecture.png
identity-federation/trunk/doc/pom.xml
Modified:
identity-federation/trunk/pom.xml
Log:
add the doc stuff
Added: identity-federation/trunk/doc/DeveloperGuide/pom.xml
===================================================================
--- identity-federation/trunk/doc/DeveloperGuide/pom.xml (rev 0)
+++ identity-federation/trunk/doc/DeveloperGuide/pom.xml 2009-01-30 21:39:15 UTC (rev 267)
@@ -0,0 +1,81 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.jboss.identity.federation</groupId>
+ <artifactId>Developer-Guide-${translation}</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>jdocbook</packaging>
+ <name>Developer Guide (${translation})</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.jboss.maven.plugins</groupId>
+ <artifactId>maven-jdocbook-plugin</artifactId>
+ <version>2.0.0</version>
+ <extensions>true</extensions>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-docbook-xslt</artifactId>
+ <version>1.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-jdocbook-style</artifactId>
+ <version>1.1.0</version>
+ <type>jdocbook-style</type>
+ </dependency>
+ </dependencies>
+ <configuration>
+ <sourceDocumentName>DeveloperGuide.xml</sourceDocumentName>
+ <imageResource>
+ <directory>${basedir}/src/main/docbook</directory>
+ <includes>
+ <include>${basedir}/../images/*.png</include>
+ </includes>
+ </imageResource>
+ <!--<cssResource>
+ <directory>src/main/css</directory>
+ </cssResource>-->
+ <formats>
+ <format>
+ <formatName>pdf</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
+ <finalName>DeveloperGuide.pdf</finalName>
+ </format>
+ <format>
+ <formatName>html</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <format>
+ <formatName>html_single</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <format>
+ <formatName>eclipse</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/eclipse.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ </formats>
+ <options>
+ <xincludeSupported>true</xincludeSupported>
+ <xmlTransformerType>saxon</xmlTransformerType>
+ <!-- needed for uri-resolvers; can be ommitted if using 'current' uri scheme -->
+ <!-- could also locate the docbook dependency and inspect its version... -->
+ <docbookVersion>1.72.0</docbookVersion>
+ </options>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <properties>
+ <translation>en-US</translation>
+ </properties>
+</project>
Added: identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/Author_Group.xml
===================================================================
--- identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/Author_Group.xml (rev 0)
+++ identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/Author_Group.xml 2009-01-30 21:39:15 UTC (rev 267)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<authorgroup>
+ <corpauthor>Anil Saldhana</corpauthor>
+</authorgroup>
Added: identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/DeveloperGuide.xml
===================================================================
--- identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/DeveloperGuide.xml (rev 0)
+++ identity-federation/trunk/doc/DeveloperGuide/src/main/docbook/DeveloperGuide.xml 2009-01-30 21:39:15 UTC (rev 267)
@@ -0,0 +1,474 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % RH-ENTITIES SYSTEM "Common_Config/rh-entities.ent">
+]>
+<book>
+ <bookinfo>
+ <title>JBoss Identity Federation</title>
+
+ <subtitle>Developer Guide</subtitle>
+
+ <xi:include href="Author_Group.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <releaseinfo>
+ 1.0.0.alpha1.
+ </releaseinfo>
+
+ </bookinfo>
+
+ <preface>
+ <title>What this Book Covers</title>
+
+ <para>This book aims to help you become familiar with JBoss Identity
+ Federation in order that you can use it to develop your own Federated
+ Identity based services or applications.</para>
+
+ <para>Part I 'Getting Started' introduces the federated identity
+ technologies that are provided in this product.</para>
+
+ <para>Part II 'Simple Usage' takes a look at the use cases that you can
+ implement that meets majority of requirements.</para>
+
+ <para>Part III 'Advanced Usage' goes on to look at how you can add
+ advanced features to your use cases such as trust management and XML
+ Digital Signatures.</para>
+ </preface>
+
+ <part>
+ <title>Getting Started</title>
+
+ <chapter id="overview">
+ <title>Introduction</title>
+
+ <para>JBoss Identity Federation allows you to implement SAML v2.0 based
+ services and applications. It also has support for Oasis WS-Trust based
+ applications.</para>
+
+ <para>With JBoss Identity Federation, you have the following
+ features.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SAML v2 and WS-Trust v1.3 Object Model.</para>
+ </listitem>
+
+ <listitem>
+ <para>SAML v2 Identity API.</para>
+ </listitem>
+
+ <listitem>
+ <para>SAML v2 HTTP/Redirect Binding Support for JBoss and
+ Tomcat.</para>
+ </listitem>
+
+ <listitem>
+ <para>SAML v2 HTTP/Redirect Binding Support for JBoss and Tomcat
+ with XML Signature Support.</para>
+ </listitem>
+
+ <listitem>
+ <para>WS-Trust Security Token Service (STS).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>The SAML v2 specification provides multiple profiles and bindings.
+ In this version of the product, we provide support for web browser based
+ single sign on (SSO) via HTTP/Redirect Binding. </para>
+
+ <para>An user/developer is free to implement the other profiles and
+ bindings using the object model provided in this product.</para>
+ </chapter>
+
+ <chapter>
+ <title>Simple Usage</title>
+
+ <para>In this chapter, we will look at usage of JBoss Identity
+ Federation to help you obtain a platform to implement federated identity
+ based services (including centralized identity services
+ and Single Sign-On (SSO) for applications).</para>
+
+ <section>
+ <title>Identity API for SAML v2</title>
+ <note>
+ <para>Use SAML2Request API class for creating SAML request objects.</para>
+ <para>Use SAML2Response API class for creating SAML response objects.</para>
+ </note>
+ <para>The following examples displays usage of the API provided in
+ the Identity Federation product.
+ </para>
+ <para>The SAML2Request API class can be used to create SAML2 requests
+ and convert it into XML and back using the marshall or unmarshall methods.
+ </para>
+ <programlisting>
+ import org.jboss.identity.federation.api.saml.v2.request.SAML2Request;
+ import org.jboss.identity.federation.saml.v2.protocol.LogoutRequestType;
+
+ SAML2Request saml2Request = new SAML2Request();
+
+ //We will create an AuthnRequest
+ AuthnRequestType authnRequest = request.createAuthnRequestType(
+ id, "http://sp", "http://idp", "http://sp");
+
+ //Now marshall the request into a byte array based output stream
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ request.marshall(authnRequest, baos);
+ request.marshall(authnRequest, System.out); //To Console
+
+ //Assume that we have an inputstream where we get the SAML feed
+ InputStream is = new ByteArrayInputStream(baos.toCharArray());
+ authnRequest = saml2Request.unmarshall(is);
+
+ //We will create a log out request
+ LogoutRequestType lrt = saml2Request.createLogoutRequest("http://idp");
+ </programlisting>
+ <para>SAML2Response API class can be used to create SAML2 response objects
+ as well as marshall and unmarshall to xml and back.
+ </para>
+ <programlisting>
+ import org.jboss.identity.federation.api.saml.v2.request.SAML2Response;
+
+ SAML2Response saml2Response = new SAML2Response();
+ saml2Response.createTimedConditions(assertion, this.assertionValidity)
+
+ //IssuerInfoHolder is a class for information on the Issuer of SAML Assertions
+ IssuerInfoHolder issuerHolder = new IssuerInfoHolder("http://idp");
+ issuerHolder.setStatusCode(JBossSAMLURIConstants.STATUS_SUCCESS.get());
+
+ //IDPInfoHolder is a class for information on the Identity Provider
+ IDPInfoHolder idp = new IDPInfoHolder();
+ idp.setNameIDFormatValue(IDGenerator.create());
+
+ //SPInfoHolder is a class for information on the Service Provider
+
+ ResponseType rt = JBossSAMLAuthnResponseFactory.createResponseType(
+ "response111",
+ new SPInfoHolder(), idp, issuerHolder);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ saml2Response.marshall(rt, baos);
+ </programlisting>
+ </section>
+
+ <section> <!-- Section: SAML HTTP/Redirect Binding -->
+ <title>SAML v2 HTTP/Redirect Binding</title>
+ <para>This section will talk about the configuration information to
+ support the HTTP/Redirect binding which will provide centralized
+ identity services as well as web SSO for your applications.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="../../../../images/HubNSpokeArchitecture.png" format="PNG"
+ contentwidth="6in" contentdepth="6in"/>
+ </imageobject>
+ <caption align="right">
+ <para>
+ <emphasis role="bold">Hub and Spoke Architecture for the SAML v2 based Web SSO</emphasis>
+ </para>
+ </caption>
+ </mediaobject>
+ <para>The architecture follows the Hub and Spoke architecture of Identity Management.
+ An Identity Provider (IDP) acts as the central source (hub) for identity and role
+ information to all the applications (Service Providers/SP). The spokes are the
+ Service Providers (SP).
+ </para>
+ <note>
+ <para>The IDP and the SP can be a JBoss Application Server or a Tomcat instance.
+ </para>
+ </note>
+
+
+ <section><!-- Section on configuring the Identity Provider -->
+ <title>Configuring the Identity Provider (IDP) </title>
+
+ <note>
+ <title>Check list for configuring the IDP</title>
+ <orderedlist>
+ <listitem>Configure the IDP as a secure web application.
+ </listitem>
+ <listitem>Configure the web.xml to either allow FORM or BASIC authentication.
+ </listitem>
+ <listitem>Configure the context.xml for IDP valves.
+ </listitem>
+ <listitem>Configure the jboss-idfed.xml for IDP configuration.
+ </listitem>
+ </orderedlist>
+ </note>
+
+ <para>The IDP can be a JBoss Application Server or a Tomcat instance.
+ </para>
+ <para>
+ You need to configure a web application as the Identity provider.
+ </para>
+
+
+ <section><!-- Section on configuring web app security -->
+ <title>Configure the web application security for the IDP</title>
+ <para>The web application needs to have FORM or BASIC based security enabled in its web.xml.
+ We recommend the use of FORM based web application security as it gives you the ability to
+ customize the login page.</para>
+ <para>The web.xml needs to have a configuration such as the following:
+ </para>
+ <programlisting role="XML">
+ <?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+
+ <display-name>IDP</display-name>
+ <description>IDP</description>
+
+ <!-- Define a security constraint that gives unlimited access to images -->
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Images</web-resource-name>
+ <url-pattern>/images/*</url-pattern>
+ </web-resource-collection>
+ </security-constraint>
+
+ <!-- Define a Security Constraint on this Application -->
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>IDP</web-resource-name>
+ <url-pattern>/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>manager</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <!-- Define the Login Configuration for this Application -->
+ <login-config>
+ <auth-method>FORM</auth-method>
+ <realm-name>IDP Application</realm-name>
+ <form-login-config>
+ <form-login-page>/jsp/login.jsp</form-login-page>
+ <form-error-page>/jsp/loginerror.jsp</form-error-page>
+ </form-login-config>
+ </login-config>
+
+ <!-- Security roles referenced by this web application -->
+ <security-role>
+ <description>
+ The role that is required to log in to the IDP Application
+ </description>
+ <role-name>manager</role-name>
+ </security-role>
+</web-app>
+ </programlisting>
+
+
+ <note>
+ <para> Remember to configure the realm or login modules for your IDP as per the Tomcat or
+ JBoss AS documentation on "securing your web application".
+ </para>
+ <ulink url="http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html">Tomcat Realm</ulink>
+ and
+ <ulink url="http://jboss.org/community/docs/DOC-10760">JBoss AS Security</ulink>
+ </note>
+
+
+ </section> <!-- Section on configuring web app security - IDP -->
+
+
+ <section> <!-- Configure the IDP Valves -->
+ <title>Configure the IDP Valves</title>
+ <para> Create a <emphasis role="italic">context.xml</emphasis> file for configuring
+ the valves for the IDP.
+ </para>
+ <para> The context.xml file should look like:
+ </para>
+ <programlisting role="xml">
+ <Context>
+ <Valve
+ className="org.jboss.identity.federation.bindings.tomcat.idp.IDPRedirectValve"
+ />
+ </Context>
+ </programlisting>
+
+ <note>
+ <para>If the IDP is running in Apache Tomcat, then place the context.xml in
+ <emphasis role="bold">META-INF</emphasis> of your IDP web application.
+ </para>
+ </note>
+
+ <note>
+ <para> If the IDP is running in JBoss Application Server, then place the context.xml in
+ <emphasis role="bold">WEB-INF</emphasis> of your IDP web application.
+ </para>
+ </note>
+
+ </section> <!-- Section: configure IDP valves -->
+
+ <section> <!-- Section: Configure IDFed Config File - IDP -->
+ <title>Configure the JBoss Identity Federation configuration file (jboss-idfed.xml)</title>
+ <para>Configure <emphasis role="italic">jboss-idfed.xml</emphasis> in WEB-INF of your
+ IDP web application</para>
+ <programlisting role="xml">
+ <JBossIDP xmlns="urn:jboss:identity-federation:config:1.0" >
+ <IdentityURL>http://localhost:8080/idp</IdentityURL>
+ </JBossIDP>
+ </programlisting>
+
+ <para>In this configuration file, you are providing the URL of your IDP.
+ This is the URL that gets added as the issuer in the outgoing SAML2 assertions
+ to the Service Providers.
+ </para>
+ </section><!-- End Section: Configure IDFed Config File - IDP -->
+
+ </section> <!-- End Section on configuring the Identity Provider -->
+
+
+ <section> <!-- Section:configure the SP -->
+ <title>Configure the Service Provider (SP)</title>
+ <note>
+ <title>Check List for configuring the Service Provider.
+ </title>
+ <orderedlist>
+ <listitem>Configure the SP as a secure FORM authentication based web application.
+ </listitem>
+ <listitem>Configure the web.xml of the SP web application.
+ </listitem>
+ <listitem>Configure the context.xml for the SP valves.
+ </listitem>
+ <listitem>Configure the jboss-idfed.xml for the SP configuration.
+ </listitem>
+ </orderedlist>
+ </note>
+
+
+ <para>The SP can be a JBoss Application Server or a Tomcat instance.
+ </para>
+ <para>
+ You need to configure a web application as the Service Provider(SP).
+ </para>
+
+
+ <section><!-- Section on configuring web app security -->
+ <title>Configure the web application security for the SP</title>
+ <para>The web application needs to have FORM based security enabled in its web.xml.
+ </para>
+ <para>The web.xml needs to have a configuration such as the following:
+ </para>
+
+ <programlisting role="XML">
+
+ <?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+
+ <display-name>Test SALES Application</display-name>
+ <description>
+ Just a Test SP
+ </description>
+
+ <!-- Define a Security Constraint on this Application -->
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>SALES Application</web-resource-name>
+ <url-pattern>/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>manager</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <!-- Define a security constraint that gives unlimted access to freezone -->
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>freezone</web-resource-name>
+ <url-pattern>/freezone/*</url-pattern>
+ </web-resource-collection>
+ </security-constraint>
+
+ <!-- Define the Login Configuration for this Application -->
+ <login-config>
+ <auth-method>FORM</auth-method>
+ <realm-name>Tomcat SALES Application</realm-name>
+ <form-login-config>
+ <form-login-page>/jsp/login.jsp</form-login-page>
+ <form-error-page>/jsp/loginerror.jsp</form-error-page>
+ </form-login-config>
+ </login-config>
+
+ <!-- Security roles referenced by this web application -->
+ <security-role>
+ <description>
+ The role that is required to log in to the SP Application
+ </description>
+ <role-name>manager</role-name>
+ </security-role>
+</web-app>
+
+ </programlisting>
+
+ <warning>
+ <para>
+ The SP web application should be configured with FORM based authentication.
+ </para>
+ </warning>
+
+ </section> <!-- Section on configuring web app security - SP -->
+
+
+ <section> <!-- Configure the SP Valves -->
+ <title>Configure the SP Valves</title>
+ <para> Create a <emphasis role="italic">context.xml</emphasis> file for configuring
+ the valves for the SP.
+ </para>
+ <para> The context.xml file should look like:
+ </para>
+ <programlisting role="xml">
+
+ <Context>
+ <Valve
+ className="org.jboss.identity.federation.bindings.tomcat.sp.SPRedirectFormAuthenticator"
+ />
+ </Context>
+
+ </programlisting>
+
+ <note>
+ <para>If the SP is running in Apache Tomcat, then place the context.xml in
+ <emphasis role="bold">META-INF</emphasis> of your SP web application.
+ </para>
+ </note>
+
+ <note>
+ <para> If the SP is running in JBoss Application Server, then place the context.xml in
+ <emphasis role="bold">WEB-INF</emphasis> of your SP web application.
+ </para>
+ </note>
+
+ </section> <!-- Section: configure SP valves -->
+
+ <section> <!-- Section: Configure IDFed Config File - SP -->
+ <title>Configure the JBoss Identity Federation configuration file (jboss-idfed.xml)</title>
+ <para>Configure <emphasis role="italic">jboss-idfed.xml</emphasis> in WEB-INF of your
+ SP web application</para>
+
+ <programlisting role="xml">
+
+ <JBossSP xmlns="urn:jboss:identity-federation:config:1.0">
+ <IdentityURL>http://localhost:8080/idp</IdentityURL>
+ <ServiceURL>http://localhost:8080/sales</ServiceURL>
+ </JBossSP>
+
+ </programlisting>
+
+ <para>
+ In this configuration file, we define the URLs for the service provider and
+ the identity provider.
+ </para>
+ </section><!-- End Section: Configure IDFed Config File - SP -->
+
+ </section><!-- End Section:configure the SP -->
+
+ </section><!-- End Section: SAML HTTP/Redirect Binding -->
+ </chapter>
+ </part>
+</book>
Added: identity-federation/trunk/doc/UserGuide/pom.xml
===================================================================
--- identity-federation/trunk/doc/UserGuide/pom.xml (rev 0)
+++ identity-federation/trunk/doc/UserGuide/pom.xml 2009-01-30 21:39:15 UTC (rev 267)
@@ -0,0 +1,81 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.jboss.identity.federation</groupId>
+ <artifactId>User-Guide-${translation}</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>jdocbook</packaging>
+ <name>User Guide (${translation})</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.jboss.maven.plugins</groupId>
+ <artifactId>maven-jdocbook-plugin</artifactId>
+ <version>2.0.0</version>
+ <extensions>true</extensions>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-docbook-xslt</artifactId>
+ <version>1.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-jdocbook-style</artifactId>
+ <version>1.1.0</version>
+ <type>jdocbook-style</type>
+ </dependency>
+ </dependencies>
+ <configuration>
+ <sourceDocumentName>UserGuide.xml</sourceDocumentName>
+ <imageResource>
+ <directory>${basedir}/src/main/docbook</directory>
+ <includes>
+ <include>${basedir}/../images/*.png</include>
+ </includes>
+ </imageResource>
+ <!--<cssResource>
+ <directory>src/main/css</directory>
+ </cssResource>-->
+ <formats>
+ <format>
+ <formatName>pdf</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
+ <finalName>UserGuide.pdf</finalName>
+ </format>
+ <format>
+ <formatName>html</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <format>
+ <formatName>html_single</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <format>
+ <formatName>eclipse</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/eclipse.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ </formats>
+ <options>
+ <xincludeSupported>true</xincludeSupported>
+ <xmlTransformerType>saxon</xmlTransformerType>
+ <!-- needed for uri-resolvers; can be ommitted if using 'current' uri scheme -->
+ <!-- could also locate the docbook dependency and inspect its version... -->
+ <docbookVersion>1.72.0</docbookVersion>
+ </options>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <properties>
+ <translation>en-US</translation>
+ </properties>
+</project>
Added: identity-federation/trunk/doc/UserGuide/src/main/docbook/Author_Group.xml
===================================================================
--- identity-federation/trunk/doc/UserGuide/src/main/docbook/Author_Group.xml (rev 0)
+++ identity-federation/trunk/doc/UserGuide/src/main/docbook/Author_Group.xml 2009-01-30 21:39:15 UTC (rev 267)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<authorgroup>
+ <corpauthor>Anil Saldhana</corpauthor>
+</authorgroup>
Added: identity-federation/trunk/doc/UserGuide/src/main/docbook/UserGuide.xml
===================================================================
--- identity-federation/trunk/doc/UserGuide/src/main/docbook/UserGuide.xml (rev 0)
+++ identity-federation/trunk/doc/UserGuide/src/main/docbook/UserGuide.xml 2009-01-30 21:39:15 UTC (rev 267)
@@ -0,0 +1,397 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+<!ENTITY % RH-ENTITIES SYSTEM "Common_Config/rh-entities.ent">
+]>
+<book>
+ <bookinfo>
+ <title>JBoss Identity Federation</title>
+
+ <subtitle>User Guide</subtitle>
+
+ <xi:include href="Author_Group.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <releaseinfo>
+ 1.0.0.alpha1.
+ </releaseinfo>
+
+
+ </bookinfo>
+
+ <preface>
+ <title>What this Book Covers</title>
+
+ <para>This book aims to help you become familiar with JBoss Identity
+ Federation in order that you can use it to build your own Federated
+ Identity based services or applications.</para>
+
+ <para>Part I 'Getting Started' introduces the federated identity
+ technologies that are provided in this product.</para>
+
+ <para>Part II 'Simple Usage' describes SAML v2 Web Browser based
+ Single Sign On (SSO).</para>
+
+ <para>Part III 'Advanced Usage' describes SAML v2 Web Browser based SSO
+ with advanced features such as Trust Management and XML
+ Digital Signatures.</para>
+ </preface>
+
+ <part>
+ <title>Getting Started</title>
+
+ <chapter id="overview">
+ <title>Introduction</title>
+
+ <para>JBoss Identity Federation allows you to implement SAML v2.0 based
+ services and applications. It also has support for Oasis WS-Trust based
+ applications (which is under development).</para>
+
+ <para>With JBoss Identity Federation, you have the following
+ features.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SAML v2 Web Browser SSO (HTTP/Redirect Binding) Support for
+ JBoss Application Server and Apache Tomcat.</para>
+ </listitem>
+
+ <listitem>
+ <para>SAML v2 Web Browser SSO (HTTP/Redirect Binding) Support for
+ JBoss Application Server and Apache Tomcat
+ with XML Signature Support.</para>
+ </listitem>
+ </itemizedlist>
+
+ </chapter>
+
+ <chapter>
+ <title>Simple Usage</title>
+
+ <para>In this chapter, we will look at usage of JBoss Identity
+ Federation to help you obtain a platform to implement federated identity
+ based services (including centralized identity services
+ and Single Sign-On (SSO) for applications).</para>
+
+ <section> <!-- Section: SAML HTTP/Redirect Binding -->
+ <title>SAML v2 based Web SSO</title>
+ <para>This section will talk about the configuration information to
+ support the SAML V2.0 based Web Single Sign On (SSO). The SAML profile
+ that is implemented is the HTTP/Redirect binding with centralized
+ identity services to enable web SSO for your applications.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="../../../../images/HubNSpokeArchitecture.png" format="PNG"
+ contentwidth="6in" contentdepth="6in"/>
+ </imageobject>
+ <caption align="right">
+ <para>
+ <emphasis role="bold">Hub and Spoke Architecture for the SAML v2 based Web SSO</emphasis>
+ </para>
+ </caption>
+ </mediaobject>
+ <para>The architecture follows the Hub and Spoke architecture of Identity Management.
+ An Identity Provider (IDP) acts as the central source (hub) for identity and role
+ information to all the applications (Service Providers/SP). The spokes are the
+ Service Providers (SP).
+ </para>
+ <note>
+ <para>The IDP and the SP can be a JBoss Application Server or a Tomcat instance.
+ </para>
+ </note>
+
+
+ <section><!-- Section on configuring the Identity Provider -->
+ <title>Configuring the Identity Provider (IDP) </title>
+
+ <note>
+ <title>Check list for configuring the IDP</title>
+ <orderedlist>
+ <listitem>Configure the IDP as a secure web application.
+ </listitem>
+ <listitem>Configure the web.xml to either allow FORM or BASIC authentication.
+ </listitem>
+ <listitem>Configure the context.xml for IDP valves.
+ </listitem>
+ <listitem>Configure the jboss-idfed.xml for IDP configuration.
+ </listitem>
+ </orderedlist>
+ </note>
+
+ <para>The IDP can be a JBoss Application Server or a Tomcat instance.
+ </para>
+ <para>
+ You need to configure a web application as the Identity provider.
+ </para>
+
+
+ <section><!-- Section on configuring web app security -->
+ <title>Configure the web application security for the IDP</title>
+ <para>The web application needs to have FORM or BASIC based security enabled in its web.xml.
+ We recommend the use of FORM based web application security as it gives you the ability to
+ customize the login page.</para>
+ <para>The web.xml needs to have a configuration such as the following:
+ </para>
+ <programlisting role="XML">
+ <?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+
+ <display-name>IDP</display-name>
+ <description>IDP</description>
+
+ <!-- Define a security constraint that gives unlimited access to images -->
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Images</web-resource-name>
+ <url-pattern>/images/*</url-pattern>
+ </web-resource-collection>
+ </security-constraint>
+
+ <!-- Define a Security Constraint on this Application -->
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>IDP</web-resource-name>
+ <url-pattern>/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>manager</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <!-- Define the Login Configuration for this Application -->
+ <login-config>
+ <auth-method>FORM</auth-method>
+ <realm-name>IDP Application</realm-name>
+ <form-login-config>
+ <form-login-page>/jsp/login.jsp</form-login-page>
+ <form-error-page>/jsp/loginerror.jsp</form-error-page>
+ </form-login-config>
+ </login-config>
+
+ <!-- Security roles referenced by this web application -->
+ <security-role>
+ <description>
+ The role that is required to log in to the IDP Application
+ </description>
+ <role-name>manager</role-name>
+ </security-role>
+</web-app>
+ </programlisting>
+
+
+ <note>
+ <para> Remember to configure the realm or login modules for your IDP as per the Tomcat or
+ JBoss AS documentation on "securing your web application".
+ </para>
+ <ulink url="http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html">Tomcat Realm</ulink>
+ and
+ <ulink url="http://jboss.org/community/docs/DOC-10760">JBoss AS Security</ulink>
+ </note>
+
+
+ </section> <!-- Section on configuring web app security - IDP -->
+
+
+ <section> <!-- Configure the IDP Valves -->
+ <title>Configure the IDP Valves</title>
+ <para> Create a <emphasis role="italic">context.xml</emphasis> file for configuring
+ the valves for the IDP.
+ </para>
+ <para> The context.xml file should look like:
+ </para>
+ <programlisting role="xml">
+ <Context>
+ <Valve
+ className="org.jboss.identity.federation.bindings.tomcat.idp.IDPRedirectValve"
+ />
+ </Context>
+ </programlisting>
+
+ <note>
+ <para>If the IDP is running in Apache Tomcat, then place the context.xml in
+ <emphasis role="bold">META-INF</emphasis> of your IDP web application.
+ </para>
+ </note>
+
+ <note>
+ <para> If the IDP is running in JBoss Application Server, then place the context.xml in
+ <emphasis role="bold">WEB-INF</emphasis> of your IDP web application.
+ </para>
+ </note>
+
+ </section> <!-- Section: configure IDP valves -->
+
+ <section> <!-- Section: Configure IDFed Config File - IDP -->
+ <title>Configure the JBoss Identity Federation configuration file (jboss-idfed.xml)</title>
+ <para>Configure <emphasis role="italic">jboss-idfed.xml</emphasis> in WEB-INF of your
+ IDP web application</para>
+ <programlisting role="xml">
+ <JBossIDP xmlns="urn:jboss:identity-federation:config:1.0" >
+ <IdentityURL>http://localhost:8080/idp</IdentityURL>
+ </JBossIDP>
+ </programlisting>
+
+ <para>In this configuration file, you are providing the URL of your IDP.
+ This is the URL that gets added as the issuer in the outgoing SAML2 assertions
+ to the Service Providers.
+ </para>
+ </section><!-- End Section: Configure IDFed Config File - IDP -->
+
+ </section> <!-- End Section on configuring the Identity Provider -->
+
+
+ <section> <!-- Section:configure the SP -->
+ <title>Configure the Service Provider (SP)</title>
+ <note>
+ <title>Check List for configuring the Service Provider.
+ </title>
+ <orderedlist>
+ <listitem>Configure the SP as a secure FORM authentication based web application.
+ </listitem>
+ <listitem>Configure the web.xml of the SP web application.
+ </listitem>
+ <listitem>Configure the context.xml for the SP valves.
+ </listitem>
+ <listitem>Configure the jboss-idfed.xml for the SP configuration.
+ </listitem>
+ </orderedlist>
+ </note>
+
+
+ <para>The SP can be a JBoss Application Server or a Tomcat instance.
+ </para>
+ <para>
+ You need to configure a web application as the Service Provider(SP).
+ </para>
+
+
+ <section><!-- Section on configuring web app security -->
+ <title>Configure the web application security for the SP</title>
+ <para>The web application needs to have FORM based security enabled in its web.xml.
+ </para>
+ <para>The web.xml needs to have a configuration such as the following:
+ </para>
+
+ <programlisting role="XML">
+
+ <?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+
+ <display-name>Test SALES Application</display-name>
+ <description>
+ Just a Test SP
+ </description>
+
+ <!-- Define a Security Constraint on this Application -->
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>SALES Application</web-resource-name>
+ <url-pattern>/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>manager</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <!-- Define a security constraint that gives unlimted access to freezone -->
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>freezone</web-resource-name>
+ <url-pattern>/freezone/*</url-pattern>
+ </web-resource-collection>
+ </security-constraint>
+
+ <!-- Define the Login Configuration for this Application -->
+ <login-config>
+ <auth-method>FORM</auth-method>
+ <realm-name>Tomcat SALES Application</realm-name>
+ <form-login-config>
+ <form-login-page>/jsp/login.jsp</form-login-page>
+ <form-error-page>/jsp/loginerror.jsp</form-error-page>
+ </form-login-config>
+ </login-config>
+
+ <!-- Security roles referenced by this web application -->
+ <security-role>
+ <description>
+ The role that is required to log in to the SP Application
+ </description>
+ <role-name>manager</role-name>
+ </security-role>
+</web-app>
+
+ </programlisting>
+
+ <warning>
+ <para>
+ The SP web application should be configured with FORM based authentication.
+ </para>
+ </warning>
+
+ </section> <!-- Section on configuring web app security - SP -->
+
+
+ <section> <!-- Configure the SP Valves -->
+ <title>Configure the SP Valves</title>
+ <para> Create a <emphasis role="italic">context.xml</emphasis> file for configuring
+ the valves for the SP.
+ </para>
+ <para> The context.xml file should look like:
+ </para>
+ <programlisting role="xml">
+
+ <Context>
+ <Valve
+ className="org.jboss.identity.federation.bindings.tomcat.sp.SPRedirectFormAuthenticator"
+ />
+ </Context>
+
+ </programlisting>
+
+ <note>
+ <para>If the SP is running in Apache Tomcat, then place the context.xml in
+ <emphasis role="bold">META-INF</emphasis> of your SP web application.
+ </para>
+ </note>
+
+ <note>
+ <para> If the SP is running in JBoss Application Server, then place the context.xml in
+ <emphasis role="bold">WEB-INF</emphasis> of your SP web application.
+ </para>
+ </note>
+
+ </section> <!-- Section: configure SP valves -->
+
+ <section> <!-- Section: Configure IDFed Config File - SP -->
+ <title>Configure the JBoss Identity Federation configuration file (jboss-idfed.xml)</title>
+ <para>Configure <emphasis role="italic">jboss-idfed.xml</emphasis> in WEB-INF of your
+ SP web application</para>
+
+ <programlisting role="xml">
+
+ <JBossSP xmlns="urn:jboss:identity-federation:config:1.0">
+ <IdentityURL>http://localhost:8080/idp</IdentityURL>
+ <ServiceURL>http://localhost:8080/sales</ServiceURL>
+ </JBossSP>
+
+ </programlisting>
+
+ <para>
+ In this configuration file, we define the URLs for the service provider and
+ the identity provider.
+ </para>
+ </section><!-- End Section: Configure IDFed Config File - SP -->
+
+ </section><!-- End Section:configure the SP -->
+
+ </section><!-- End Section: SAML HTTP/Redirect Binding -->
+ </chapter>
+ </part>
+</book>
Added: identity-federation/trunk/doc/UserGuide/src/main/docbook/images/HubNSpokeArchitecture.png
===================================================================
(Binary files differ)
Property changes on: identity-federation/trunk/doc/UserGuide/src/main/docbook/images/HubNSpokeArchitecture.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: identity-federation/trunk/doc/pom.xml
===================================================================
--- identity-federation/trunk/doc/pom.xml (rev 0)
+++ identity-federation/trunk/doc/pom.xml 2009-01-30 21:39:15 UTC (rev 267)
@@ -0,0 +1,20 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.jboss.identity</groupId>
+ <artifactId>jboss-identity-fed-parent</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../parent</relativePath>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.identity.federation.docs</groupId>
+ <artifactId>jboss-identity-federation-docs</artifactId>
+ <packaging>pom</packaging>
+ <name>JBoss Identity Federation Docs</name>
+ <url>http://www.jboss.com/products/jbossidentity</url>
+ <description>JBoss Identity Federation Documentation</description>
+ <modules>
+ <module>UserGuide</module>
+ <module>DeveloperGuide</module>
+ </modules>
+</project>
Modified: identity-federation/trunk/pom.xml
===================================================================
--- identity-federation/trunk/pom.xml 2009-01-30 21:20:07 UTC (rev 266)
+++ identity-federation/trunk/pom.xml 2009-01-30 21:39:15 UTC (rev 267)
@@ -20,6 +20,7 @@
<module>identity-fed-core</module>
<module>identity-fed-api</module>
<module>identity-bindings</module>
+ <module>doc</module>
<module>assembly</module>
</modules>
</project>
15 years, 2 months
JBoss Identity SVN: r266 - in identity-federation/trunk/doc: images and 1 other directory.
by jboss-identity-commits@lists.jboss.org
Author: anil.saldhana(a)jboss.com
Date: 2009-01-30 16:20:07 -0500 (Fri, 30 Jan 2009)
New Revision: 266
Added:
identity-federation/trunk/doc/images/
identity-federation/trunk/doc/images/HubNSpokeArchitecture.png
identity-federation/trunk/doc/images/HubNSpokeArchitecture.svg
identity-federation/trunk/doc/images/WS-Trust.png
identity-federation/trunk/doc/images/WS-Trust.svg
Removed:
identity-federation/trunk/doc/diagrams/
identity-federation/trunk/doc/images/HubNSpokeArchitecture.png
identity-federation/trunk/doc/images/HubNSpokeArchitecture.svg
identity-federation/trunk/doc/images/WS-Trust.png
identity-federation/trunk/doc/images/WS-Trust.svg
Log:
rename to images
Copied: identity-federation/trunk/doc/images (from rev 264, identity-federation/trunk/doc/diagrams)
Deleted: identity-federation/trunk/doc/images/HubNSpokeArchitecture.png
===================================================================
(Binary files differ)
Copied: identity-federation/trunk/doc/images/HubNSpokeArchitecture.png (from rev 265, identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.png)
===================================================================
(Binary files differ)
Deleted: identity-federation/trunk/doc/images/HubNSpokeArchitecture.svg
===================================================================
--- identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.svg 2009-01-30 18:05:07 UTC (rev 264)
+++ identity-federation/trunk/doc/images/HubNSpokeArchitecture.svg 2009-01-30 21:20:07 UTC (rev 266)
@@ -1,922 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="400"
- height="600"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="HubNSpokeArchitecture.svg"
- version="1.0"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/anil/identity/identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.png"
- inkscape:export-xdpi="92.099998"
- inkscape:export-ydpi="92.099998">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <pattern
- id="pattern3652"
- patternTransform="matrix(0.7855705,0,0,0.8102884,-40.026507,344.29146)"
- height="55.170761"
- width="93.184761"
- patternUnits="userSpaceOnUse">
- <g
- transform="translate(54.693176,-356.59338)"
- id="g3556">
- <rect
- style="opacity:1;fill:#bababa;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3558"
- width="93.184761"
- height="55.170761"
- x="-54.693176"
- y="356.59338"
- ry="0" />
- <g
- transform="translate(-75.355185,-11.774248)"
- style="fill:#e1e1e1;fill-opacity:1"
- id="g3560">
- <g
- style="fill:#e1e1e1;fill-opacity:1"
- id="g3562">
- <g
- style="fill:#e1e1e1;fill-opacity:1"
- id="g3564">
- <rect
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3566"
- width="55.187168"
- height="9.515029"
- x="57.140121"
- y="399.08557"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3568"
- width="8.801403"
- height="9.515029"
- x="44.532711"
- y="399.08557"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3570"
- width="8.801403"
- height="9.515029"
- x="33.828304"
- y="399.08557"
- ry="4.7575145" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="22.29133"
- height="9.515029"
- width="8.801403"
- id="rect3572"
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <g
- style="fill:#e1e1e1;fill-opacity:1"
- id="g3574">
- <rect
- ry="4.7575145"
- y="412.88235"
- x="57.140121"
- height="9.515029"
- width="55.187168"
- id="rect3576"
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="44.532711"
- height="9.515029"
- width="8.801403"
- id="rect3578"
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="33.828304"
- height="9.515029"
- width="8.801403"
- id="rect3580"
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3582"
- width="8.801403"
- height="9.515029"
- x="22.29133"
- y="412.88235"
- ry="4.7575145" />
- </g>
- </g>
- <g
- style="fill:#e1e1e1;fill-opacity:1"
- id="g3584"
- transform="matrix(-1,0,0,1,134.61862,-29.020838)">
- <g
- style="fill:#e1e1e1;fill-opacity:1"
- id="g3586">
- <rect
- ry="4.7575145"
- y="399.08557"
- x="57.140121"
- height="9.515029"
- width="55.187168"
- id="rect3588"
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="44.532711"
- height="9.515029"
- width="8.801403"
- id="rect3590"
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="33.828304"
- height="9.515029"
- width="8.801403"
- id="rect3592"
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3594"
- width="8.801403"
- height="9.515029"
- x="22.29133"
- y="399.08557"
- ry="4.7575145" />
- </g>
- <g
- style="fill:#e1e1e1;fill-opacity:1"
- id="g3596">
- <rect
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3598"
- width="55.187168"
- height="9.515029"
- x="57.140121"
- y="412.88235"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3600"
- width="8.801403"
- height="9.515029"
- x="44.532711"
- y="412.88235"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3602"
- width="8.801403"
- height="9.515029"
- x="33.828304"
- y="412.88235"
- ry="4.7575145" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="22.29133"
- height="9.515029"
- width="8.801403"
- id="rect3604"
- style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
- </g>
- <g
- transform="translate(-75.691592,-12.110655)"
- style="fill:#000000;fill-opacity:1"
- id="g3606"
- clip-path="url(#clipPath3457)">
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3608">
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3610">
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3612"
- width="55.187168"
- height="9.515029"
- x="57.140121"
- y="399.08557"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3614"
- width="8.801403"
- height="9.515029"
- x="44.532711"
- y="399.08557"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3616"
- width="8.801403"
- height="9.515029"
- x="33.828304"
- y="399.08557"
- ry="4.7575145" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="22.29133"
- height="9.515029"
- width="8.801403"
- id="rect3618"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3620">
- <rect
- ry="4.7575145"
- y="412.88235"
- x="57.140121"
- height="9.515029"
- width="55.187168"
- id="rect3622"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="44.532711"
- height="9.515029"
- width="8.801403"
- id="rect3624"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="33.828304"
- height="9.515029"
- width="8.801403"
- id="rect3626"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3628"
- width="8.801403"
- height="9.515029"
- x="22.29133"
- y="412.88235"
- ry="4.7575145" />
- </g>
- </g>
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3630"
- transform="matrix(-1,0,0,1,134.61862,-29.020838)">
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3632">
- <rect
- ry="4.7575145"
- y="399.08557"
- x="57.140121"
- height="9.515029"
- width="55.187168"
- id="rect3634"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="44.532711"
- height="9.515029"
- width="8.801403"
- id="rect3636"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="33.828304"
- height="9.515029"
- width="8.801403"
- id="rect3638"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3640"
- width="8.801403"
- height="9.515029"
- x="22.29133"
- y="399.08557"
- ry="4.7575145" />
- </g>
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3642">
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3644"
- width="55.187168"
- height="9.515029"
- x="57.140121"
- y="412.88235"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3646"
- width="8.801403"
- height="9.515029"
- x="44.532711"
- y="412.88235"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3648"
- width="8.801403"
- height="9.515029"
- x="33.828304"
- y="412.88235"
- ry="4.7575145" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="22.29133"
- height="9.515029"
- width="8.801403"
- id="rect3650"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
- </g>
- </g>
- </pattern>
- <clipPath
- id="clipPath3457"
- clipPathUnits="userSpaceOnUse">
- <g
- transform="translate(1.6820352,1.682036)"
- style="fill:#000000;fill-opacity:1"
- id="g3459">
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3461">
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3463">
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3465"
- width="55.187168"
- height="9.515029"
- x="57.140121"
- y="399.08557"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3467"
- width="8.801403"
- height="9.515029"
- x="44.532711"
- y="399.08557"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3469"
- width="8.801403"
- height="9.515029"
- x="33.828304"
- y="399.08557"
- ry="4.7575145" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="22.29133"
- height="9.515029"
- width="8.801403"
- id="rect3471"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3473">
- <rect
- ry="4.7575145"
- y="412.88235"
- x="57.140121"
- height="9.515029"
- width="55.187168"
- id="rect3475"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="44.532711"
- height="9.515029"
- width="8.801403"
- id="rect3477"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="33.828304"
- height="9.515029"
- width="8.801403"
- id="rect3479"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3481"
- width="8.801403"
- height="9.515029"
- x="22.29133"
- y="412.88235"
- ry="4.7575145" />
- </g>
- </g>
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3483"
- transform="matrix(-1,0,0,1,134.61862,-29.020838)">
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3485">
- <rect
- ry="4.7575145"
- y="399.08557"
- x="57.140121"
- height="9.515029"
- width="55.187168"
- id="rect3487"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="44.532711"
- height="9.515029"
- width="8.801403"
- id="rect3489"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- ry="4.7575145"
- y="399.08557"
- x="33.828304"
- height="9.515029"
- width="8.801403"
- id="rect3491"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3493"
- width="8.801403"
- height="9.515029"
- x="22.29133"
- y="399.08557"
- ry="4.7575145" />
- </g>
- <g
- style="fill:#000000;fill-opacity:1"
- id="g3495">
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3497"
- width="55.187168"
- height="9.515029"
- x="57.140121"
- y="412.88235"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3499"
- width="8.801403"
- height="9.515029"
- x="44.532711"
- y="412.88235"
- ry="4.7575145" />
- <rect
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3501"
- width="8.801403"
- height="9.515029"
- x="33.828304"
- y="412.88235"
- ry="4.7575145" />
- <rect
- ry="4.7575145"
- y="412.88235"
- x="22.29133"
- height="9.515029"
- width="8.801403"
- id="rect3503"
- style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
- </g>
- </clipPath>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2390" />
- <inkscape:perspective
- id="perspective2902"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- y2="211.3031"
- x2="576.57422"
- y1="133.76495"
- x1="575.89093"
- gradientTransform="translate(-208.2214,109.7383)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient29798"
- xlink:href="#linearGradient22094"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient22094">
- <stop
- id="stop22096"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop22098"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- y2="482.6189"
- x2="265.58069"
- y1="306.17703"
- x1="705.01263"
- gradientTransform="translate(-208.2214,109.7383)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient29800"
- xlink:href="#linearGradient22983"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient22983"
- inkscape:collect="always">
- <stop
- id="stop22985"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop22987"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- y2="949.10645"
- x2="659.70892"
- y1="400.16699"
- x1="491.75668"
- gradientTransform="translate(-220.8835,106.9245)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient29802"
- xlink:href="#linearGradient22094"
- inkscape:collect="always" />
- <linearGradient
- y2="560.5694"
- x2="379.71634"
- y1="560.5694"
- x1="253.14423"
- gradientUnits="userSpaceOnUse"
- id="linearGradient29804"
- xlink:href="#linearGradient24757"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient24757">
- <stop
- id="stop24759"
- offset="0"
- style="stop-color:#d5d5d5;stop-opacity:1;" />
- <stop
- id="stop24761"
- offset="1"
- style="stop-color:#848484;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- y2="611.48108"
- x2="306.17722"
- y1="596.63184"
- x1="309.71277"
- gradientTransform="translate(-9.015606,192.1563)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient29806"
- xlink:href="#linearGradient24757"
- inkscape:collect="always" />
- <linearGradient
- y2="654.74451"
- x2="191.44917"
- y1="654.74451"
- x1="177.95348"
- gradientTransform="translate(225.2135,-257.0333)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient29808"
- xlink:href="#linearGradient24757"
- inkscape:collect="always" />
- <inkscape:perspective
- id="perspective3461"
- inkscape:persp3d-origin="179.68343 : 156.45264 : 1"
- inkscape:vp_z="359.36685 : 234.67896 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 234.67896 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4808"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <filter
- inkscape:collect="always"
- id="filter5537">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="40.093532"
- id="feGaussianBlur5539" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.35"
- inkscape:cx="375"
- inkscape:cy="309.885"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1680"
- inkscape:window-height="972"
- inkscape:window-x="-5"
- inkscape:window-y="-3" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- sodipodi:type="arc"
- id="path3684"
- sodipodi:cx="165.71428"
- sodipodi:cy="284.28571"
- sodipodi:rx="977.14288"
- sodipodi:ry="664.28571"
- d="M 1142.8572,284.28571 A 977.14288,664.28571 0 1 1 -811.4286,284.28571 A 977.14288,664.28571 0 1 1 1142.8572,284.28571 z"
- style="fill:#000000;fill-opacity:0.24842769000000001;fill-rule:evenodd;filter:url(#filter5537)"
- transform="matrix(0.998538,0,0,1.316129,-12.614871,-88.442392)"
- inkscape:export-xdpi="92.099998"
- inkscape:export-ydpi="92.099998"
- inkscape:export-filename="/home/anil/identity/identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.png" />
- <g
- transform="matrix(1.0715544,0,0,0.9939127,-244.74484,-205.5078)"
- id="g3479"
- inkscape:label="Layer 1">
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\documents and settings\602654809\My Documents\My Icons\text9507.png"
- transform="matrix(0.952519,0,0,0.806306,78.74153,104.8958)"
- id="g29774">
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 154.75,296.11218 L 363.75,243.61218 L 531.5,249.36218 L 528.5,612.61218 L 403.25,825.61218 L 169.5,769.11218 L 154.75,296.11218 z"
- id="path29776" />
- <g
- id="g29778">
- <path
- sodipodi:nodetypes="ccccc"
- id="path29780"
- d="M 363.70083,243.50326 L 531.9118,249.63086 L 404.09406,306.03452 L 154.77598,296.26206 L 363.70083,243.50326 z"
- style="fill:url(#linearGradient29798);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path29782"
- d="M 531.39497,249.13188 L 528.29145,612.11242 L 403.25401,825.07754 L 403.42554,305.81484 L 531.39497,249.13188 z"
- style="fill:url(#linearGradient29800);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path29784"
- d="M 154.6313,296.25873 L 403.64607,305.63904 L 403.47362,825.23045 L 169.928,768.9544 L 154.6313,296.25873 z"
- style="fill:url(#linearGradient29802);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path29786"
- d="M 253.14422,300.00056 L 377.59503,304.59676 L 380.06989,819.3705 L 346.77522,811.59232 L 253.14422,300.00056 z"
- style="fill:url(#linearGradient29804);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path29788"
- d="M 169.8824,768.98913 L 169.35209,752.90246 L 403.05086,806.28906 L 402.99021,824.67381 L 169.8824,768.98913 z"
- style="fill:url(#linearGradient29806);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path29790"
- d="M 403.75796,306.01097 L 416.66267,300.5309 L 416.66265,803.28386 L 403.16698,824.85059 L 403.75796,306.01097 z"
- style="fill:url(#linearGradient29808);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path29792"
- d="M 352.15947,337.77874 L 391.73926,340.00093 L 390.97756,351.6339 L 351.56225,349.37156 L 352.15947,337.77874 z"
- style="fill:#3c36d3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path29794"
- d="M 352.15947,371.93927 L 391.73926,374.16146 L 390.97756,385.79444 L 351.56225,383.53209 L 352.15947,371.93927 z"
- style="fill:#3c36d3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path29796"
- d="M 352.15947,406.0998 L 391.73926,408.32199 L 390.97757,419.95497 L 351.56225,417.69262 L 352.15947,406.0998 z"
- style="fill:#3c36d3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
- </g>
- <flowRoot
- xml:space="preserve"
- id="flowRoot3497"
- style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:40px;-inkscape-font-specification:Sans;font-stretch:normal;font-variant:normal"><flowRegion
- id="flowRegion3499"><rect
- id="rect3502"
- width="68.571426"
- height="228.57143"
- x="60"
- y="-282.85715" /></flowRegion><flowPara
- id="flowPara3504"></flowPara></flowRoot> <flowRoot
- xml:space="preserve"
- id="flowRoot3506"
- style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:40px;-inkscape-font-specification:Sans;font-stretch:normal;font-variant:normal"><flowRegion
- id="flowRegion3508"><rect
- id="rect3510"
- width="674.28571"
- height="157.14285"
- x="-145.71428"
- y="-317.14285" /></flowRegion><flowPara
- id="flowPara3512"></flowPara></flowRoot> <image
- y="-13.357134"
- x="1005.3572"
- id="image4810"
- height="392.42856"
- width="237.85715"
- sodipodi:absref="/tmp/ocal-H0N3NU-buggi_server.png"
- xlink:href="/tmp/ocal-H0N3NU-buggi_server.png" />
- <image
- y="29.500013"
- x="-893.21429"
- id="image4814"
- height="392.42856"
- width="237.85715"
- sodipodi:absref="/tmp/ocal-H0N3NU-buggi_server.png"
- xlink:href="/tmp/ocal-H0N3NU-buggi_server.png" />
- <image
- y="-710.5"
- x="72.500038"
- id="image4816"
- height="392.42856"
- width="237.85715"
- sodipodi:absref="/tmp/ocal-H0N3NU-buggi_server.png"
- xlink:href="/tmp/ocal-H0N3NU-buggi_server.png" />
- <image
- y="972.35718"
- x="55.357117"
- id="image4818"
- height="392.42856"
- width="237.85715"
- sodipodi:absref="/tmp/ocal-H0N3NU-buggi_server.png"
- xlink:href="/tmp/ocal-H0N3NU-buggi_server.png" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:22.6469841;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -646.8908,193.10921 L -1.6806355,338.31937"
- id="path4840"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:26.39681625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 202.15873,-319.30159 L 194.98412,99.301592"
- id="path5363"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:25.55309296;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 377.4194,296.86631 L 1005.4378,263.13369"
- id="path5365"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:25.74223518;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 216.77174,971.05745 L 208.94255,543.22826"
- id="path5367"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
- x="-440.85715"
- y="680.28571"
- id="text3493"><tspan
- sodipodi:role="line"
- id="tspan3495"
- x="-440.85715"
- y="680.28571"
- style="font-size:72px">Identity Provider</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:72;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
- x="1337.1429"
- y="162.85715"
- id="text5369"><tspan
- sodipodi:role="line"
- id="tspan5371"
- x="1337.1429"
- y="162.85715">Service </tspan><tspan
- sodipodi:role="line"
- x="1337.1429"
- y="212.85715"
- id="tspan5373">Provider</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:72px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
- x="-1219.1984"
- y="110.41322"
- id="text5375"><tspan
- sodipodi:role="line"
- id="tspan5377"
- x="-1219.1984"
- y="110.41322">Service </tspan><tspan
- sodipodi:role="line"
- x="-1219.1984"
- y="200.41319"
- id="tspan5379">Provider</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:72px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
- x="-324.91266"
- y="1236.1276"
- id="text5381"><tspan
- sodipodi:role="line"
- id="tspan5383"
- x="-324.91266"
- y="1236.1276">Service </tspan><tspan
- sodipodi:role="line"
- x="-324.91266"
- y="1326.1276"
- id="tspan5385">Provider</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:72px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
- x="455.08737"
- y="-638.1582"
- id="text5387"><tspan
- sodipodi:role="line"
- id="tspan5389"
- x="455.08737"
- y="-638.1582">Service </tspan><tspan
- sodipodi:role="line"
- x="455.08737"
- y="-548.1582"
- id="tspan5391">Provider</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:56;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans Italic"
- x="948.57141"
- y="897.14288"
- id="text5541"><tspan
- sodipodi:role="line"
- id="tspan5543"
- x="948.57141"
- y="897.14288">Circle Of Trust</tspan></text>
- </g>
-</svg>
Copied: identity-federation/trunk/doc/images/HubNSpokeArchitecture.svg (from rev 265, identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.svg)
===================================================================
--- identity-federation/trunk/doc/images/HubNSpokeArchitecture.svg (rev 0)
+++ identity-federation/trunk/doc/images/HubNSpokeArchitecture.svg 2009-01-30 21:20:07 UTC (rev 266)
@@ -0,0 +1,922 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="400"
+ height="600"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="HubNSpokeArchitecture.svg"
+ version="1.0"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/anil/identity/identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.png"
+ inkscape:export-xdpi="9.497488"
+ inkscape:export-ydpi="9.497488">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <pattern
+ id="pattern3652"
+ patternTransform="matrix(0.7855705,0,0,0.8102884,-40.026507,344.29146)"
+ height="55.170761"
+ width="93.184761"
+ patternUnits="userSpaceOnUse">
+ <g
+ transform="translate(54.693176,-356.59338)"
+ id="g3556">
+ <rect
+ style="opacity:1;fill:#bababa;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3558"
+ width="93.184761"
+ height="55.170761"
+ x="-54.693176"
+ y="356.59338"
+ ry="0" />
+ <g
+ transform="translate(-75.355185,-11.774248)"
+ style="fill:#e1e1e1;fill-opacity:1"
+ id="g3560">
+ <g
+ style="fill:#e1e1e1;fill-opacity:1"
+ id="g3562">
+ <g
+ style="fill:#e1e1e1;fill-opacity:1"
+ id="g3564">
+ <rect
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3566"
+ width="55.187168"
+ height="9.515029"
+ x="57.140121"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3568"
+ width="8.801403"
+ height="9.515029"
+ x="44.532711"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3570"
+ width="8.801403"
+ height="9.515029"
+ x="33.828304"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="22.29133"
+ height="9.515029"
+ width="8.801403"
+ id="rect3572"
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ style="fill:#e1e1e1;fill-opacity:1"
+ id="g3574">
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="57.140121"
+ height="9.515029"
+ width="55.187168"
+ id="rect3576"
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="44.532711"
+ height="9.515029"
+ width="8.801403"
+ id="rect3578"
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="33.828304"
+ height="9.515029"
+ width="8.801403"
+ id="rect3580"
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3582"
+ width="8.801403"
+ height="9.515029"
+ x="22.29133"
+ y="412.88235"
+ ry="4.7575145" />
+ </g>
+ </g>
+ <g
+ style="fill:#e1e1e1;fill-opacity:1"
+ id="g3584"
+ transform="matrix(-1,0,0,1,134.61862,-29.020838)">
+ <g
+ style="fill:#e1e1e1;fill-opacity:1"
+ id="g3586">
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="57.140121"
+ height="9.515029"
+ width="55.187168"
+ id="rect3588"
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="44.532711"
+ height="9.515029"
+ width="8.801403"
+ id="rect3590"
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="33.828304"
+ height="9.515029"
+ width="8.801403"
+ id="rect3592"
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3594"
+ width="8.801403"
+ height="9.515029"
+ x="22.29133"
+ y="399.08557"
+ ry="4.7575145" />
+ </g>
+ <g
+ style="fill:#e1e1e1;fill-opacity:1"
+ id="g3596">
+ <rect
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3598"
+ width="55.187168"
+ height="9.515029"
+ x="57.140121"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3600"
+ width="8.801403"
+ height="9.515029"
+ x="44.532711"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3602"
+ width="8.801403"
+ height="9.515029"
+ x="33.828304"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="22.29133"
+ height="9.515029"
+ width="8.801403"
+ id="rect3604"
+ style="opacity:0.6927711;fill:#e1e1e1;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ </g>
+ <g
+ transform="translate(-75.691592,-12.110655)"
+ style="fill:#000000;fill-opacity:1"
+ id="g3606"
+ clip-path="url(#clipPath3457)">
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3608">
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3610">
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3612"
+ width="55.187168"
+ height="9.515029"
+ x="57.140121"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3614"
+ width="8.801403"
+ height="9.515029"
+ x="44.532711"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3616"
+ width="8.801403"
+ height="9.515029"
+ x="33.828304"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="22.29133"
+ height="9.515029"
+ width="8.801403"
+ id="rect3618"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3620">
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="57.140121"
+ height="9.515029"
+ width="55.187168"
+ id="rect3622"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="44.532711"
+ height="9.515029"
+ width="8.801403"
+ id="rect3624"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="33.828304"
+ height="9.515029"
+ width="8.801403"
+ id="rect3626"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3628"
+ width="8.801403"
+ height="9.515029"
+ x="22.29133"
+ y="412.88235"
+ ry="4.7575145" />
+ </g>
+ </g>
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3630"
+ transform="matrix(-1,0,0,1,134.61862,-29.020838)">
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3632">
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="57.140121"
+ height="9.515029"
+ width="55.187168"
+ id="rect3634"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="44.532711"
+ height="9.515029"
+ width="8.801403"
+ id="rect3636"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="33.828304"
+ height="9.515029"
+ width="8.801403"
+ id="rect3638"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3640"
+ width="8.801403"
+ height="9.515029"
+ x="22.29133"
+ y="399.08557"
+ ry="4.7575145" />
+ </g>
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3642">
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3644"
+ width="55.187168"
+ height="9.515029"
+ x="57.140121"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3646"
+ width="8.801403"
+ height="9.515029"
+ x="44.532711"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3648"
+ width="8.801403"
+ height="9.515029"
+ x="33.828304"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="22.29133"
+ height="9.515029"
+ width="8.801403"
+ id="rect3650"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ </g>
+ </g>
+ </pattern>
+ <clipPath
+ id="clipPath3457"
+ clipPathUnits="userSpaceOnUse">
+ <g
+ transform="translate(1.6820352,1.682036)"
+ style="fill:#000000;fill-opacity:1"
+ id="g3459">
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3461">
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3463">
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3465"
+ width="55.187168"
+ height="9.515029"
+ x="57.140121"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3467"
+ width="8.801403"
+ height="9.515029"
+ x="44.532711"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3469"
+ width="8.801403"
+ height="9.515029"
+ x="33.828304"
+ y="399.08557"
+ ry="4.7575145" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="22.29133"
+ height="9.515029"
+ width="8.801403"
+ id="rect3471"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3473">
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="57.140121"
+ height="9.515029"
+ width="55.187168"
+ id="rect3475"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="44.532711"
+ height="9.515029"
+ width="8.801403"
+ id="rect3477"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="33.828304"
+ height="9.515029"
+ width="8.801403"
+ id="rect3479"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3481"
+ width="8.801403"
+ height="9.515029"
+ x="22.29133"
+ y="412.88235"
+ ry="4.7575145" />
+ </g>
+ </g>
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3483"
+ transform="matrix(-1,0,0,1,134.61862,-29.020838)">
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3485">
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="57.140121"
+ height="9.515029"
+ width="55.187168"
+ id="rect3487"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="44.532711"
+ height="9.515029"
+ width="8.801403"
+ id="rect3489"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ ry="4.7575145"
+ y="399.08557"
+ x="33.828304"
+ height="9.515029"
+ width="8.801403"
+ id="rect3491"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3493"
+ width="8.801403"
+ height="9.515029"
+ x="22.29133"
+ y="399.08557"
+ ry="4.7575145" />
+ </g>
+ <g
+ style="fill:#000000;fill-opacity:1"
+ id="g3495">
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3497"
+ width="55.187168"
+ height="9.515029"
+ x="57.140121"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3499"
+ width="8.801403"
+ height="9.515029"
+ x="44.532711"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3501"
+ width="8.801403"
+ height="9.515029"
+ x="33.828304"
+ y="412.88235"
+ ry="4.7575145" />
+ <rect
+ ry="4.7575145"
+ y="412.88235"
+ x="22.29133"
+ height="9.515029"
+ width="8.801403"
+ id="rect3503"
+ style="opacity:0.6927711;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ </g>
+ </clipPath>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective2390" />
+ <inkscape:perspective
+ id="perspective2902"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ y2="211.3031"
+ x2="576.57422"
+ y1="133.76495"
+ x1="575.89093"
+ gradientTransform="translate(-208.2214,109.7383)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient29798"
+ xlink:href="#linearGradient22094"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient22094">
+ <stop
+ id="stop22096"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop22098"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ y2="482.6189"
+ x2="265.58069"
+ y1="306.17703"
+ x1="705.01263"
+ gradientTransform="translate(-208.2214,109.7383)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient29800"
+ xlink:href="#linearGradient22983"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient22983"
+ inkscape:collect="always">
+ <stop
+ id="stop22985"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop22987"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ y2="949.10645"
+ x2="659.70892"
+ y1="400.16699"
+ x1="491.75668"
+ gradientTransform="translate(-220.8835,106.9245)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient29802"
+ xlink:href="#linearGradient22094"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="560.5694"
+ x2="379.71634"
+ y1="560.5694"
+ x1="253.14423"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient29804"
+ xlink:href="#linearGradient24757"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient24757">
+ <stop
+ id="stop24759"
+ offset="0"
+ style="stop-color:#d5d5d5;stop-opacity:1;" />
+ <stop
+ id="stop24761"
+ offset="1"
+ style="stop-color:#848484;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ y2="611.48108"
+ x2="306.17722"
+ y1="596.63184"
+ x1="309.71277"
+ gradientTransform="translate(-9.015606,192.1563)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient29806"
+ xlink:href="#linearGradient24757"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="654.74451"
+ x2="191.44917"
+ y1="654.74451"
+ x1="177.95348"
+ gradientTransform="translate(225.2135,-257.0333)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient29808"
+ xlink:href="#linearGradient24757"
+ inkscape:collect="always" />
+ <inkscape:perspective
+ id="perspective3461"
+ inkscape:persp3d-origin="179.68343 : 156.45264 : 1"
+ inkscape:vp_z="359.36685 : 234.67896 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 234.67896 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4808"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <filter
+ inkscape:collect="always"
+ id="filter5537">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="40.093532"
+ id="feGaussianBlur5539" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="375"
+ inkscape:cy="309.885"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="972"
+ inkscape:window-x="-5"
+ inkscape:window-y="-3" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ id="path3684"
+ sodipodi:cx="165.71428"
+ sodipodi:cy="284.28571"
+ sodipodi:rx="977.14288"
+ sodipodi:ry="664.28571"
+ d="M 1142.8572,284.28571 A 977.14288,664.28571 0 1 1 -811.4286,284.28571 A 977.14288,664.28571 0 1 1 1142.8572,284.28571 z"
+ style="fill:#000000;fill-opacity:0.24842769000000001;fill-rule:evenodd;filter:url(#filter5537)"
+ transform="matrix(0.998538,0,0,1.316129,-12.614871,-88.442392)"
+ inkscape:export-xdpi="92.099998"
+ inkscape:export-ydpi="92.099998"
+ inkscape:export-filename="/home/anil/identity/identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.png" />
+ <g
+ transform="matrix(1.0715544,0,0,0.9939127,-244.74484,-205.5078)"
+ id="g3479"
+ inkscape:label="Layer 1">
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="c:\documents and settings\602654809\My Documents\My Icons\text9507.png"
+ transform="matrix(0.952519,0,0,0.806306,78.74153,104.8958)"
+ id="g29774">
+ <path
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 154.75,296.11218 L 363.75,243.61218 L 531.5,249.36218 L 528.5,612.61218 L 403.25,825.61218 L 169.5,769.11218 L 154.75,296.11218 z"
+ id="path29776" />
+ <g
+ id="g29778">
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29780"
+ d="M 363.70083,243.50326 L 531.9118,249.63086 L 404.09406,306.03452 L 154.77598,296.26206 L 363.70083,243.50326 z"
+ style="fill:url(#linearGradient29798);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29782"
+ d="M 531.39497,249.13188 L 528.29145,612.11242 L 403.25401,825.07754 L 403.42554,305.81484 L 531.39497,249.13188 z"
+ style="fill:url(#linearGradient29800);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29784"
+ d="M 154.6313,296.25873 L 403.64607,305.63904 L 403.47362,825.23045 L 169.928,768.9544 L 154.6313,296.25873 z"
+ style="fill:url(#linearGradient29802);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29786"
+ d="M 253.14422,300.00056 L 377.59503,304.59676 L 380.06989,819.3705 L 346.77522,811.59232 L 253.14422,300.00056 z"
+ style="fill:url(#linearGradient29804);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29788"
+ d="M 169.8824,768.98913 L 169.35209,752.90246 L 403.05086,806.28906 L 402.99021,824.67381 L 169.8824,768.98913 z"
+ style="fill:url(#linearGradient29806);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29790"
+ d="M 403.75796,306.01097 L 416.66267,300.5309 L 416.66265,803.28386 L 403.16698,824.85059 L 403.75796,306.01097 z"
+ style="fill:url(#linearGradient29808);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29792"
+ d="M 352.15947,337.77874 L 391.73926,340.00093 L 390.97756,351.6339 L 351.56225,349.37156 L 352.15947,337.77874 z"
+ style="fill:#3c36d3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29794"
+ d="M 352.15947,371.93927 L 391.73926,374.16146 L 390.97756,385.79444 L 351.56225,383.53209 L 352.15947,371.93927 z"
+ style="fill:#3c36d3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path29796"
+ d="M 352.15947,406.0998 L 391.73926,408.32199 L 390.97757,419.95497 L 351.56225,417.69262 L 352.15947,406.0998 z"
+ style="fill:#3c36d3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ </g>
+ </g>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot3497"
+ style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:40px;-inkscape-font-specification:Sans;font-stretch:normal;font-variant:normal"><flowRegion
+ id="flowRegion3499"><rect
+ id="rect3502"
+ width="68.571426"
+ height="228.57143"
+ x="60"
+ y="-282.85715" /></flowRegion><flowPara
+ id="flowPara3504" /></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot3506"
+ style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:40px;-inkscape-font-specification:Sans;font-stretch:normal;font-variant:normal"><flowRegion
+ id="flowRegion3508"><rect
+ id="rect3510"
+ width="674.28571"
+ height="157.14285"
+ x="-145.71428"
+ y="-317.14285" /></flowRegion><flowPara
+ id="flowPara3512" /></flowRoot> <image
+ y="-13.357134"
+ x="1005.3572"
+ id="image4810"
+ height="392.42856"
+ width="237.85715"
+ sodipodi:absref="/tmp/ocal-H0N3NU-buggi_server.png"
+ xlink:href="/tmp/ocal-H0N3NU-buggi_server.png" />
+ <image
+ y="29.500013"
+ x="-893.21429"
+ id="image4814"
+ height="392.42856"
+ width="237.85715"
+ sodipodi:absref="/tmp/ocal-H0N3NU-buggi_server.png"
+ xlink:href="/tmp/ocal-H0N3NU-buggi_server.png" />
+ <image
+ y="-710.5"
+ x="72.500038"
+ id="image4816"
+ height="392.42856"
+ width="237.85715"
+ sodipodi:absref="/tmp/ocal-H0N3NU-buggi_server.png"
+ xlink:href="/tmp/ocal-H0N3NU-buggi_server.png" />
+ <image
+ y="972.35718"
+ x="55.357117"
+ id="image4818"
+ height="392.42856"
+ width="237.85715"
+ sodipodi:absref="/tmp/ocal-H0N3NU-buggi_server.png"
+ xlink:href="/tmp/ocal-H0N3NU-buggi_server.png" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:22.6469841;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M -646.8908,193.10921 L -1.6806355,338.31937"
+ id="path4840"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:26.39681625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 202.15873,-319.30159 L 194.98412,99.301592"
+ id="path5363"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:25.55309296;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 377.4194,296.86631 L 1005.4378,263.13369"
+ id="path5365"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:25.74223518;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 216.77174,971.05745 L 208.94255,543.22826"
+ id="path5367"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
+ x="-440.85715"
+ y="680.28571"
+ id="text3493"><tspan
+ sodipodi:role="line"
+ id="tspan3495"
+ x="-440.85715"
+ y="680.28571"
+ style="font-size:72px">Identity Provider</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:72;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
+ x="1337.1429"
+ y="162.85715"
+ id="text5369"><tspan
+ sodipodi:role="line"
+ id="tspan5371"
+ x="1337.1429"
+ y="162.85715">Service </tspan><tspan
+ sodipodi:role="line"
+ x="1337.1429"
+ y="212.85715"
+ id="tspan5373">Provider</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:72px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
+ x="-1219.1984"
+ y="110.41322"
+ id="text5375"><tspan
+ sodipodi:role="line"
+ id="tspan5377"
+ x="-1219.1984"
+ y="110.41322">Service </tspan><tspan
+ sodipodi:role="line"
+ x="-1219.1984"
+ y="200.41319"
+ id="tspan5379">Provider</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:72px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
+ x="-324.91266"
+ y="1236.1276"
+ id="text5381"><tspan
+ sodipodi:role="line"
+ id="tspan5383"
+ x="-324.91266"
+ y="1236.1276">Service </tspan><tspan
+ sodipodi:role="line"
+ x="-324.91266"
+ y="1326.1276"
+ id="tspan5385">Provider</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:72px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans"
+ x="455.08737"
+ y="-638.1582"
+ id="text5387"><tspan
+ sodipodi:role="line"
+ id="tspan5389"
+ x="455.08737"
+ y="-638.1582">Service </tspan><tspan
+ sodipodi:role="line"
+ x="455.08737"
+ y="-548.1582"
+ id="tspan5391">Provider</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:56;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans;-inkscape-font-specification:Sans Italic"
+ x="948.57141"
+ y="897.14288"
+ id="text5541"><tspan
+ sodipodi:role="line"
+ id="tspan5543"
+ x="948.57141"
+ y="897.14288">Circle Of Trust</tspan></text>
+ </g>
+</svg>
Deleted: identity-federation/trunk/doc/images/WS-Trust.png
===================================================================
(Binary files differ)
Copied: identity-federation/trunk/doc/images/WS-Trust.png (from rev 265, identity-federation/trunk/doc/diagrams/WS-Trust.png)
===================================================================
(Binary files differ)
Deleted: identity-federation/trunk/doc/images/WS-Trust.svg
===================================================================
--- identity-federation/trunk/doc/diagrams/WS-Trust.svg 2009-01-30 18:05:07 UTC (rev 264)
+++ identity-federation/trunk/doc/images/WS-Trust.svg 2009-01-30 21:20:07 UTC (rev 266)
@@ -1,256 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448819"
- height="1052.3622047"
- id="svg2278"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/sneusatz/Documents"
- sodipodi:docname="WS-Trust.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2280">
- <marker
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Mend"
- style="overflow:visible;">
- <path
- id="path3393"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
- transform="scale(0.4) rotate(180) translate(10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mend"
- style="overflow:visible;">
- <path
- id="path4639"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) rotate(180) translate(0,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.979899"
- inkscape:cx="280.27843"
- inkscape:cy="904.51879"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1680"
- inkscape:window-height="975"
- inkscape:window-x="0"
- inkscape:window-y="25" />
- <metadata
- id="metadata2283">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <rect
- style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2364"
- width="120.87989"
- height="37.366081"
- x="114.39082"
- y="85.590469" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
- x="119.71935"
- y="107.08214"
- id="text2366"
- transform="scale(0.9997832,1.0002168)"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan2368"
- x="119.71935"
- y="107.08214"
- style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SecurityTokenService</tspan></text>
- <rect
- style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2370"
- width="149"
- height="37.366081"
- x="-176.70224"
- y="283.39084"
- transform="matrix(0,-1,1,0,0,0)" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
- x="-162.58681"
- y="305.29431"
- id="text2372"
- transform="matrix(0,-0.9997832,1.0002168,0,0,0)"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan2374"
- x="-162.58681"
- y="305.29431"
- style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">WSTrustRequestHandler</tspan></text>
- <rect
- style="fill:#f2f2f2;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2376"
- width="149"
- height="37.366081"
- x="-176.70224"
- y="369.19522"
- transform="matrix(0,-1,1,0,0,0)" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
- x="-166.73189"
- y="390.7197"
- id="text2378"
- transform="matrix(0,-0.9997832,1.0002168,0,0,0)"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan2380"
- x="-166.73189"
- y="390.7197"
- style="font-size:10px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SecurityTokenProvider</tspan></text>
- <rect
- style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2400"
- width="128.45604"
- height="37.366081"
- x="415.39084"
- y="27.336153" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
- x="428.2323"
- y="50.10178"
- id="text2384"
- transform="scale(0.9997832,1.0002168)"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan2386"
- x="428.2323"
- y="50.10178"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SAMLTokenProvider</tspan></text>
- <rect
- style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2388"
- width="128.45604"
- height="37.366081"
- x="415.84702"
- y="83.630661" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
- x="421.24091"
- y="105.12284"
- id="text2390"
- transform="scale(0.9997832,1.0002168)"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan2392"
- x="421.24091"
- y="105.12284"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">KerberosTokenProvider</tspan></text>
- <rect
- style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2402"
- width="128.45604"
- height="37.366081"
- x="415.39084"
- y="139.33615" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
- x="428.78638"
- y="160.81628"
- id="text2396"
- transform="scale(0.9997832,1.0002168)"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan2398"
- x="428.78638"
- y="160.81628"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">X509TokenProvider</tspan></text>
- <rect
- style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2404"
- width="120.87989"
- height="37.366081"
- x="116.15571"
- y="139.33615" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
- x="131.48674"
- y="160.81599"
- id="text2406"
- transform="scale(0.9997832,1.0002168)"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan2408"
- x="131.48674"
- y="160.81599"
- style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">STSConfiguration</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 23.640821,102.45224 L 112.64108,102.45224"
- id="path2410" />
- <text
- xml:space="preserve"
- style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
- x="44.951794"
- y="99.504036"
- id="text3579"><tspan
- sodipodi:role="line"
- id="tspan3581"
- x="44.951794"
- y="99.504036">WS-Trust</tspan><tspan
- sodipodi:role="line"
- x="44.951794"
- y="112.00404"
- id="tspan3583">Request</tspan></text>
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 235.19861,102.53452 L 281.07626,102.53452"
- id="path3585" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 320.57633,102.02944 L 367.40863,102.02944"
- id="path3589" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 179.30208,123.33131 L 179.30208,139.8215"
- id="path3591" />
- </g>
-</svg>
Copied: identity-federation/trunk/doc/images/WS-Trust.svg (from rev 265, identity-federation/trunk/doc/diagrams/WS-Trust.svg)
===================================================================
--- identity-federation/trunk/doc/images/WS-Trust.svg (rev 0)
+++ identity-federation/trunk/doc/images/WS-Trust.svg 2009-01-30 21:20:07 UTC (rev 266)
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2278"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ sodipodi:docbase="/home/sneusatz/Documents"
+ sodipodi:docname="WS-Trust.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs2280">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Mend"
+ style="overflow:visible;">
+ <path
+ id="path3393"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+ transform="scale(0.4) rotate(180) translate(10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Mend"
+ style="overflow:visible;">
+ <path
+ id="path4639"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(0.6) rotate(180) translate(0,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="280.27843"
+ inkscape:cy="904.51879"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="975"
+ inkscape:window-x="0"
+ inkscape:window-y="25" />
+ <metadata
+ id="metadata2283">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2364"
+ width="120.87989"
+ height="37.366081"
+ x="114.39082"
+ y="85.590469" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="119.71935"
+ y="107.08214"
+ id="text2366"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2368"
+ x="119.71935"
+ y="107.08214"
+ style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SecurityTokenService</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2370"
+ width="149"
+ height="37.366081"
+ x="-176.70224"
+ y="283.39084"
+ transform="matrix(0,-1,1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="-162.58681"
+ y="305.29431"
+ id="text2372"
+ transform="matrix(0,-0.9997832,1.0002168,0,0,0)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2374"
+ x="-162.58681"
+ y="305.29431"
+ style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">WSTrustRequestHandler</tspan></text>
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2376"
+ width="149"
+ height="37.366081"
+ x="-176.70224"
+ y="369.19522"
+ transform="matrix(0,-1,1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="-166.73189"
+ y="390.7197"
+ id="text2378"
+ transform="matrix(0,-0.9997832,1.0002168,0,0,0)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2380"
+ x="-166.73189"
+ y="390.7197"
+ style="font-size:10px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SecurityTokenProvider</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2400"
+ width="128.45604"
+ height="37.366081"
+ x="415.39084"
+ y="27.336153" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="428.2323"
+ y="50.10178"
+ id="text2384"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2386"
+ x="428.2323"
+ y="50.10178"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SAMLTokenProvider</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2388"
+ width="128.45604"
+ height="37.366081"
+ x="415.84702"
+ y="83.630661" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="421.24091"
+ y="105.12284"
+ id="text2390"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2392"
+ x="421.24091"
+ y="105.12284"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">KerberosTokenProvider</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2402"
+ width="128.45604"
+ height="37.366081"
+ x="415.39084"
+ y="139.33615" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="428.78638"
+ y="160.81628"
+ id="text2396"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2398"
+ x="428.78638"
+ y="160.81628"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">X509TokenProvider</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2404"
+ width="120.87989"
+ height="37.366081"
+ x="116.15571"
+ y="139.33615" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="131.48674"
+ y="160.81599"
+ id="text2406"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2408"
+ x="131.48674"
+ y="160.81599"
+ style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">STSConfiguration</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 23.640821,102.45224 L 112.64108,102.45224"
+ id="path2410" />
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="44.951794"
+ y="99.504036"
+ id="text3579"><tspan
+ sodipodi:role="line"
+ id="tspan3581"
+ x="44.951794"
+ y="99.504036">WS-Trust</tspan><tspan
+ sodipodi:role="line"
+ x="44.951794"
+ y="112.00404"
+ id="tspan3583">Request</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 235.19861,102.53452 L 281.07626,102.53452"
+ id="path3585" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 320.57633,102.02944 L 367.40863,102.02944"
+ id="path3589" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 179.30208,123.33131 L 179.30208,139.8215"
+ id="path3591" />
+ </g>
+</svg>
15 years, 2 months
JBoss Identity SVN: r265 - identity-federation/trunk/doc/diagrams.
by jboss-identity-commits@lists.jboss.org
Author: anil.saldhana(a)jboss.com
Date: 2009-01-30 16:19:40 -0500 (Fri, 30 Jan 2009)
New Revision: 265
Modified:
identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.png
identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.svg
Log:
updated diag
Modified: identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.png
===================================================================
(Binary files differ)
Modified: identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.svg
===================================================================
--- identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.svg 2009-01-30 18:05:07 UTC (rev 264)
+++ identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.svg 2009-01-30 21:19:40 UTC (rev 265)
@@ -18,8 +18,8 @@
version="1.0"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/anil/identity/identity-federation/trunk/doc/diagrams/HubNSpokeArchitecture.png"
- inkscape:export-xdpi="92.099998"
- inkscape:export-ydpi="92.099998">
+ inkscape:export-xdpi="9.497488"
+ inkscape:export-ydpi="9.497488">
<defs
id="defs4">
<inkscape:perspective
@@ -779,7 +779,7 @@
height="228.57143"
x="60"
y="-282.85715" /></flowRegion><flowPara
- id="flowPara3504"></flowPara></flowRoot> <flowRoot
+ id="flowPara3504" /></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot3506"
style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:40px;-inkscape-font-specification:Sans;font-stretch:normal;font-variant:normal"><flowRegion
@@ -789,7 +789,7 @@
height="157.14285"
x="-145.71428"
y="-317.14285" /></flowRegion><flowPara
- id="flowPara3512"></flowPara></flowRoot> <image
+ id="flowPara3512" /></flowRoot> <image
y="-13.357134"
x="1005.3572"
id="image4810"
15 years, 2 months
JBoss Identity SVN: r264 - identity-federation/trunk/doc/diagrams.
by jboss-identity-commits@lists.jboss.org
Author: sguilhen(a)redhat.com
Date: 2009-01-30 13:05:07 -0500 (Fri, 30 Jan 2009)
New Revision: 264
Added:
identity-federation/trunk/doc/diagrams/WS-Trust.png
identity-federation/trunk/doc/diagrams/WS-Trust.svg
Log:
Adding ws-trust overall architecture diagrams
Added: identity-federation/trunk/doc/diagrams/WS-Trust.png
===================================================================
(Binary files differ)
Property changes on: identity-federation/trunk/doc/diagrams/WS-Trust.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: identity-federation/trunk/doc/diagrams/WS-Trust.svg
===================================================================
--- identity-federation/trunk/doc/diagrams/WS-Trust.svg (rev 0)
+++ identity-federation/trunk/doc/diagrams/WS-Trust.svg 2009-01-30 18:05:07 UTC (rev 264)
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2278"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ sodipodi:docbase="/home/sneusatz/Documents"
+ sodipodi:docname="WS-Trust.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs2280">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Mend"
+ style="overflow:visible;">
+ <path
+ id="path3393"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+ transform="scale(0.4) rotate(180) translate(10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Mend"
+ style="overflow:visible;">
+ <path
+ id="path4639"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(0.6) rotate(180) translate(0,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="280.27843"
+ inkscape:cy="904.51879"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="975"
+ inkscape:window-x="0"
+ inkscape:window-y="25" />
+ <metadata
+ id="metadata2283">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2364"
+ width="120.87989"
+ height="37.366081"
+ x="114.39082"
+ y="85.590469" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="119.71935"
+ y="107.08214"
+ id="text2366"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2368"
+ x="119.71935"
+ y="107.08214"
+ style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SecurityTokenService</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2370"
+ width="149"
+ height="37.366081"
+ x="-176.70224"
+ y="283.39084"
+ transform="matrix(0,-1,1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="-162.58681"
+ y="305.29431"
+ id="text2372"
+ transform="matrix(0,-0.9997832,1.0002168,0,0,0)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2374"
+ x="-162.58681"
+ y="305.29431"
+ style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">WSTrustRequestHandler</tspan></text>
+ <rect
+ style="fill:#f2f2f2;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2376"
+ width="149"
+ height="37.366081"
+ x="-176.70224"
+ y="369.19522"
+ transform="matrix(0,-1,1,0,0,0)" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="-166.73189"
+ y="390.7197"
+ id="text2378"
+ transform="matrix(0,-0.9997832,1.0002168,0,0,0)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2380"
+ x="-166.73189"
+ y="390.7197"
+ style="font-size:10px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SecurityTokenProvider</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2400"
+ width="128.45604"
+ height="37.366081"
+ x="415.39084"
+ y="27.336153" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="428.2323"
+ y="50.10178"
+ id="text2384"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2386"
+ x="428.2323"
+ y="50.10178"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">SAMLTokenProvider</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2388"
+ width="128.45604"
+ height="37.366081"
+ x="415.84702"
+ y="83.630661" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="421.24091"
+ y="105.12284"
+ id="text2390"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2392"
+ x="421.24091"
+ y="105.12284"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">KerberosTokenProvider</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2402"
+ width="128.45604"
+ height="37.366081"
+ x="415.39084"
+ y="139.33615" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="428.78638"
+ y="160.81628"
+ id="text2396"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2398"
+ x="428.78638"
+ y="160.81628"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">X509TokenProvider</tspan></text>
+ <rect
+ style="fill:#ffffff;stroke:#000000;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2404"
+ width="120.87989"
+ height="37.366081"
+ x="116.15571"
+ y="139.33615" />
+ <text
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="131.48674"
+ y="160.81599"
+ id="text2406"
+ transform="scale(0.9997832,1.0002168)"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan2408"
+ x="131.48674"
+ y="160.81599"
+ style="font-size:9px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Sans">STSConfiguration</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 23.640821,102.45224 L 112.64108,102.45224"
+ id="path2410" />
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Sans"
+ x="44.951794"
+ y="99.504036"
+ id="text3579"><tspan
+ sodipodi:role="line"
+ id="tspan3581"
+ x="44.951794"
+ y="99.504036">WS-Trust</tspan><tspan
+ sodipodi:role="line"
+ x="44.951794"
+ y="112.00404"
+ id="tspan3583">Request</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 235.19861,102.53452 L 281.07626,102.53452"
+ id="path3585" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 320.57633,102.02944 L 367.40863,102.02944"
+ id="path3589" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 179.30208,123.33131 L 179.30208,139.8215"
+ id="path3591" />
+ </g>
+</svg>
15 years, 3 months
JBoss Identity SVN: r263 - identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets.
by jboss-identity-commits@lists.jboss.org
Author: anil.saldhana(a)jboss.com
Date: 2009-01-29 14:11:59 -0500 (Thu, 29 Jan 2009)
New Revision: 263
Modified:
identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletConfig.java
identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletContext.java
identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletRequest.java
Log:
cosmetic
Modified: identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletConfig.java
===================================================================
--- identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletConfig.java 2009-01-29 19:06:41 UTC (rev 262)
+++ identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletConfig.java 2009-01-29 19:11:59 UTC (rev 263)
@@ -26,6 +26,8 @@
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
+
+@SuppressWarnings("unchecked")
/**
* @author Anil.Saldhana(a)redhat.com
* @since Jan 28, 2009
Modified: identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletContext.java
===================================================================
--- identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletContext.java 2009-01-29 19:06:41 UTC (rev 262)
+++ identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletContext.java 2009-01-29 19:11:59 UTC (rev 263)
@@ -33,6 +33,8 @@
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
+
+@SuppressWarnings("unchecked")
/**
* @author Anil.Saldhana(a)redhat.com
* @since Jan 28, 2009
@@ -47,26 +49,22 @@
}
public Object getAttribute(String name)
- {
-
+ {
return null;
}
public Enumeration getAttributeNames()
- {
-
+ {
return null;
}
public ServletContext getContext(String uripath)
- {
-
+ {
return null;
}
public String getContextPath()
- {
-
+ {
return null;
}
@@ -77,122 +75,96 @@
public Enumeration getInitParameterNames()
{
-
return null;
}
public int getMajorVersion()
{
-
return 0;
}
public String getMimeType(String file)
{
-
return null;
}
public int getMinorVersion()
{
-
return 0;
}
public RequestDispatcher getNamedDispatcher(String name)
{
-
return null;
}
public String getRealPath(String path)
{
-
return null;
}
public RequestDispatcher getRequestDispatcher(String path)
{
-
return null;
}
public URL getResource(String path) throws MalformedURLException
{
-
return null;
}
public InputStream getResourceAsStream(String path)
{
-
return null;
}
public Set getResourcePaths(String path)
{
-
return null;
}
public String getServerInfo()
{
-
return null;
}
public Servlet getServlet(String name) throws ServletException
{
-
return null;
}
public String getServletContextName()
{
-
return null;
}
-
+
public Enumeration getServletNames()
{
-
return null;
}
-
+
public Enumeration getServlets()
{
-
return null;
}
public void log(String msg)
{
-
-
}
public void log(Exception exception, String msg)
{
-
-
}
public void log(String message, Throwable throwable)
{
-
-
}
public void removeAttribute(String name)
{
-
-
}
public void setAttribute(String name, Object object)
{
-
-
}
-
-}
+}
\ No newline at end of file
Modified: identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletRequest.java
===================================================================
--- identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletRequest.java 2009-01-29 19:06:41 UTC (rev 262)
+++ identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/TestServletRequest.java 2009-01-29 19:11:59 UTC (rev 263)
@@ -37,6 +37,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
+
+@SuppressWarnings("unchecked")
/**
* @author Anil.Saldhana(a)redhat.com
* @since Jan 28, 2009
@@ -84,146 +86,122 @@
}
public Enumeration getHeaders(String name)
- {
-
+ {
return null;
}
public int getIntHeader(String name)
- {
-
+ {
return 0;
}
public String getMethod()
- {
-
+ {
return null;
}
public String getPathInfo()
- {
-
+ {
return null;
}
public String getPathTranslated()
- {
-
+ {
return null;
}
public String getQueryString()
- {
-
+ {
return null;
}
public String getRemoteUser()
{
-
return null;
}
public String getRequestURI()
{
-
return null;
}
public StringBuffer getRequestURL()
{
-
return null;
}
public String getRequestedSessionId()
{
-
return null;
}
public String getServletPath()
{
-
return null;
}
public HttpSession getSession()
{
-
return null;
}
public HttpSession getSession(boolean create)
{
-
return null;
}
public Principal getUserPrincipal()
{
-
return null;
}
public boolean isRequestedSessionIdFromCookie()
{
-
return false;
}
public boolean isRequestedSessionIdFromURL()
{
-
return false;
}
public boolean isRequestedSessionIdFromUrl()
{
-
return false;
}
public boolean isRequestedSessionIdValid()
{
-
return false;
}
public boolean isUserInRole(String role)
{
-
return false;
}
public Object getAttribute(String name)
{
-
return null;
}
public Enumeration getAttributeNames()
{
-
return null;
}
public String getCharacterEncoding()
{
-
return null;
}
public int getContentLength()
{
-
return 0;
}
public String getContentType()
{
-
return null;
}
@@ -241,137 +219,113 @@
public String getLocalAddr()
{
-
return null;
}
public String getLocalName()
{
-
return null;
}
public int getLocalPort()
{
-
return 0;
}
public Locale getLocale()
{
-
return null;
}
public Enumeration getLocales()
{
-
return null;
}
public String getParameter(String name)
{
-
return null;
}
public Map getParameterMap()
{
-
return null;
}
public Enumeration getParameterNames()
{
-
return null;
}
public String[] getParameterValues(String name)
{
-
return null;
}
public String getProtocol()
{
-
return null;
}
public BufferedReader getReader() throws IOException
{
-
return null;
}
public String getRealPath(String path)
{
-
return null;
}
public String getRemoteAddr()
{
-
return null;
}
public String getRemoteHost()
{
-
return null;
}
public int getRemotePort()
{
-
return 0;
}
public RequestDispatcher getRequestDispatcher(String path)
{
-
return null;
}
public String getScheme()
{
-
return null;
}
public String getServerName()
{
-
return null;
}
public int getServerPort()
{
-
return 0;
}
public boolean isSecure()
{
-
return false;
}
public void removeAttribute(String name)
{
-
-
}
public void setAttribute(String name, Object o)
{
-
-
}
public void setCharacterEncoding(String env) throws UnsupportedEncodingException
{
}
-}
+}
\ No newline at end of file
15 years, 3 months
JBoss Identity SVN: r262 - in identity-federation/trunk/identity-fed-api/src: test/java/org/jboss/test/identity/federation/api/saml/v2 and 1 other directory.
by jboss-identity-commits@lists.jboss.org
Author: anil.saldhana(a)jboss.com
Date: 2009-01-29 14:06:41 -0500 (Thu, 29 Jan 2009)
New Revision: 262
Modified:
identity-federation/trunk/identity-fed-api/src/main/java/org/jboss/identity/federation/api/saml/v2/response/SAML2Response.java
identity-federation/trunk/identity-fed-api/src/test/java/org/jboss/test/identity/federation/api/saml/v2/SAML2AuthnResponseUnitTestCase.java
Log:
minor cosmetic
Modified: identity-federation/trunk/identity-fed-api/src/main/java/org/jboss/identity/federation/api/saml/v2/response/SAML2Response.java
===================================================================
--- identity-federation/trunk/identity-fed-api/src/main/java/org/jboss/identity/federation/api/saml/v2/response/SAML2Response.java 2009-01-29 19:05:00 UTC (rev 261)
+++ identity-federation/trunk/identity-fed-api/src/main/java/org/jboss/identity/federation/api/saml/v2/response/SAML2Response.java 2009-01-29 19:06:41 UTC (rev 262)
@@ -30,7 +30,7 @@
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.datatype.XMLGregorianCalendar;
-
+
import org.jboss.identity.federation.core.saml.v2.factories.JBossSAMLAuthnResponseFactory;
import org.jboss.identity.federation.core.saml.v2.factories.JBossSAMLBaseFactory;
import org.jboss.identity.federation.core.saml.v2.factories.SAMLProtocolFactory;
@@ -42,7 +42,6 @@
import org.jboss.identity.federation.saml.v2.assertion.AttributeStatementType;
import org.jboss.identity.federation.saml.v2.assertion.AttributeType;
import org.jboss.identity.federation.saml.v2.assertion.ConditionsType;
-import org.jboss.identity.federation.saml.v2.assertion.StatementAbstractType;
import org.jboss.identity.federation.saml.v2.protocol.ResponseType;
/**
Modified: identity-federation/trunk/identity-fed-api/src/test/java/org/jboss/test/identity/federation/api/saml/v2/SAML2AuthnResponseUnitTestCase.java
===================================================================
--- identity-federation/trunk/identity-fed-api/src/test/java/org/jboss/test/identity/federation/api/saml/v2/SAML2AuthnResponseUnitTestCase.java 2009-01-29 19:05:00 UTC (rev 261)
+++ identity-federation/trunk/identity-fed-api/src/test/java/org/jboss/test/identity/federation/api/saml/v2/SAML2AuthnResponseUnitTestCase.java 2009-01-29 19:06:41 UTC (rev 262)
@@ -42,7 +42,6 @@
*/
public class SAML2AuthnResponseUnitTestCase extends TestCase
{
-
public void testResponseTypeCreation() throws Exception
{
IssuerInfoHolder issuerHolder = new IssuerInfoHolder("http://idp");
15 years, 3 months
JBoss Identity SVN: r261 - in identity-federation/trunk/identity-bindings/src: test/java/org/jboss/test/identity/federation/bindings/servlets and 1 other directories.
by jboss-identity-commits@lists.jboss.org
Author: anil.saldhana(a)jboss.com
Date: 2009-01-29 14:05:00 -0500 (Thu, 29 Jan 2009)
New Revision: 261
Added:
identity-federation/trunk/identity-bindings/src/test/resources/xacml/requests/XacmlRequest-format2-01-01.xml
Modified:
identity-federation/trunk/identity-bindings/src/main/java/org/jboss/identity/federation/bindings/servlets/SOAPSAMLXACMLServlet.java
identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/SOAPSAMLXACMLServletUnitTestCase.java
Log:
validate the servlet further with fault return
Modified: identity-federation/trunk/identity-bindings/src/main/java/org/jboss/identity/federation/bindings/servlets/SOAPSAMLXACMLServlet.java
===================================================================
--- identity-federation/trunk/identity-bindings/src/main/java/org/jboss/identity/federation/bindings/servlets/SOAPSAMLXACMLServlet.java 2009-01-29 18:51:55 UTC (rev 260)
+++ identity-federation/trunk/identity-bindings/src/main/java/org/jboss/identity/federation/bindings/servlets/SOAPSAMLXACMLServlet.java 2009-01-29 19:05:00 UTC (rev 261)
@@ -48,6 +48,7 @@
import org.jboss.identity.federation.core.saml.v2.util.SOAPSAMLXACMLUtil;
import org.jboss.identity.federation.org.xmlsoap.schemas.soap.envelope.Body;
import org.jboss.identity.federation.org.xmlsoap.schemas.soap.envelope.Envelope;
+import org.jboss.identity.federation.org.xmlsoap.schemas.soap.envelope.Fault;
import org.jboss.identity.federation.saml.v2.assertion.AssertionType;
import org.jboss.identity.federation.saml.v2.profiles.xacml.assertion.XACMLAuthzDecisionStatementType;
import org.jboss.identity.federation.saml.v2.profiles.xacml.protocol.XACMLAuthzDecisionQueryType;
@@ -108,28 +109,32 @@
JAXBElement<RequestAbstractType> jaxbRequestType = null;
Envelope envelope = null;
+ XACMLAuthzDecisionQueryType xacmlRequest = null;
try
{
Unmarshaller un = SOAPSAMLXACMLUtil.getUnmarshaller();
Object unmarshalledObject = un.unmarshal(req.getInputStream());
- if(unmarshalledObject instanceof Envelope)
+
+ if(unmarshalledObject instanceof JAXBElement)
{
- envelope = (Envelope)unmarshalledObject;
- Body soapBody = envelope.getBody();
- jaxbRequestType = (JAXBElement<RequestAbstractType>)soapBody.getAny().get(0);
- }
- else
- if(unmarshalledObject instanceof JAXBElement)
+ JAXBElement<?> jaxbElement = (JAXBElement<?>) unmarshalledObject;
+ Object element = jaxbElement.getValue();
+ if(element instanceof Envelope)
{
- jaxbRequestType = (JAXBElement<RequestAbstractType>) unmarshalledObject;
+ envelope = (Envelope)unmarshalledObject;
+ Body soapBody = envelope.getBody();
+ jaxbRequestType = (JAXBElement<RequestAbstractType>)soapBody.getAny().get(0);
+ xacmlRequest = (XACMLAuthzDecisionQueryType) jaxbRequestType.getValue();
}
- else
- throw new IOException("Unknown unmarshalledObject:"+ unmarshalledObject);
- if(jaxbRequestType == null)
+ else if(element instanceof XACMLAuthzDecisionQueryType)
+ {
+ xacmlRequest = (XACMLAuthzDecisionQueryType) element;
+ }
+ }
+ if(xacmlRequest == null)
throw new IOException("XACML Request not parsed");
- XACMLAuthzDecisionQueryType xacmlRequest = (XACMLAuthzDecisionQueryType) jaxbRequestType.getValue();
RequestType requestType = xacmlRequest.getRequest();
RequestContext requestContext = new JBossRequestContext();
@@ -157,23 +162,22 @@
JAXBElement<?> jaxbResponse = JAXBElementMappingUtil.get(saml2Response.createResponseType(IDGenerator.create("ID_"), issuerInfo, assertion));
//Create a SOAP Envelope to hold the SAML response
- envelope = SOAPFactory.getObjectFactory().createEnvelope();
- Body body = SOAPFactory.getObjectFactory().createBody();
- body.getAny().add(jaxbResponse);
- envelope.setBody(body);
+ envelope = this.createEnvelope(jaxbResponse);
}
catch (JAXBException e)
{
log.error("Exception parsing SOAP:", e);
+ envelope = this.createEnvelope(this.createFault("Parsing Error:"+e.getMessage()));
}
catch (PrivilegedActionException e)
{
log.error("Exception getting PDP:", e);
+ envelope = this.createEnvelope(this.createFault("PDP Setup Error:"+e.getMessage()));
}
catch (Exception e)
- {
- e.printStackTrace();
+ {
log.error("Exception:", e);
+ envelope = this.createEnvelope(this.createFault("Server Error:"+e.getMessage()));
}
finally
{
@@ -208,4 +212,20 @@
throw new IllegalStateException(policyConfigFileName + " could not be located");
return new JBossPDP(is);
}
+
+ private Envelope createEnvelope(Object obj)
+ {
+ Envelope envelope = SOAPFactory.getObjectFactory().createEnvelope();
+ Body body = SOAPFactory.getObjectFactory().createBody();
+ body.getAny().add(obj);
+ envelope.setBody(body);
+ return envelope;
+ }
+
+ private JAXBElement<Fault> createFault(String msg)
+ {
+ Fault fault = SOAPFactory.getObjectFactory().createFault();
+ fault.setFaultstring(msg);
+ return SOAPFactory.getObjectFactory().createFault(fault);
+ }
}
\ No newline at end of file
Modified: identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/SOAPSAMLXACMLServletUnitTestCase.java
===================================================================
--- identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/SOAPSAMLXACMLServletUnitTestCase.java 2009-01-29 18:51:55 UTC (rev 260)
+++ identity-federation/trunk/identity-bindings/src/test/java/org/jboss/test/identity/federation/bindings/servlets/SOAPSAMLXACMLServletUnitTestCase.java 2009-01-29 19:05:00 UTC (rev 261)
@@ -37,6 +37,7 @@
import org.jboss.identity.federation.bindings.servlets.SOAPSAMLXACMLServlet;
import org.jboss.identity.federation.core.saml.v2.util.SOAPSAMLXACMLUtil;
import org.jboss.identity.federation.org.xmlsoap.schemas.soap.envelope.Envelope;
+import org.jboss.identity.federation.org.xmlsoap.schemas.soap.envelope.Fault;
import org.jboss.identity.federation.saml.v2.assertion.AssertionType;
import org.jboss.identity.federation.saml.v2.profiles.xacml.assertion.XACMLAuthzDecisionStatementType;
import org.jboss.identity.federation.saml.v2.protocol.ResponseType;
@@ -53,6 +54,8 @@
public void testPermit() throws Exception
{
validate("xacml/requests/XacmlRequest-01-01.xml", DecisionType.PERMIT.value());
+
+ validate("xacml/requests/XacmlRequest-format2-01-01.xml", DecisionType.PERMIT.value());
}
public void testDeny() throws Exception
@@ -61,6 +64,31 @@
}
@SuppressWarnings("unchecked")
+ public void testIncorrectInput() throws Exception
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ String garbage = "fdfdsfdfk";
+ ByteArrayInputStream bis = new ByteArrayInputStream(garbage.getBytes());
+
+ SOAPSAMLXACMLServlet servlet = new SOAPSAMLXACMLServlet();
+ servlet.init(new TestServletConfig(getServletContext()));
+ ServletRequest sreq = new TestServletRequest(bis);
+ ServletResponse sresp = new TestServletResponse(baos);
+ servlet.service(sreq, sresp);
+
+ sresp.flushBuffer(); //Flush the servlet response ServletOutputStream to our baos
+
+ bis = new ByteArrayInputStream(baos.toByteArray());
+ Unmarshaller un = SOAPSAMLXACMLUtil.getUnmarshaller();
+ JAXBElement<Envelope> jax = (JAXBElement<Envelope>) un.unmarshal(bis);
+ Envelope envelope = jax.getValue();
+ assertNotNull("Envelope is not null", envelope);
+ JAXBElement<?> fault = (JAXBElement<?>) envelope.getBody().getAny().get(0);
+ assertTrue(fault.getValue() instanceof Fault);
+ }
+
+ @SuppressWarnings("unchecked")
private void validate(String requestFile, String value) throws Exception
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Added: identity-federation/trunk/identity-bindings/src/test/resources/xacml/requests/XacmlRequest-format2-01-01.xml
===================================================================
--- identity-federation/trunk/identity-bindings/src/test/resources/xacml/requests/XacmlRequest-format2-01-01.xml (rev 0)
+++ identity-federation/trunk/identity-bindings/src/test/resources/xacml/requests/XacmlRequest-format2-01-01.xml 2009-01-29 19:05:00 UTC (rev 261)
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xacml-samlp:XACMLAuthzDecisionQuery xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns:xacml-samlp="urn:oasis:xacml:2.0:saml:protocol:schema:os"
+xacml-samlp:InputContextOnly="true"
+xacml-samlp:ReturnContext="true"
+ID="s2846efb514a944cc3dc5b65ed8a76dde449787617" Version="2.0"
+IssueInstant="2008-03-19T22:18:42Z" Destination="destination-uri">
+<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">vaPepEntity</saml:Issuer>
+<xacml-context:Request
+ xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xacml-context="urn:oasis:names:tc:xacml:2.0:context:schema:os"
+ xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os
+ http://docs.oasis-open.org/xacml/access_control-xacml-2.0-context-schema-...">
+ <!-- **************************************************************** -->
+ <!-- Test case 1-01: Should be Perm: Dr A has all reqd perms -->
+ <!-- **************************************************************** -->
+
+ <!-- Sample request. In this case a physician is trying to access -->
+ <!-- The medical record of a patient. The record has been marked -->
+ <!-- with both the CDA and N confidentiality codes and -->
+ <!-- there is a registered consent for the record. -->
+ <xacml-context:Subject>
+ <xacml-context:Attribute
+ AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <xacml-context:AttributeValue>Dr. Alice</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:oasis:names:tc:xacml:1.0:subject:locality"
+ DataType="http://www.w3.org/2001/XMLSchema#string" >
+ <xacml-context:AttributeValue>Facility A</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:subject:hl7:permission"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-003</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-005</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-006</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-009</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-010</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-012</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-017</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ </xacml-context:Subject>
+ <xacml-context:Resource>
+ <xacml-context:Attribute
+ AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <xacml-context:AttributeValue>Anthony Gurrola</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:resource:hl7:permission"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-003</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-005</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-006</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-009</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-010</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-012</xacml-context:AttributeValue>
+ <xacml-context:AttributeValue>urn:va:xacml:2.0:interop:rsa8:hl7:prd-017</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:resource:hl7:confidentiality-code"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <xacml-context:AttributeValue>xxx-DummyConfCode</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:resource:hl7:dissented-subject-id"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <xacml-context:AttributeValue>Dr. Alice</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:resource:hl7:type"
+ DataType="http://www.w3.org/2001/XMLSchema#string">
+ <xacml-context:AttributeValue
+ >urn:va:xacml:2.0:interop:rsa8:resource:hl7:medical-record</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ </xacml-context:Resource>
+ <xacml-context:Action/>
+ <xacml-context:Environment>
+ <xacml-context:Attribute
+ AttributeId="urn:va:xacml:2.0:interop:rsa8:environment:locality"
+ DataType="http://www.w3.org/2001/XMLSchema#string" >
+ <xacml-context:AttributeValue>Facility A</xacml-context:AttributeValue>
+ </xacml-context:Attribute>
+ </xacml-context:Environment>
+</xacml-context:Request>
+</xacml-samlp:XACMLAuthzDecisionQuery>
\ No newline at end of file
15 years, 3 months
JBoss Identity SVN: r260 - in idm/trunk: idm/src/main/java/org/jboss/identity/idm/impl and 7 other directories.
by jboss-identity-commits@lists.jboss.org
Author: bdaw
Date: 2009-01-29 13:51:55 -0500 (Thu, 29 Jan 2009)
New Revision: 260
Added:
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/IdentityStoreCacheSupport.java
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/JBossCacheIdentityStoreWrapper.java
idm/trunk/idm/src/test/resources/logging.properties
Modified:
idm/trunk/idm-spi/src/main/java/org/jboss/identity/idm/spi/store/IdentityStore.java
idm/trunk/idm/pom.xml
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/AttributeFilterSearchControl.java
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/NameFilterSearchControl.java
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/PageSearchControl.java
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/SortByNameSearchControl.java
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/model/ldap/LDAPIdentityObjectImpl.java
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/types/SimpleIdentityObject.java
idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/types/SimpleIdentityObjectType.java
idm/trunk/idm/src/test/java/org/jboss/identity/idm/impl/SimpleIdentityObjectTypeImpl.java
Log:
- Simple wrapper around IdentityStore providing caching using JBossCache. Still needs some work...
Modified: idm/trunk/idm/pom.xml
===================================================================
--- idm/trunk/idm/pom.xml 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/pom.xml 2009-01-29 18:51:55 UTC (rev 260)
@@ -58,6 +58,12 @@
<version>3.3.2.GA</version>
</dependency>
<dependency>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-core</artifactId>
+ <version>3.0.2.GA</version>
+ </dependency>
+
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
Modified: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/AttributeFilterSearchControl.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/AttributeFilterSearchControl.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/AttributeFilterSearchControl.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -26,6 +26,7 @@
import org.jboss.identity.idm.spi.searchcontrol.IdentityObjectSearchControl;
import java.util.Map;
+import java.util.Collections;
/**
* @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw Dawidowicz</a>
@@ -41,11 +42,39 @@
{
throw new IllegalArgumentException("attributes is null");
}
- this.attributes = attributes;
+ this.attributes = Collections.unmodifiableMap(attributes);
}
public Map<String, String[]> getValues()
{
return attributes;
}
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ AttributeFilterSearchControl that = (AttributeFilterSearchControl)o;
+
+ if (!attributes.equals(that.attributes))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return attributes.hashCode();
+ }
}
Modified: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/NameFilterSearchControl.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/NameFilterSearchControl.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/NameFilterSearchControl.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -43,4 +43,32 @@
{
return filter;
}
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ NameFilterSearchControl that = (NameFilterSearchControl)o;
+
+ if (filter != null ? !filter.equals(that.filter) : that.filter != null)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return filter != null ? filter.hashCode() : 0;
+ }
}
Modified: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/PageSearchControl.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/PageSearchControl.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/PageSearchControl.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -50,4 +50,38 @@
{
return limit;
}
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ PageSearchControl that = (PageSearchControl)o;
+
+ if (limit != that.limit)
+ {
+ return false;
+ }
+ if (offset != that.offset)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = offset;
+ result = 31 * result + limit;
+ return result;
+ }
}
Modified: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/SortByNameSearchControl.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/SortByNameSearchControl.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/api/SortByNameSearchControl.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -42,4 +42,32 @@
{
return ascending;
}
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ SortByNameSearchControl that = (SortByNameSearchControl)o;
+
+ if (ascending != that.ascending)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return (ascending ? 1 : 0);
+ }
}
Added: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/IdentityStoreCacheSupport.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/IdentityStoreCacheSupport.java (rev 0)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/IdentityStoreCacheSupport.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -0,0 +1,800 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.identity.idm.impl.cache;
+
+import org.jboss.cache.Fqn;
+import org.jboss.cache.Cache;
+import org.jboss.cache.Node;
+import org.jboss.identity.idm.spi.model.IdentityObject;
+import org.jboss.identity.idm.spi.model.IdentityObjectAttribute;
+import org.jboss.identity.idm.spi.model.IdentityObjectType;
+import org.jboss.identity.idm.spi.model.IdentityObjectRelationshipType;
+import org.jboss.identity.idm.spi.model.IdentityObjectRelationship;
+import org.jboss.identity.idm.spi.searchcontrol.IdentityObjectSearchControl;
+
+import java.util.logging.Logger;
+import java.util.logging.Level;
+import java.util.Map;
+import java.util.Set;
+import java.util.Collection;
+import java.util.List;
+import java.util.Arrays;
+import java.util.HashSet;
+
+/**
+ *
+ * TODO: update the structure...
+ * Cache structure:
+ *
+ * CACHE_ROOT (real)
+ * |
+ * |-JBID_ROOT_NODE
+ * |
+ * |-OBJECT_TYPES_NODE
+ * | |
+ * | |-OBJECT_TYPES_IDS_NODE
+ * | | |
+ * | | |- (IdentityObjectType names)
+ * | | | key[NODE_OBJECT_KEY] -> IdentityObject
+ * | | |- ...
+ * | |
+ * | |-OBJECT_TYPES_NAMES_NODE
+ * | | |
+ * | | |- (IdentityObjectType names)
+ * | | | key[NODE_OBJECT_KEY] -> IdentityObject
+ * | | | key[NODE_ATTRIBUTES_KEY] -> Map<String, IdentityObjectAttribute>
+ * | | |- ...
+ * | |
+ * | |-OBJECT_TYPES_SEARCH_NODE
+ * | |
+ * | |
+ * | |- ...
+ * |
+ * |-RELATIONSHIPS_NODE
+ * |
+
+ *
+ * @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public abstract class IdentityStoreCacheSupport
+{
+
+ // TODO: more logging...
+
+ // Node paths
+
+ public static final String JBID_ROOT_NODE = "/jboss_id_idm";
+
+ public static final String OBJECT_TYPES_NODE = JBID_ROOT_NODE + "/object_types";
+
+ public static final String OBJECT_TYPES_IDS_NODE = OBJECT_TYPES_NODE + "/by_ids";
+
+ public static final String OBJECT_TYPES_NAMES_NODE = OBJECT_TYPES_NODE + "/by_names";
+
+ public static final String OBJECT_TYPES_SEARCH_BY_TYPE_NODE = OBJECT_TYPES_NODE + "/search_by_type";
+
+ public static final String OBJECT_TYPES_SEARCH_NODE = OBJECT_TYPES_NODE + "/search";
+
+ // Don't populate children as resident nodes!
+ public static final String OBJECT_TYPES_COUNT_NODE = OBJECT_TYPES_NODE + "/count";
+
+ public static final String RELATIONSHIPS_SEARCH_NODE = JBID_ROOT_NODE + "/relationship_types_names";
+
+ public static final String RELATIONSHIPS_SEARCH_SIMPLE_NODE = RELATIONSHIPS_SEARCH_NODE + "/simple";
+
+ public static final String RELATIONSHIPS_SEARCH_COMPLEX_NODE = RELATIONSHIPS_SEARCH_NODE + "/complex";
+
+ public static final String RELATIONSHIP_NAMES_SEARCH_NODE = JBID_ROOT_NODE + "/relationship_names_search";
+
+ public static final String RELATIONSHIP_NAMES_SEARCH_IO_NODE = RELATIONSHIP_NAMES_SEARCH_NODE + "/identity_object";
+
+ public static final String RELATIONSHIP_NAMES_SEARCH_ALL_NODE = RELATIONSHIP_NAMES_SEARCH_NODE + "/all";
+
+ // Node keys
+
+ public static final String NODE_OBJECT_KEY = "object";
+
+ public static final String NODE_ATTRIBUTES_KEY = "attributes";
+
+ public static final String NODE_REL_NAME_KEY = "relationship_name";
+
+ public static final String NODE_REL_TYPE_KEY = "relationship_type";
+
+ public static final String NODE_REL_FROM_KEY = "relationship_from";
+
+ public static final String NODE_REL_TO_KEY = "relationship_to";
+
+ public static final String NODE_SEARCH_RESULTS_KEY = "search_results";
+
+
+ // FQNs
+
+ public static final Fqn FQN_OBJECT_TYPES = Fqn.fromString(OBJECT_TYPES_NODE);
+
+ public static final Fqn FQN_OBJECT_TYPES_NAMES = Fqn.fromString(OBJECT_TYPES_NAMES_NODE);
+
+ public static final Fqn FQN_OBJECT_TYPES_IDS = Fqn.fromString(OBJECT_TYPES_IDS_NODE);
+
+ public static final Fqn FQN_OBJECT_TYPES_SEARCH_BY_TYPE = Fqn.fromString(OBJECT_TYPES_SEARCH_BY_TYPE_NODE);
+
+ public static final Fqn FQN_OBJECT_TYPES_SEARCH = Fqn.fromString(OBJECT_TYPES_SEARCH_NODE);
+
+ public static final Fqn FQN_OBJECT_TYPES_COUNT = Fqn.fromString(OBJECT_TYPES_COUNT_NODE);
+
+ public static final Fqn FQN_RELATIONSHIPS = Fqn.fromString(RELATIONSHIPS_SEARCH_NODE);
+
+ public static final Fqn FQN_RELATIONSHIPS_COMPLEX = Fqn.fromString(RELATIONSHIPS_SEARCH_COMPLEX_NODE);
+
+ public static final Fqn FQN_RELATIONSHIPS_SIMPLE = Fqn.fromString(RELATIONSHIPS_SEARCH_SIMPLE_NODE);
+
+
+ private Fqn createIONameNodeFQN(String ioTypeName, String ioName)
+ {
+ return Fqn.fromElements(OBJECT_TYPES_NAMES_NODE, ioTypeName, ioName);
+ }
+
+ private Fqn createIONameNodeFQN(IdentityObject io)
+ {
+ return Fqn.fromElements(OBJECT_TYPES_NAMES_NODE, io.getIdentityType().getName(), io.getName());
+ }
+
+ private Fqn createIOIdNodeFQN(IdentityObject io)
+ {
+ return Fqn.fromElements(OBJECT_TYPES_IDS_NODE, io.getIdentityType().getName(), io.getId());
+ }
+
+ private Fqn createIOTypeCountNodeFQN(IdentityObjectType iot)
+ {
+ return Fqn.fromElements(OBJECT_TYPES_COUNT_NODE, iot.getName());
+ }
+
+ private Fqn createIOTypeSearchNodeFQN(IdentityObjectType iot, Object searchId)
+ {
+ return Fqn.fromElements(OBJECT_TYPES_SEARCH_BY_TYPE_NODE, iot.getName(), searchId);
+ }
+
+ private Fqn createIOSearchNodeFQN(IdentityObject io, IdentityObjectRelationshipType relationshipType, boolean parent, Object searchId)
+ {
+ return Fqn.fromElements(OBJECT_TYPES_SEARCH_NODE, io.getIdentityType().getName(), relationshipType.getName(),
+ io.getName() + "_" + parent, searchId);
+ }
+
+ private Fqn createRelationshipNamesIdentityObjectSearchFqn(IdentityObject identityObject, Object searchId)
+ {
+ return Fqn.fromElements(RELATIONSHIP_NAMES_SEARCH_IO_NODE, identityObject.getIdentityType() + "_" + identityObject.getName(),
+ searchId);
+ }
+
+ private Fqn createRelationshipNamesAllSearchFqn(Object searchId)
+ {
+ return Fqn.fromElements(RELATIONSHIP_NAMES_SEARCH_ALL_NODE, searchId);
+ }
+
+ private Fqn createRelationshipsSimpleSearchFqn(IdentityObject fromIdentity,
+ IdentityObject toIdentity,
+ IdentityObjectRelationshipType relationshipType)
+ {
+ //TODO: fixme - null relationshipType
+ return Fqn.fromElements(RELATIONSHIPS_SEARCH_SIMPLE_NODE, fromIdentity.getIdentityType().getName() + "_" + toIdentity.getName(),
+ toIdentity.getIdentityType().getName() + "_" + toIdentity.getName(), relationshipType == null ? "null" : relationshipType );
+ }
+
+ private Fqn createRelationshipsComplexSearchFqn(IdentityObject identity,
+ IdentityObjectRelationshipType relationshipType,
+ boolean parent,
+ boolean named,
+ String name)
+ {
+ return Fqn.fromElements(RELATIONSHIPS_SEARCH_COMPLEX_NODE, identity.getIdentityType().getName() + "_" + identity.getName(),
+ parent, relationshipType, named + "_" + name);
+ }
+
+ public static boolean isSchemaFqn(Fqn fqn)
+ {
+ if (fqn.equals(JBID_ROOT_NODE) ||
+ fqn.equals(OBJECT_TYPES_NODE) ||
+ fqn.equals(OBJECT_TYPES_IDS_NODE) ||
+ fqn.equals(OBJECT_TYPES_NAMES_NODE) ||
+ fqn.equals(RELATIONSHIPS_SEARCH_NODE))
+ {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isFqnObjectTypeChild(Fqn fqn)
+ {
+ return fqn.isChildOf(FQN_OBJECT_TYPES);
+ }
+
+ public static boolean isFqnObjectTypeIdsChild(Fqn fqn)
+ {
+ return fqn.isChildOf(FQN_OBJECT_TYPES_IDS);
+ }
+
+ public static boolean isFqnObjectTypeNamesChild(Fqn fqn)
+ {
+ return fqn.isChildOf(FQN_OBJECT_TYPES_NAMES);
+ }
+
+ public static boolean isFqnObjectTypeSearchChild(Fqn fqn)
+ {
+ return fqn.isChildOf(FQN_OBJECT_TYPES_SEARCH_BY_TYPE);
+ }
+
+ public static boolean isFqnRelationshipsChild(Fqn fqn)
+ {
+ return fqn.isChildOf(FQN_RELATIONSHIPS);
+ }
+
+
+ private void removeNodeChildren(String path)
+ {
+ Fqn fqn = Fqn.fromString(path);
+ Node node = getCache().getRoot().getChild(fqn);
+
+ if (node != null)
+ {
+ Set<Object> names = node.getChildrenNames();
+ for (Object name : names)
+ {
+ node.removeChild(name);
+ }
+ }
+ }
+
+ protected abstract Logger getLog();
+
+ protected abstract Cache getCache();
+
+ protected void initResidentNodes(Set<String> supportedIdentityObjectTypes,
+ Set<String> supportedRelationshipTypes)
+ {
+ getCache().getRoot().addChild(Fqn.fromString(IdentityStoreCacheSupport.JBID_ROOT_NODE)).setResident(true);
+ getCache().getRoot().addChild(Fqn.fromString(IdentityStoreCacheSupport.OBJECT_TYPES_NODE)).setResident(true);
+ getCache().getRoot().addChild(FQN_OBJECT_TYPES_IDS).setResident(true);
+ getCache().getRoot().addChild(FQN_OBJECT_TYPES_NAMES).setResident(true);
+ getCache().getRoot().addChild(FQN_OBJECT_TYPES_SEARCH).setResident(true);
+ getCache().getRoot().addChild(FQN_OBJECT_TYPES_SEARCH_BY_TYPE).setResident(true);
+ getCache().getRoot().addChild(FQN_OBJECT_TYPES_COUNT).setResident(true);
+ getCache().getRoot().addChild(Fqn.fromString(RELATIONSHIP_NAMES_SEARCH_ALL_NODE)).setResident(true);
+ getCache().getRoot().addChild(Fqn.fromString(RELATIONSHIP_NAMES_SEARCH_IO_NODE)).setResident(true);
+ getCache().getRoot().addChild(Fqn.fromString(RELATIONSHIPS_SEARCH_COMPLEX_NODE)).setResident(true);
+ getCache().getRoot().addChild(Fqn.fromString(RELATIONSHIPS_SEARCH_SIMPLE_NODE)).setResident(true);
+
+ for (String objectTypeName : supportedIdentityObjectTypes)
+ {
+ Fqn nodeFqn = Fqn.fromRelativeElements(FQN_OBJECT_TYPES_NAMES, "/" + objectTypeName);
+ getCache().getRoot().addChild(nodeFqn).setResident(true);
+
+ nodeFqn = Fqn.fromRelativeElements(FQN_OBJECT_TYPES_IDS, "/" + objectTypeName);
+ getCache().getRoot().addChild(nodeFqn).setResident(true);
+ }
+ }
+
+ protected void putIntoCache(IdentityObject io)
+ {
+ Fqn nodeFqn = createIONameNodeFQN(io);
+
+ Node ioNode = getCache().getRoot().addChild(nodeFqn);
+
+ // in case this node was already present in cache
+ if (!ioNode.getKeys().contains(NODE_OBJECT_KEY))
+ {
+ ioNode.put(NODE_OBJECT_KEY, io);
+ }
+
+ nodeFqn = createIOIdNodeFQN(io);
+
+ ioNode = getCache().getRoot().addChild(nodeFqn);
+
+ // in case this node was already present in cache
+ if (!ioNode.getKeys().contains(NODE_OBJECT_KEY))
+ {
+ ioNode.put(NODE_OBJECT_KEY, io);
+ }
+
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject storred in cache: " + io.getName() + "; " + io.getId());
+ }
+ }
+
+ protected void putIntoCache(IdentityObject io, Map<String, IdentityObjectAttribute> attributesMap)
+ {
+ Fqn nodeFqn = createIONameNodeFQN(io);
+
+ Node ioNode = getCache().getRoot().addChild(nodeFqn);
+
+ // in case this node was already present in cache
+ if (!ioNode.getKeys().contains(NODE_OBJECT_KEY))
+ {
+ ioNode.put(NODE_OBJECT_KEY, io);
+ }
+
+ if (!ioNode.getKeys().contains(NODE_ATTRIBUTES_KEY))
+ {
+ ioNode.put(NODE_ATTRIBUTES_KEY, attributesMap);
+ }
+
+ nodeFqn = createIOIdNodeFQN(io);
+
+ ioNode = getCache().getRoot().addChild(nodeFqn);
+
+ // in case this node was already present in cache
+ if (!ioNode.getKeys().contains(NODE_OBJECT_KEY))
+ {
+ ioNode.put(NODE_OBJECT_KEY, io);
+ }
+
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject storred in cache with attributes map: " + io.getName() + "; " + io.getId()
+ + "; type=" + io.getIdentityType().getName() );
+ }
+ }
+
+ protected void removeFromCache(IdentityObject io)
+ {
+ Fqn nodeFqn = createIONameNodeFQN(io);
+
+ getCache().getRoot().removeChild(nodeFqn);
+
+ nodeFqn = createIOIdNodeFQN(io);
+
+ getCache().getRoot().removeChild(nodeFqn);
+
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject removed from cache: " + io.getName() + "; " + io.getId()
+ + "; type=" + io.getIdentityType().getName() );
+ }
+ }
+
+ protected void removeAttributesFromCache(IdentityObject io)
+ {
+ Fqn nodeFqn = createIONameNodeFQN(io);
+
+ Node ioNode = getCache().getRoot().addChild(nodeFqn);
+
+ ioNode.remove(NODE_ATTRIBUTES_KEY);
+
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject attributes removed from cache: name=" + io.getName() + "; id=" + io.getId()
+ + "; type=" + io.getIdentityType().getName() );
+ }
+ }
+
+ protected IdentityObject getFromCache(String name, IdentityObjectType identityObjectType)
+ {
+ Fqn nodeFqn = Fqn.fromElements(OBJECT_TYPES_NODE, identityObjectType.getName(), name);
+
+ Node ioNode = getCache().getRoot().getChild(nodeFqn);
+
+ if (ioNode != null)
+ {
+ IdentityObject io = (IdentityObject)ioNode.get(NODE_OBJECT_KEY);
+
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject found in cache: name=" + io.getName() + "; id=" + io.getId());
+ }
+
+ return io;
+ }
+
+ return null;
+
+ }
+
+ protected Map<String, IdentityObjectAttribute> getAttributesFromCache(String name, IdentityObjectType identityObjectType)
+ {
+ Fqn nodeFqn = Fqn.fromElements(OBJECT_TYPES_NODE, identityObjectType.getName(), name);
+
+ Node ioNode = getCache().getRoot().getChild(nodeFqn);
+
+ if (ioNode != null)
+ {
+ Map<String, IdentityObjectAttribute> attrs = (Map<String, IdentityObjectAttribute>)ioNode.get(NODE_ATTRIBUTES_KEY);
+
+ if (attrs != null)
+ {
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject attributes found in cache: name=" + name + "; type=" + identityObjectType.getName());
+ }
+ }
+ return attrs;
+ }
+
+ return null;
+
+ }
+
+ protected IdentityObject getFromCache(String id)
+ {
+ Node idsNode = getCache().getRoot().getChild(OBJECT_TYPES_IDS_NODE);
+
+ for (Node typeNode : (Set<Node>)idsNode.getChildren())
+ {
+ for (Object name : typeNode.getChildrenNames())
+ {
+ if (name.toString().equals(id))
+ {
+ IdentityObject io = (IdentityObject)typeNode.getChild(name).get(NODE_OBJECT_KEY);
+
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject found in cache: name" + io.getName() + "; type" + io.getIdentityType().getName());
+ }
+
+ return io;
+ }
+ }
+ }
+
+ return null;
+
+ }
+
+ protected void putIdentityObjectSearchIntoCache(IdentityObjectType identityType,
+ IdentityObjectSearchControl[] controls,
+ Collection<IdentityObject> results)
+ {
+ Fqn nodeFqn = createIOTypeSearchNodeFQN(identityType, getControlsHash(controls));
+
+ Node searchNode = getCache().getRoot().addChild(nodeFqn);
+
+ searchNode.put(NODE_SEARCH_RESULTS_KEY, results);
+
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject search results stored in cache: type" + identityType.getName());
+ }
+ }
+
+ protected Collection<IdentityObject> getIdentityObjectSearchFromCache(IdentityObjectType identityType,
+ IdentityObjectSearchControl[] controls)
+ {
+ Fqn nodeFqn = createIOTypeSearchNodeFQN(identityType, getControlsHash(controls));
+
+ Node searchNode = getCache().getRoot().getChild(nodeFqn);
+
+ Collection<IdentityObject> results = null;
+
+ if (searchNode != null)
+ {
+
+
+ results = (Collection<IdentityObject>)searchNode.get(NODE_SEARCH_RESULTS_KEY);
+
+ if (results != null && getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject search results found in cache: type" + identityType.getName());
+ }
+ }
+
+ return results;
+
+ }
+
+ protected void putIdentityObjectSearchToCache(IdentityObject identity,
+ IdentityObjectRelationshipType relationshipType,
+ boolean parent,
+ IdentityObjectSearchControl[] controls,
+ Collection<IdentityObject> results)
+ {
+
+ Fqn nodeFqn = createIOSearchNodeFQN(identity, relationshipType, parent, getControlsHash(controls));
+
+ Node searchNode = getCache().getRoot().addChild(nodeFqn);
+
+ searchNode.put(NODE_SEARCH_RESULTS_KEY, results);
+
+ if (getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject search results stored in cache: IdentityObject name= " + identity.getName()
+ + "; IdentityObject type= " + identity.getIdentityType().getName() + "; IdentityObjectRelationshipType= " + relationshipType +
+ "; parent= " + parent);
+ }
+
+ }
+
+ protected Collection<IdentityObject> getIdentityObjectSearchFromCache(IdentityObject identity,
+ IdentityObjectRelationshipType relationshipType,
+ boolean parent,
+ IdentityObjectSearchControl[] controls)
+ {
+
+ Fqn nodeFqn = createIOSearchNodeFQN(identity, relationshipType, parent, getControlsHash(controls));
+
+ Node searchNode = getCache().getRoot().getChild(nodeFqn);
+
+ Collection<IdentityObject> results = null;
+
+ if (searchNode != null)
+ {
+ results = (Collection<IdentityObject>)searchNode.get(NODE_SEARCH_RESULTS_KEY);
+
+ if (results != null && getLog().isLoggable(Level.FINER))
+ {
+ getLog().finer(this.toString() + "IdentityObject search results found in cache: IdentityObject name= " + identity.getName()
+ + "; IdentityObject type= " + identity.getIdentityType().getName() + "; IdentityObjectRelationshipType= " + relationshipType +
+ "; parent= " + parent);
+ }
+ }
+
+ return results;
+
+ }
+
+ protected void putRelationshipsSearchIntoCache(IdentityObject fromIdentity,
+ IdentityObject toIdentity,
+ IdentityObjectRelationshipType relationshipType,
+ Set<IdentityObjectRelationship> results)
+ {
+
+ Fqn fqn = createRelationshipsSimpleSearchFqn(fromIdentity, toIdentity, relationshipType);
+ Node node = getCache().getRoot().addChild(fqn);
+
+ node.put(NODE_SEARCH_RESULTS_KEY, results);
+
+ }
+
+
+
+ protected Set<IdentityObjectRelationship> getRelationshipsSearchFromCache(IdentityObject fromIdentity,
+ IdentityObject toIdentity,
+ IdentityObjectRelationshipType relationshipType)
+ {
+ Fqn fqn = createRelationshipsSimpleSearchFqn(fromIdentity, toIdentity, relationshipType);
+ Node node = getCache().getRoot().getChild(fqn);
+
+ if (node != null)
+ {
+ return (Set<IdentityObjectRelationship>)node.get(NODE_SEARCH_RESULTS_KEY);
+ }
+ return null;
+ }
+
+ protected void putRelationshipSearchIntoCache(IdentityObject identity,
+ IdentityObjectRelationshipType relationshipType,
+ boolean parent,
+ boolean named,
+ String name,
+ Set<IdentityObjectRelationship> results)
+ {
+ Fqn fqn = createRelationshipsComplexSearchFqn(identity, relationshipType, parent, named, name);
+ Node node = getCache().getRoot().addChild(fqn);
+
+ node.put(NODE_SEARCH_RESULTS_KEY, results);
+
+ }
+
+
+
+ protected Set<IdentityObjectRelationship> getRelationshipsSearchFromCache(IdentityObject identity,
+ IdentityObjectRelationshipType relationshipType,
+ boolean parent,
+ boolean named,
+ String name)
+ {
+ Fqn fqn = createRelationshipsComplexSearchFqn(identity, relationshipType, parent, named, name);
+ Node node = getCache().getRoot().getChild(fqn);
+
+ if (node != null)
+ {
+ return (Set<IdentityObjectRelationship>)node.get(NODE_SEARCH_RESULTS_KEY);
+ }
+ return null;
+
+ }
+
+ protected void invalidateCachedIdentityObjectSearches(IdentityObject io)
+ {
+
+ Fqn fqn = Fqn.fromElements(OBJECT_TYPES_SEARCH_BY_TYPE_NODE, io.getIdentityType().getName());
+ getCache().getRoot().removeChild(fqn);
+
+ // It can be in any result in the type searches
+ removeNodeChildren(OBJECT_TYPES_SEARCH_NODE);
+ }
+
+ protected void putIdentityObjectCountIntoCache(IdentityObjectType identityType, int count)
+ {
+ Fqn fqn = createIOTypeCountNodeFQN(identityType);
+ Node node = getCache().getRoot().addChild(fqn);
+
+ node.put(NODE_OBJECT_KEY, count);
+
+ }
+
+ protected int getIdentityObjectCountFromCache(IdentityObjectType identityType)
+ {
+ Fqn fqn = createIOTypeCountNodeFQN(identityType);
+ Node node = getCache().getRoot().getChild(fqn);
+
+
+ if (node != null && node.getKeys().contains(NODE_OBJECT_KEY))
+ {
+ return (Integer)(node.get(NODE_OBJECT_KEY));
+ }
+ // -1 means nothing in cache
+ return -1;
+ }
+
+
+ protected void invalidateCachedIdentityObjectCount(IdentityObjectType identityType)
+ {
+ Fqn fqn = createIOTypeCountNodeFQN(identityType);
+ Node node = getCache().getRoot().addChild(fqn);
+
+ node.remove(NODE_OBJECT_KEY);
+ }
+
+ protected void invalidateCachedRelationshipSearches(IdentityObject fromIdentity,
+ IdentityObject toIdentity,
+ IdentityObjectRelationshipType relationshipType,
+ String relationshipName)
+ {
+ String fromName = fromIdentity.getIdentityType().getName() + "_" + fromIdentity.getName();
+ String toName = toIdentity.getIdentityType().getName() + "_" + toIdentity.getName();
+
+ // Simple
+
+ Fqn fqn = Fqn.fromElements(RELATIONSHIPS_SEARCH_SIMPLE_NODE, fromName, toName, relationshipType.getName());
+ getCache().getRoot().removeChild(fqn);
+
+ // Complex
+
+ String relNameElement;
+ if (relationshipName != null)
+ {
+ relNameElement = true + relationshipName;
+ }
+ else
+ {
+ relNameElement = false + relationshipName;
+ }
+
+
+ fqn = Fqn.fromElements(RELATIONSHIPS_SEARCH_COMPLEX_NODE, fromName, true, relationshipType.getName(), relNameElement);
+ getCache().getRoot().removeChild(fqn);
+ fqn = Fqn.fromElements(RELATIONSHIPS_SEARCH_COMPLEX_NODE, toName, false, relationshipType.getName(), relNameElement);
+ getCache().getRoot().removeChild(fqn);
+
+ }
+
+ protected void invalidateCachedRelationshipSearches(IdentityObject identity1, IdentityObject identity2, boolean named)
+ {
+
+ String name1 = identity1.getIdentityType().getName() + "_" + identity1.getName();
+ String name2 = identity2.getIdentityType().getName() + "_" + identity2.getName();
+
+
+ // Complex search
+
+ Fqn fqn = Fqn.fromElements(RELATIONSHIPS_SEARCH_COMPLEX_NODE, name1);
+ getCache().getRoot().removeChild(fqn);
+ fqn = Fqn.fromElements(RELATIONSHIPS_SEARCH_COMPLEX_NODE, name2);
+ getCache().getRoot().removeChild(fqn);
+
+ // Simple search
+
+ getCache().getRoot().removeChild(Fqn.fromElements(RELATIONSHIPS_SEARCH_SIMPLE_NODE, name1));
+ getCache().getRoot().removeChild(Fqn.fromElements(RELATIONSHIPS_SEARCH_SIMPLE_NODE, name2));
+
+ fqn = Fqn.fromElements(RELATIONSHIPS_SEARCH_SIMPLE_NODE);
+ Set<String> names = getCache().getRoot().getChildrenNames();
+
+ for (String childName : names)
+ {
+ //
+ getCache().getRoot().removeChild(Fqn.fromElements(fqn, childName, name1));
+ getCache().getRoot().removeChild(Fqn.fromElements(fqn, childName, name2));
+ }
+
+ }
+
+ protected void invalidateRelationshipNameSearches(String name)
+ {
+ //TODO: at the moment it just trash up all relationships searches
+
+ removeNodeChildren(RELATIONSHIP_NAMES_SEARCH_ALL_NODE);
+ removeNodeChildren(RELATIONSHIP_NAMES_SEARCH_IO_NODE);
+ }
+
+
+
+ protected void putRelationshipNamesSearchIntoCache(IdentityObjectSearchControl[] controls, Set<String> results)
+ {
+
+ Fqn fqn = createRelationshipNamesAllSearchFqn(getControlsHash(controls));
+
+ Node node = getCache().getRoot().addChild(fqn);
+
+ node.put(NODE_SEARCH_RESULTS_KEY, results);
+
+ }
+
+ protected Set<String> getRelationshipNamesSearchFromCache(IdentityObjectSearchControl[] controls)
+ {
+
+ Fqn fqn = createRelationshipNamesAllSearchFqn(getControlsHash(controls));
+
+ Node node = getCache().getRoot().getChild(fqn);
+
+ if (node != null)
+ {
+ return (Set<String>)node.get(NODE_SEARCH_RESULTS_KEY);
+ }
+
+ return null;
+ }
+
+ protected void putRelationshipNamesSearchIntoCache(IdentityObject identity,
+ IdentityObjectSearchControl[] controls,
+ Set<String> results)
+ {
+
+ Fqn fqn = createRelationshipNamesIdentityObjectSearchFqn(identity, getControlsHash(controls));
+
+ Node node = getCache().getRoot().addChild(fqn);
+
+ node.put(NODE_SEARCH_RESULTS_KEY, results);
+
+ }
+
+ protected Set<String> getRelationshipNamesSearchFromCache(IdentityObject identity, IdentityObjectSearchControl[] controls)
+ {
+
+
+ Fqn fqn = createRelationshipNamesIdentityObjectSearchFqn(identity, getControlsHash(controls));
+
+ Node node = getCache().getRoot().getChild(fqn);
+
+ if (node != null)
+ {
+ return (Set<String>)node.get(NODE_SEARCH_RESULTS_KEY);
+ }
+ return null;
+ }
+
+ private int getControlsHash(IdentityObjectSearchControl[] controls)
+ {
+ // Convert controls to Set to have the same hashcode regardles order of controls
+ int hashcode = 0;
+
+ if (controls != null)
+ {
+ List<IdentityObjectSearchControl> list = Arrays.asList(controls);
+ Set<IdentityObjectSearchControl> controlsSet = new HashSet<IdentityObjectSearchControl>(list);
+ hashcode = controlsSet.hashCode();
+ }
+
+ return hashcode;
+ }
+
+}
Added: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/JBossCacheIdentityStoreWrapper.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/JBossCacheIdentityStoreWrapper.java (rev 0)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/cache/JBossCacheIdentityStoreWrapper.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -0,0 +1,566 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.identity.idm.impl.cache;
+
+import org.jboss.identity.idm.spi.store.IdentityStore;
+import org.jboss.identity.idm.spi.store.FeaturesMetaData;
+import org.jboss.identity.idm.spi.store.IdentityStoreInvocationContext;
+import org.jboss.identity.idm.spi.store.IdentityStoreSession;
+import org.jboss.identity.idm.spi.model.IdentityObject;
+import org.jboss.identity.idm.spi.model.IdentityObjectType;
+import org.jboss.identity.idm.spi.model.IdentityObjectRelationshipType;
+import org.jboss.identity.idm.spi.model.IdentityObjectRelationship;
+import org.jboss.identity.idm.spi.model.IdentityObjectCredential;
+import org.jboss.identity.idm.spi.model.IdentityObjectAttribute;
+import org.jboss.identity.idm.spi.searchcontrol.IdentityObjectSearchControl;
+import org.jboss.identity.idm.spi.exception.OperationNotSupportedException;
+import org.jboss.identity.idm.spi.configuration.metadata.IdentityObjectAttributeMetaData;
+import org.jboss.identity.idm.spi.configuration.metadata.IdentityStoreConfigurationMetaData;
+import org.jboss.identity.idm.exception.IdentityException;
+import org.jboss.cache.Cache;
+import org.jboss.cache.DefaultCacheFactory;
+import org.jboss.cache.CacheFactory;
+import org.jboss.cache.lock.IsolationLevel;
+import org.jboss.cache.transaction.GenericTransactionManagerLookup;
+import org.jboss.cache.config.Configuration;
+
+import java.util.Map;
+import java.util.Collection;
+import java.util.Set;
+import java.util.logging.Logger;
+
+/**
+ * IdentityStore implementation that wraps another IdentityStore and uses JBossCache to cache results.
+ *
+ * @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw Dawidowicz</a>
+ * @version : 0.1 $
+ */
+public class JBossCacheIdentityStoreWrapper extends IdentityStoreCacheSupport implements IdentityStore
+{
+
+ private static Logger log = Logger.getLogger(JBossCacheIdentityStoreWrapper.class.getName());
+
+
+ //TODO: cache and IdentitySession transaction
+
+ private final IdentityStore identityStore;
+
+ private final Cache cache;
+
+ // if update/add/remove operation on attributes should result in getAttributes() query to store new set in cache
+ // with many updates it can add additional cost
+ private boolean reloadAttributesToCacheOnUpdate = true;
+
+ public JBossCacheIdentityStoreWrapper(IdentityStore identityStore)
+ {
+
+ this.identityStore = identityStore;
+
+
+ Configuration config = new Configuration();
+
+
+// config.setTransactionManagerLookupClass( GenericTransactionManagerLookup.class.getName() );
+//
+// config.setIsolationLevel(IsolationLevel.READ_COMMITTED);
+//
+// config.setCacheMode(Configuration.CacheMode.LOCAL);
+//
+// config.setLockAcquisitionTimeout(15000);
+
+ CacheFactory factory = new DefaultCacheFactory();
+
+ this.cache = factory.createCache(config);
+
+ this.cache.start();
+
+ initResidentNodes(identityStore.getSupportedFeatures().getSupportedIdentityObjectTypes(),
+ identityStore.getSupportedFeatures().getSupportedRelationshipTypes());
+
+ log.fine("------------------------------------------------------");
+ log.fine("JBossCacheIdentityStoreWrapper created ....." +
+ "(IdentityStore: " + identityStore.getId() + ")");
+ log.fine("------------------------------------------------------");
+
+ }
+
+ public void bootstrap(IdentityStoreConfigurationMetaData configurationMD) throws IdentityException
+ {
+ identityStore.bootstrap(configurationMD);
+ }
+
+ public String getId()
+ {
+ return identityStore.getId();
+ }
+
+ public IdentityStoreSession createIdentityStoreSession() throws IdentityException
+ {
+ return identityStore.createIdentityStoreSession();
+ }
+
+ public FeaturesMetaData getSupportedFeatures()
+ {
+ return identityStore.getSupportedFeatures();
+ }
+
+
+
+ public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx,
+ String name,
+ IdentityObjectType identityObjectType) throws IdentityException
+ {
+ IdentityObject io = identityStore.createIdentityObject(invocationCtx, name, identityObjectType);
+
+ if (io != null)
+ {
+ //should also invalidate IO searches cache - searches/type - clear all children
+ invalidateCachedIdentityObjectSearches(io);
+ invalidateCachedIdentityObjectCount(identityObjectType);
+
+ putIntoCache(io);
+ }
+ return io;
+ }
+
+
+
+ public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx,
+ String name,
+ IdentityObjectType identityObjectType,
+ Map<String, String[]> attributes) throws IdentityException
+ {
+ IdentityObject io = identityStore.createIdentityObject(invocationCtx, name, identityObjectType, attributes);
+
+
+
+ if (io != null)
+ {
+ //should also invalidate IO searches cache - searches/type - clear all children
+ invalidateCachedIdentityObjectSearches(io);
+
+ //grab profile - because IS can add extra attributes we canno rely only on attributes passed
+
+ putIntoCache(io, identityStore.getAttributes(invocationCtx, io));
+ }
+ return io;
+ }
+
+ public void removeIdentityObject(IdentityStoreInvocationContext invocationCtx,
+ IdentityObject identity) throws IdentityException
+ {
+ identityStore.removeIdentityObject(invocationCtx, identity);
+
+ removeFromCache(identity);
+
+ invalidateCachedIdentityObjectSearches(identity);
+ invalidateCachedIdentityObjectCount(identity.getIdentityType());
+ }
+
+ public int getIdentityObjectsCount(IdentityStoreInvocationContext invocationCtx,
+ IdentityObjectType identityType) throws IdentityException
+ {
+ int count = getIdentityObjectCountFromCache(identityType);
+
+ if (count == -1)
+ {
+ count = identityStore.getIdentityObjectsCount(invocationCtx, identityType);
+
+ putIdentityObjectCountIntoCache(identityType, count);
+ }
+
+ return count;
+
+ }
+
+
+
+ public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext,
+ String name,
+ IdentityObjectType identityObjectType) throws IdentityException
+ {
+ IdentityObject io = getFromCache(name, identityObjectType);
+
+ if (io == null)
+ {
+ io = identityStore.findIdentityObject(invocationContext, name, identityObjectType);
+ putIntoCache(io);
+ return io;
+ }
+
+ return io;
+ }
+
+ public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext,
+ String id) throws IdentityException
+ {
+ IdentityObject io = getFromCache(id);
+
+ if (io == null)
+ {
+ io = identityStore.findIdentityObject(invocationContext, id);
+ putIntoCache(io);
+ return io;
+ }
+
+ return io;
+ }
+
+ public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCtx,
+ IdentityObjectType identityType,
+ IdentityObjectSearchControl[] controls) throws IdentityException
+ {
+
+ Collection<IdentityObject> results = getIdentityObjectSearchFromCache(identityType, controls);
+
+ if (results == null)
+ {
+ results = identityStore.findIdentityObject(invocationCtx, identityType, controls);
+
+ putIdentityObjectSearchIntoCache(identityType, controls, results);
+
+ // Put all the results into cache separately
+ for (IdentityObject result : results)
+ {
+ putIntoCache(result);
+ }
+ }
+
+ return results;
+
+
+
+ }
+
+
+
+ public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCtx,
+ IdentityObject identity,
+ IdentityObjectRelationshipType relationshipType,
+ boolean parent,
+ IdentityObjectSearchControl[] controls) throws IdentityException
+ {
+
+ Collection<IdentityObject> results = getIdentityObjectSearchFromCache(identity, relationshipType, parent, controls);
+
+ if (results == null)
+ {
+ results = identityStore.findIdentityObject(invocationCtx, identity, relationshipType, parent, controls);
+
+ putIdentityObjectSearchToCache(identity, relationshipType,parent,controls, results);
+
+ for (IdentityObject result : results)
+ {
+ putIntoCache(result);
+ }
+ }
+ return results;
+ }
+
+
+
+
+ public IdentityObjectRelationship createRelationship(IdentityStoreInvocationContext invocationCxt,
+ IdentityObject fromIdentity,
+ IdentityObject toIdentity,
+ IdentityObjectRelationshipType relationshipType,
+ String relationshipName,
+ boolean createNames) throws IdentityException
+ {
+ return identityStore.createRelationship(invocationCxt,
+ fromIdentity, toIdentity, relationshipType, relationshipName, createNames);
+ }
+
+ public void removeRelationship(IdentityStoreInvocationContext invocationCxt,
+ IdentityObject fromIdentity,
+ IdentityObject toIdentity,
+ IdentityObjectRelationshipType relationshipType,
+ String relationshipName) throws IdentityException
+ {
+ identityStore.removeRelationship(invocationCxt, fromIdentity, toIdentity, relationshipType, relationshipName);
+
+ invalidateCachedRelationshipSearches(fromIdentity, toIdentity, relationshipType, relationshipName);
+
+ }
+
+
+
+
+ public void removeRelationships(IdentityStoreInvocationContext invocationCtx,
+ IdentityObject identity1,
+ IdentityObject identity2,
+ boolean named) throws IdentityException
+ {
+ identityStore.removeRelationships(invocationCtx, identity1, identity2, named);
+
+ invalidateCachedRelationshipSearches(identity1, identity2, named);
+
+ }
+
+
+ public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
+ IdentityObject fromIdentity,
+ IdentityObject toIdentity,
+ IdentityObjectRelationshipType relationshipType) throws IdentityException
+ {
+
+
+ Set<IdentityObjectRelationship> results = getRelationshipsSearchFromCache(fromIdentity, toIdentity, relationshipType);
+
+ if (results == null)
+ {
+ results = identityStore.resolveRelationships(invocationCxt, fromIdentity, toIdentity, relationshipType);
+
+ putRelationshipsSearchIntoCache(fromIdentity, toIdentity, relationshipType, results);
+ }
+
+ return results;
+
+ }
+
+ public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCtx,
+ IdentityObject identity,
+ IdentityObjectRelationshipType relationshipType,
+ boolean parent,
+ boolean named,
+ String name) throws IdentityException
+ {
+ Set<IdentityObjectRelationship> results = getRelationshipsSearchFromCache(identity, relationshipType, parent, named, name);
+
+ if (results == null)
+ {
+ results = identityStore.resolveRelationships(invocationCtx,
+ identity, relationshipType, parent, named, name);
+
+ putRelationshipSearchIntoCache(identity, relationshipType, parent, named, name, results);
+ }
+
+ return results;
+ }
+
+ public String createRelationshipName(IdentityStoreInvocationContext ctx,
+ String name) throws IdentityException, OperationNotSupportedException
+ {
+
+ invalidateRelationshipNameSearches(name);
+
+ return identityStore.createRelationshipName(ctx, name);
+ }
+
+ public String removeRelationshipName(IdentityStoreInvocationContext ctx,
+ String name) throws IdentityException, OperationNotSupportedException
+ {
+ invalidateRelationshipNameSearches(name);
+
+ return identityStore.removeRelationshipName(ctx, name);
+ }
+
+ public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx,
+ IdentityObjectSearchControl[] controls) throws IdentityException, OperationNotSupportedException
+ {
+ Set<String> results = getRelationshipNamesSearchFromCache(controls);
+
+ if (results == null)
+ {
+ results = identityStore.getRelationshipNames(ctx, controls);
+
+ putRelationshipNamesSearchIntoCache(controls, results);
+ }
+
+ return results;
+
+ }
+
+ public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx,
+ IdentityObject identity,
+ IdentityObjectSearchControl[] controls) throws IdentityException, OperationNotSupportedException
+ {
+
+
+ Set<String> results = getRelationshipNamesSearchFromCache(identity, controls);
+
+ if (results == null)
+ {
+ results = identityStore.getRelationshipNames(ctx, identity, controls);
+
+ putRelationshipNamesSearchIntoCache(identity, controls, results);
+ }
+
+ return results;
+ }
+
+
+
+ public boolean validateCredential(IdentityStoreInvocationContext ctx,
+ IdentityObject identityObject,
+ IdentityObjectCredential credential) throws IdentityException
+ {
+ // Should not be cached
+ return identityStore.validateCredential(ctx, identityObject, credential);
+ }
+
+ public void updateCredential(IdentityStoreInvocationContext ctx,
+ IdentityObject identityObject,
+ IdentityObjectCredential credential) throws IdentityException
+ {
+ // Should not be cached
+ identityStore.updateCredential(ctx, identityObject, credential);
+ }
+
+ public Set<String> getSupportedAttributeNames(IdentityStoreInvocationContext invocationContext,
+ IdentityObjectType identityType) throws IdentityException
+ {
+ // Doesn't need to be cached
+ return identityStore.getSupportedAttributeNames(invocationContext, identityType);
+ }
+
+ public Map<String, IdentityObjectAttributeMetaData> getAttributesMetaData(IdentityStoreInvocationContext invocationContext,
+ IdentityObjectType identityType)
+ {
+ // Doesn't need to be cached
+ return identityStore.getAttributesMetaData(invocationContext, identityType);
+ }
+
+ public Map<String, IdentityObjectAttribute> getAttributes(IdentityStoreInvocationContext invocationContext,
+ IdentityObject identity) throws IdentityException
+ {
+ Map<String, IdentityObjectAttribute> results = getAttributesFromCache(identity.getName(), identity.getIdentityType());
+
+ if (results == null)
+ {
+ results = identityStore.getAttributes(invocationContext, identity);
+
+ if (results != null && results.size() > 0)
+ {
+ putIntoCache(identity, results);
+ }
+ }
+
+ return results;
+ }
+
+ public IdentityObjectAttribute getAttribute(IdentityStoreInvocationContext invocationContext,
+ IdentityObject identity,
+ String name) throws IdentityException
+ {
+ Map<String, IdentityObjectAttribute> results = getAttributesFromCache(identity.getName(), identity.getIdentityType());
+
+ if (results != null && results.containsKey(name))
+ {
+ return results.get(name);
+ }
+ else
+ {
+ return identityStore.getAttribute(invocationContext, identity, name);
+
+ //TODO: add this attribute to the node map
+ }
+
+ }
+
+ public void updateAttributes(IdentityStoreInvocationContext invocationCtx,
+ IdentityObject identity,
+ IdentityObjectAttribute[] attributes) throws IdentityException
+ {
+ identityStore.updateAttributes(invocationCtx, identity, attributes);
+
+ removeAttributesFromCache(identity);
+
+ if (reloadAttributesToCacheOnUpdate)
+ {
+ Map<String, IdentityObjectAttribute> results = identityStore.getAttributes(invocationCtx, identity);
+
+ if (results != null && results.size() > 0)
+ {
+ putIntoCache(identity, results);
+ }
+ }
+ else
+ {
+ // update attributes in node map directly
+ }
+
+ }
+
+ public void addAttributes(IdentityStoreInvocationContext invocationCtx,
+ IdentityObject identity,
+ IdentityObjectAttribute[] attributes) throws IdentityException
+ {
+ identityStore.addAttributes(invocationCtx, identity, attributes);
+
+ removeAttributesFromCache(identity);
+
+ if (reloadAttributesToCacheOnUpdate)
+ {
+ Map<String, IdentityObjectAttribute> results = identityStore.getAttributes(invocationCtx, identity);
+
+ if (results != null && results.size() > 0)
+ {
+ putIntoCache(identity, results);
+ }
+ }
+ else
+ {
+ // add attributes in node map directly
+ }
+ }
+
+ public void removeAttributes(IdentityStoreInvocationContext invocationCtx,
+ IdentityObject identity,
+ String[] attributeNames) throws IdentityException
+ {
+ identityStore.removeAttributes(invocationCtx, identity, attributeNames);
+
+ removeAttributesFromCache(identity);
+
+ if (reloadAttributesToCacheOnUpdate)
+ {
+ Map<String, IdentityObjectAttribute> results = identityStore.getAttributes(invocationCtx, identity);
+
+ if (results != null && results.size() > 0)
+ {
+ putIntoCache(identity, results);
+ }
+ }
+ else
+ {
+ // remove attributes in node map directly
+ }
+ }
+
+ protected Logger getLog()
+ {
+ return log;
+ }
+
+ protected Cache getCache()
+ {
+ return cache;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "JBossCacheIdentityStoreWrapper (IdentityStore=" + identityStore.getId() + ")";
+ }
+}
Modified: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/model/ldap/LDAPIdentityObjectImpl.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/model/ldap/LDAPIdentityObjectImpl.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/model/ldap/LDAPIdentityObjectImpl.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -28,12 +28,13 @@
import java.util.Set;
import java.util.Map;
+import java.io.Serializable;
/**
* @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw Dawidowicz</a>
* @version : 0.1 $
*/
-public class LDAPIdentityObjectImpl implements IdentityObject
+public class LDAPIdentityObjectImpl implements IdentityObject, Serializable
{
private String dn;
Modified: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/types/SimpleIdentityObject.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/types/SimpleIdentityObject.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/types/SimpleIdentityObject.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -25,7 +25,9 @@
import org.jboss.identity.idm.spi.model.IdentityObject;
import org.jboss.identity.idm.spi.model.IdentityObjectType;
+import java.io.Serializable;
+
/**
* Very simple identity object
*
@@ -33,7 +35,7 @@
*
* @since Aug 6, 2008
*/
-public class SimpleIdentityObject implements IdentityObject
+public class SimpleIdentityObject implements IdentityObject, Serializable
{
private final String name;
Modified: idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/types/SimpleIdentityObjectType.java
===================================================================
--- idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/types/SimpleIdentityObjectType.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/src/main/java/org/jboss/identity/idm/impl/types/SimpleIdentityObjectType.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -24,11 +24,13 @@
import org.jboss.identity.idm.spi.model.IdentityObjectType;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw Dawidowicz</a>
* @version : 0.1 $
*/
-public class SimpleIdentityObjectType implements IdentityObjectType
+public class SimpleIdentityObjectType implements IdentityObjectType, Serializable
{
private String name;
Modified: idm/trunk/idm/src/test/java/org/jboss/identity/idm/impl/SimpleIdentityObjectTypeImpl.java
===================================================================
--- idm/trunk/idm/src/test/java/org/jboss/identity/idm/impl/SimpleIdentityObjectTypeImpl.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm/src/test/java/org/jboss/identity/idm/impl/SimpleIdentityObjectTypeImpl.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -24,11 +24,13 @@
import org.jboss.identity.idm.spi.model.IdentityObjectType;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw Dawidowicz</a>
* @version : 0.1 $
*/
-public class SimpleIdentityObjectTypeImpl implements IdentityObjectType
+public class SimpleIdentityObjectTypeImpl implements IdentityObjectType, Serializable
{
String name;
Added: idm/trunk/idm/src/test/resources/logging.properties
===================================================================
--- idm/trunk/idm/src/test/resources/logging.properties (rev 0)
+++ idm/trunk/idm/src/test/resources/logging.properties 2009-01-29 18:51:55 UTC (rev 260)
@@ -0,0 +1,61 @@
+# Properties file which configures the operation of the JDK
+# logging facility.
+
+# The system will look for this config file, first using
+# a System property specified at startup:
+#
+# >java -Djava.util.logging.config.file=myLoggingConfigFilePath
+#
+# If this property is not specified, then the config file is
+# retrieved from its default location at:
+#
+# JDK_HOME/jre/lib/logging.properties
+
+# Global logging properties.
+# ------------------------------------------
+# The set of handlers to be loaded upon startup.
+# Comma-separated list of class names.
+# (? LogManager docs say no comma here, but JDK example has comma.)
+handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
+
+# Default global logging level.
+# Loggers and Handlers may override this level
+.level=FINER
+
+# Loggers
+# ------------------------------------------
+# Loggers are usually attached to packages.
+# Here, the level for each package is specified.
+# The global level is used by default, so levels
+# specified here simply act as an override.
+
+#myapp.ui.level=ALL
+#myapp.business.level=CONFIG
+#myapp.data.level=SEVERE
+
+# Handlers
+# -----------------------------------------
+
+# --- ConsoleHandler ---
+# Override of global logging level
+java.util.logging.ConsoleHandler.level=FINER
+java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
+
+# --- FileHandler ---
+# Override of global logging level
+java.util.logging.FileHandler.level=ALL
+
+# Naming style for the output file:
+# (The output file is placed in the directory
+# defined by the "user.home" System property.)
+java.util.logging.FileHandler.pattern=%h/java%u.log
+
+# Limiting size of output file in bytes:
+java.util.logging.FileHandler.limit=50000
+
+# Number of output files to cycle through, by appending an
+# integer to the base file name:
+java.util.logging.FileHandler.count=1
+
+# Style of output (Simple or XML):
+java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
\ No newline at end of file
Modified: idm/trunk/idm-spi/src/main/java/org/jboss/identity/idm/spi/store/IdentityStore.java
===================================================================
--- idm/trunk/idm-spi/src/main/java/org/jboss/identity/idm/spi/store/IdentityStore.java 2009-01-28 22:31:17 UTC (rev 259)
+++ idm/trunk/idm-spi/src/main/java/org/jboss/identity/idm/spi/store/IdentityStore.java 2009-01-29 18:51:55 UTC (rev 260)
@@ -96,8 +96,8 @@
Map<String, String[]> attributes) throws IdentityException;
-
+
/**
* Remove given identity
*
15 years, 3 months