Bootstrapping ID-WSF 2.0 with OpenID Presentation
IIW Spring 2008 was excellent. The energy was all about collaboration. Cardspace/Infocard, OpenID, and Liberty (SAMLv2/ID-WSF 2.0) were all represented well. The focus was on how to pull these technologies together, leveraging the best parts of each. So the setting was perfect for the convergence demo that I had prepared, bootstrapping ID-WSF 2.0 with OpenID.
The demo was 4 applications:
RED-ID an OpenID Provider (OP) and an ID-WSF Client, providing attributes through OpenID Attribute extensions which originated from the user’s ID-WSF Profile Service.
PAdMan a relying party (RP) Personal Address Manager built on top of ID-WSF, using the user’s ID-WSF Personal Profile service, bootstrapped from an endpoint reference provided by the OP.
ID-TELE an identity aware telco RP that understands how to pull address data from the ID-WSF personal profile service, and how to set up a subscription for an address change.
DUDEyll a twitter RP.
I demonstrated OpenID SSO passing attributes supplied by an ID-WSF layer, and then some deeper usage of the Personal Profile Service across all 4 apps.
Recent Updates On The Attribute Services Project
There has been a lot of activity lately on the Attribute Services API (IGF). Since milestone 0.2 was published, we have recently checked in updates to reflect the new IGF-CARML-09 draft and checked in a first implementation of WS-Policy support for the API. Milestone 0.3 is well on its way to completion!
We still have yet to implement a provider to a full function protocol adapter like Higgins IdAS, but that should come in Milestone 0.4 or so.
For now, I’d like to encourage folks to check out the API. We’re looking for was to further simplify the developer’s experience and make it attractive. You’ll notice, after declaring the data used by the application that using the API is dramatically trivial compared to older APIs like JNDI or JDBC. Still there is more that could be done.
Enjoy.
beta!!!
This is the official announcement for the beta release of the ID-WSF 2.0 ClientLib! We have been working like mad to get this release out (hence the photo with this post). Lots of new code was cut, lots of old code was gutted or reworked, and there are many new features.
This release marks excellent progress, but there is still a lot of work to do. The beta is not bug free nor is it thoroughly tested. It is ready for other people to sink their teeth into and give feedback, make requests, or write some code. For development purposes we are currently testing against two ID-WSF WSPs and have access to a third (HP Select Federation) which we hope to have working with the library before Version 1 release planned later this year.
This beta would not have been possible without help from a number of people. Notably Conor Cahill, Sampo Kellomäki, and Scott Cantor & the OpenSAML guys. Luckily these people also wrote many of the specifications documents.
What’s New:
- Liberty SOAP Bindings fully implemented
- Handling of CredentialsContext
- Handling of EndpointUpdate
- Added WSFMessageSigner
- TLS and ClientTLS support
- Bearer & SAMLv2 Support (Signing!)
- CRAM-MD5 SASL Authentication
- Addition of ID-SIS-DAP XML Tooling and basic Service Client
- Addition of WSCUtilities to simplify basic ID-* operations
- Simplified approach to creating OpenSAML XML Tooling classes (Element, marshaller, unmarshaller, and builder as a self contained unit)
- javadoc now available
- sample code available
- switched from HttpURLConnection to not-yet-commons-ssl for transport
- Added BaseServiceClient
- Reworked the website to get you to the code faster
- Testing has begun with Symlabs Federated Identity
What remains:
- Lots of testing
- Liberty Certification
- OpenLiberty public testing environment
- compress the Tooling Objects that rely on 4 classes into 1 as per the new method
- sample application using the library
- more utility methods
- Build out: ID-SIS-DAP, People Service
- More Service Clients: ID-SIS SMS and MMS, Contact Book (ID-SIS-CB), SSOService …
If you have questions or interest, please send me a note at asa.openlibertyREMOVEIT@zenn.net (remove the REMOVEIT from the email).
Also, I will be in Santa Clara at the Liberty Alliance plenary meeting, all week. On Monday I’ll be presenting the library. If you are in the area or at the plenary and you want to check it out, do some coding, interop, anything just send me a note and I’ll send you my cell #.
Bulding ID-SIS-DAP
The BETA deadline (February 16th) is rapidly approaching! With this in mind there are two major goals. The first is to have signing enabled and the second is to have an ID-SIS-DAP service client(SC) available. Development on the ID-SIS-DAP SC is going very well and has been a good learning experience. Here’s why:
The ID-WSF2.0 ClientLib uses OpenSAML xmltooling, ws, and saml libraries. There are no xsd code generators for the java-xmltooling classes, so I have spent a great deal of time becoming acquainted with the xsd for the various liberty specifications. I also spend a lot of time writing marshallers, unmarshallers, and builders. So for each element, there is the potential for 4 files. This gets big really fast. With the ID-SIS-DAP SC I began to embed the marshaller, unmarshaller, and builder inside the element class as static internal classes. Yay!! This has taken care of a tremendous amount of clutter, and generally helps with readability.
If you are using OpwnSAML’s java-xmltooling and you want to use this method, make sure that the classes are static, and reference the internal classes in the config file like this:
<MarshallingClass className=”org.openliberty.xmltooling.idsis.dap.DAPModifyItem$Marshaller” />
Notice the “$” between DAPModifyItem and Marshaller. This indicates that Marshaller is an internal class to DAPModifyItem.
Oh, and from Chad at OpenSAML:
The Java OpenSAML 2.0 Release Candidate 2 release is now available at the normal download site.
http://shibboleth.internet2.edu/downloads/opensaml/java/
This release includes minor bug fixes found in RC1 and includes the generated javadocs. This is the last release candidate and the next release will be the final 2.0 release.
The ClientLib tests fine with RC2.
ClientLib Interop at January TEG Interim with Symlabs
Late news, but still very relevant. Earlier this month we took the alpha to Boston for a presentation at the Jan 8-10 TEG Interim, and interoperability testing with Symlabs Federated Identity Suite. We also made a visit to Parity Communications to meet with members of the Higgins Project to discuss some project synergies. Brett will follow with a post that has more details.
The presentation at the TEG Interim lasted about an hour and covered as many aspects of the project as possible. We discussed the website and the tools we’re using for collaboration, we went through some code, specifically the non standard DST 2.1 based Profile Service, and discussed briefly the trajectory of the project as a whole. Our next deadline (BETA), approaching quickly, is two days after Valentine’s Day, February 16th!!!! Not sure why we keep choosing deadline right around holidays, but there you have it.
The big news from going to Boston was having a chance to meet with Sampo Kellomäki, the Chief Architect at Symlabs. Sampo is extremely knowledgeable in the development and practice of ID-WSF and has written several Liberty specifications. He also has an open source project ZXID, which is aiming for a full stack implementation of all federated identity management and identity web services protocols. ZXID is written in c and supports PERL, PHP, and Java. It is 95% ID-WSF 2.0 feature complete. We are planning on testing with ZXID as soon as possible, using the Java support.
In Boston Sampo and I tested the ClientLib against Symlabs Federated Identity Suite. We successfully authenticated using the Symlabs AS and pulled a Discovery EPR. We then used the Discovery EPR to get another Discovery EPR from the DS. This was fun, and it all went off really well. So, we went to Boston and celebrated. The next day we did some more work and were able to use the DST 2.1 reference implementation to create a ID-DAP query and parse the response. ID-DAP (which is part of Symlabs Federated Identity) provides federated identity based access to an LDAP directory. It is a great example of an in production service that utilizes DST 2.1.
Overall it was a very successful trip. I learned a lot, did some testing, made some friends, and came back to Berkshire County in one piece. Keep your eyes open for the BETA an Feb 16th!
WSC ClientLib Alpha Delivered!!
We are very pleased to announce that, after many setbacks and challenges, the ClientLib Alpha is now available online! As of this build, it is possible to use the AS client and the DS client with Conor Cahill’s WSP. The Personal Profile Service Client (operating on DST 2.1) is now complete — and there is now a shell of a People Service Client as well.
To enable you to begin experimenting with this build, we’ve put together a simple quick start, involving 5 simple steps. Please feel free to take a look and let us know what you think, but bear in mind that this is still Alpha code!
