May 23, 2007
From OpenLiberty.org Wiki
Contents |
Open Liberty
Face-to-Face meeting – Georgetown 23-May-07
Attendees
- Asa Hardcastle – Zenn
- Curtis Jones – Zenn
- Conor Cahill – Intel
- George Fletcher – AOL
- Chad La Joie – Internet2
Minutes
Open-ID
- Asa: Should we demonstrate OpenID interoperability?
- George: Use-case drives it – who uses OpenID? People who just want to get on without true authentication, etc. We can show technical reasons for doing it, but what’s the value?
- NOTE: Amazon – S3-based back-end – “Jungle Monkey”?
- George: Paul had started doc discussing translation OpenID <-> ID-WSF
- Conor: We should focus initially on bootstrapping off of SAML – forget about OpenID for now
- Asa: I want to find people to help build this – OpenID has a community
- George: Various historical discussions have occurred about how to roll in/embrace OpenID in various ways
- Asa & George: There’s no openly available services (People Service) or otherwise for developers to bounce up against
- Conor: Once we get a working WSC toolkit – deals w/ID-WSF framework layer – we work on a WSP layer. A toolkit to provide a WSP
- Conor: His toolkit can provide a WSP (Java)
Steps
- All: It’s a chicken & egg situation (WSP/WSC) we need both the chicken and the egg to really get rolling
- Curtis: If we could inspire those companies that have closed implementations to open up and donate implementations to the community, it would help
- Sampo’s is closest to doing this
XML Tooling
- sa: This is the basis for all our development
- Asa: There’s this marshalling/unmarshalling method in place – I can see how it could be implemented in different ways, but I’m curious about what’s driving your prefered approach
- Conor: (at white-board – replicated in Graffle by Asa)
- George: You will likely need to manage multiple contexts per user – one user context, and then one service context for each service they’re working with
- Asa: So far, the XML tooling emphasizes the idea of fully integrating objects into the XML tooling. You register that things of type “person” are handled by these mechanisms.
- Asa: My understanding of desired approach (e.g., EPR), you have many sub-elements. Now, for each element, you’d have to build an objects and a set of handlers. Is this correct?
- Chad: Not necessarily. The marshallers/unmarshallars “chain” – you could create one of each that takes care of everything. Or you could have a parent that delegates to children as necessary.
- George: We need to add to our list of things to do for developers, the list of marshallers/unmarshallers for everything.
- Chad: For our code, we go with maximum delegation (granularity) = lots and lots of classes.
- Group: It’s clear that this is tedious & burdensome.
- Group: It’s not clear that this can be easily automated – but is doable by a semi-intelligent programmer
- George: We should first implement and prove that this approach works, then find a way to wrap/automate the tedium
- Conor: I’ve done it both ways – one direction, I go straight to the DOM (no marshalling/unmarshalling) and in the other direction, I use streams w/marshalling/unmarshalling
- Conor: Different DOM/XML-processor tools may not play well together if we wrap this stuff
- Chad: We’re not doing any of this for performance or speed – not a goal. We were to make this easy to use by our developers.
- Asa: If we were to wrap the EPR -- kept it primarily DOM-based, we could make a big class that does it all, but extracts the difficult bits (SAML). If we were to do this, is it more likely that we’d produce a “non-normal” document?
- Chad: Signing is in the DOM – so theoretically, no.
- Conor: Signing is painful
- Chad: Encryption is even more painful
- George: For user, for every new WSP, there’s a WSC-interface piece required. Should creating that be the responsibility of the WSP developer?
Conor’s walk-through
- Uses Fedora Linux under Windows (VMWare) CLIENT LEVEL – C++ (C writtin in C++)
- Make with no args shows options
- Applibs contains “application-level” libraries – all about WSCs accessing a service
- Lib contains lower-level ID-WSF-level libraries
- Unusual exception:
- LibDisco -> used by WSPs to manage EPRs
- LibAuth -> contains discovery component used by WSC
- When one WSP needs to talk to another WSP, it is acting as a WSC
- Most (vast majority) users will have one instance of auth and one discovery service
- “IDP discovery”
- Asa: I like the idea of making each ID-WSF step distinct at the WSC library level – and then providing a higher-level library interface that bundles them together to make it easy for developers SERVICE LEVEL – JAVA
- Uses PostgreSQL for database backend stuff – but doesn’t use any PostGreSQL-specific stuf
- In the liberty folder, he has a complete set of the Liberty spec reference files
- Axis requirs WSDLs – they are the easiest way to get the code automatically generated
- ID-WSF directory contains the ID-WSF level classe
- Build-place where all code is compiled
- Dist – where jar files go
- Source – modified source code (that conor wrote) goes
- Database access logic is separated – app-level code doesn’t call db stuff directly
- Typically only replaces the implementation class
- Stores modified source in different directory
- Ant then over-writes code generated from WSDL with modified code
- This model has risk of: modifying WSDL (which changes generated code) but failing to also apply changes (manually) to modified code – only to have the “old” modified code overwrite the “new” generated code – stepping on changes and creating problems
- Conor: disclaimer: “chose to write this in Java because I didn’t know Java – so it’s not great Java”
Chad’s XML-tooling walk-through
- a. three to focus on:
- opensaml2
- openws
- xmltooling
- XML tooling stuff is done, the client stuff (HTTPS) is not (yet
- Marshallers: data objects -> XML
- Unmarshallers: XML -> data objects
- XML objects are simply data stores – logic is above this level
- There is a lot of code in xmltooling to deal with moving xml from one place to another and normalizing the namespaces appropriately
- Asa: What instantiation approach would you recommend
- Chad: In Shib 2, we’re using “spring”
- NOTE: Scott Cantor is through-and-through a C developer
- Chad: static loading can cause problems in containers (e.g., Axis
- Asa: That says that we’re going to want to do this differently – because containers will be used a lo
- Conor: Not sure about that – might well be some plain-jane developers
- George: They’ll still be calling from some containe
- “Velocity” = a templating mechanism
- Conor: Need to be able to support simple string sending
