As covered in two previous blog posts which formed a quick tutorial, Yadis is a specification which describes a protocol for retrieving Service information valid for a specific ID. As I noted then, the simplest example is figuring out from a user’s OpenID where we should fire off authentication requests. In OpenID, Yadis can be used to grab a user’s XRDS document, an XML list of services which should provide the URL and service types of the user’s OpenID Provider.

Back in late February, I submitted a proposal to the Zend Framework wiki to see if Zend_Service_Yadis could be added as part of an overall objective to natively support OpenID (and related technologies) within the framework. Yadis is a suitable standalone service since it’s not OpenID specific and is therefore useful for a number of other purposes. That proposal has seen a few revisions since the initial draft so I’m hoping that by the time Zend Framework 1.0 is released it’s in good enough shape to allow for a comprehensive review and critique.

Of course, since I’ve taken a break from my other personal projects, I also started on the coding immediately. This is being versioned over at http://svn.astrumfutura.org (subversion url) and is viewable online with php syntax highlighting at http://websvn.astrumfutura.com (see Yadis.php and the Yadis subdirectory).

Anyways, this is progressing towards “completion”. I won’t say it is complete (or even so much as Alpha quality) until I know for certain whether it’s an acceptable Zend Framework component or not. If it is, further review and requirements may be made by the reviewers and public which would form the basis for any acceptable release.

A few quick points. The component will not support using Internationalised Resource Indicators (IRIs) since they cannot (yet) be validated by the Zend Framework. This is rather difficult considering each national registrar has varying character restrictions within IRIs, and that IRIs would need to be mapped (punycode) to a matching URI before use. Support for XRIs will be supported, but may not initially be concrete. To be honest I find the concept of the XRI unintuitive, they don’t seen to offer any compelling advantages over the URI, and it’s not like browsers support them. Still, what the Yadis and OpenID specs declare is what I need to implement.

For those out there curious about implementing OpenID, or Yadis, your feedback and comments would be welcome. I suspect most would prefer commenting on a full OpenID component since that’s where all the excitement is at ;) , so hopefully I can slot in a fuller OpenID proposal in the near future once the Yadis implementation is fully stable.

Related posts:

  1. Zend_Service_Yadis Proposal
  2. OpenID library for the Zend Framework?
  3. Yadis: Service Discovery for Identities like OpenID (Part 2)
  4. Yadis: Service Discovery for Identities like OpenID (Part 1)
  5. OpenID support for PHP openssl extension? Yes, please.