IGF AttributeServices Milestone 0.2 Checked In!
The initial code-drop for IGF Attribute Services API has been checked in. This drop is based on igf-carml-08 schema (and is included in the project code repository).
In SVN you can either download the head version (under trunk), or the milestone0.2 version under branches.
Within each of trunk and branches/milestone0.2 you will find two eclipse projects:
- org.openliberty.igf.attributeServices
- org.openliberty.igf.attributeServices.test
The latter project is the JUnit code that tests the API in the first project. The JUnit code is currently the best way to see examples of how to use the API at this time.
Note: I don’t see any reason why these projects shouldn’t work in NetBeans or JDeveloper. However, I must confess I haven’t tested them. I was following the id-wsf client project’s example by using Eclipse. Since this release is still an early release, no build files have been constructed yet. This release is for comment and input.
Highlights for this check-in are:
- Basic implementation of the Attribute Services API including
- Carml Schema Declaration
- Simplistic WS-Policy support - policy is currently not interpreted at this time (see note below)
- Carml Transaction Declaration (Add, Authenticate, Delete, Modify, Read, Search)
- Transaction Implementation (for all above)
- IGF Stack Provider Interface - the interface that products like OVD need to implement to accept an IGF Attribute Service client.
- CARML document reader and writer methods
- JAAS LoginModule Implementation - rudimentary integration with platform/container security
- JUnit tests validating operations above. Note: the Write CARML step fails since XML is not done
- A Test provider that simulates a memory based repository.
There are still many items to implement, some of which are:
- Policy Assertions is still just a dumb object. And igf-appidpolicy and igf-deployid policy are not implemented. I’m still looking for a good open source implementation of WS-Policy - I found Apache Neethi, but it had some questionable dependencies that I still need to research.
- No server-side support such as AAPML
- IDE Integration Tools - this is another (much bigger) project that will happen likely after Liberty publishes IGF specs.
- There is no end-to-end demo. Next step is to write providers for Higgins IdAS and other possible connectors or attribute authorities.
- Deployment management - the API does not handle configuration management. This would be the job of the provider (e.g. OVD, Higgins) to decide how best to handle this.
The API description on the openLiberty site has been revised. The chief reason is we made some major changes after broader discussion:
- Separated schema from transactions. Now schema is declared on its own and transactions use schema….rather than the other way around. This is more friendly to enterprises who would like to use standardized schema or use enterprise standard schemas.
- Introduction of Roles and Filters
- Support for WS-Policy and the new drafts for (igf-appIdPolicy and igf-DeployIdPolicy)
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.
