<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Will Norris &#187; ldap</title>
	<atom:link href="http://willnorris.com/tag/ldap/feed" rel="self" type="application/rss+xml" />
	<link>http://willnorris.com</link>
	<description>there&#039;s more to life than this</description>
	<lastBuildDate>Sun, 05 Feb 2012 17:41:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19719</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
		<item>
		<title>try { reuse; } catch (Ex) { reinvent; }</title>
		<link>http://willnorris.com/2007/11/try-reuse-catch-ex-reinvent</link>
		<comments>http://willnorris.com/2007/11/try-reuse-catch-ex-reinvent#comments</comments>
		<pubDate>Tue, 06 Nov 2007 03:49:45 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[hcard]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[openid-ax]]></category>
		<category><![CDATA[saml]]></category>
		<category><![CDATA[shibboleth]]></category>

		<guid isPermaLink="false">http://willnorris.com/2007/11/try-reuse-catch-ex-reinvent</guid>
		<description><![CDATA[Earlier today, I wrote about the limitations of hCard primarily in regards to private data. After talking with Chris briefly and then reading Tantek&#8217;s thoughts on the topic, it clicked with me. I wouldn&#8217;t normally make two posts so close together about such similar topics, but I realize now these really are two different topics. [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today, I wrote about the <a href="http://willnorris.com/2007/11/hcard-is-not-a-provisioning-engine-for-private-data">limitations of hCard</a> primarily in regards to private data.  After talking with <a href="http://factoryjoe.com/blog/2007/11/01/hcard-for-openid-simple-registration-and-attribute-exchange/">Chris</a> briefly and then reading <a href="http://tantek.com/log/2007/11.html#d02t2318">Tantek&#8217;s thoughts</a> on the topic, it clicked with me.  I wouldn&#8217;t normally make two posts so close together about such similar topics, but I realize now these really are two different topics.  The concerns about hCard and privacy are very real and certainly worth consideration, but what Chris was really getting at was attribute naming.</p>

<p><span id="more-208"></span></p>

<h3>OpenID attributes</h3>

<p>The OpenID <a href="http://openid.net/specs/openid-simple-registration-extension-1_0.html">Simple Registration Extension</a> was designed, much like OpenID itself, to address a very specific use case &#8212; providing the most common data requested when registering at a new website (things like name, email, gender, etc).  It defines a fixed list of nine attributes that can be provided, and it works well for what it does, but it&#8217;s a bit rigid when one tries to do anything more with it.  Even before the final draft of the SREG extension had been published, work was already being done on a more flexible extension for <a href="http://openid.net/specs/openid-attribute-exchange-1_0-07.html">attribute exchange</a>.  This new extension defined only a mechanism for transferring attributes, but didn&#8217;t prescribe a fixed list of attributes.  But in order to be at all useful, two parties must be assured that they are both talking about the same attribute.  Therefore an attribute registry was established at <a href="http://www.axschema.org/">axschema.org</a> and a number of attributes (formatted as URLs) have <a href="http://www.axschema.org/types/">already been defined</a> which will likely be useful in common scenarios.</p>

<h3>Attributes in Higher Education</h3>

<p>Developed in the early 90s at the University of Michigan, LDAP quickly grew favor with higher education institutions to replace heavier-weight directory protocols.  A number of LDAP object classes were defined to provide attributes deemed useful in certain contexts, for example <a href="http://www.faqs.org/rfcs/rfc2798.html">rfc2798</a> defined <code>inetOrgPerson</code> which addressed the needs of &#8220;Internet and Intranet directory service deployments&#8221;.  Higher Education had its own unique needs, so in 2001 Internet2 published the first version of the <a href="http://www.educause.edu/eduperson/">eduPerson Object Class</a>.  If (and only if) institutions required additional attributes beyond those provided by some already published object class, it was common practice to define a local object class to house those attributes.</p>

<p>Within a few years, the SAML specification was published and <a href="http://shibboleth.internet2.edu/">Shibboleth</a> began finding its way onto many college campuses.  Though not required by SAML, Shibboleth recommended the use of URIs for SAML attribute names, and subsequently established a <a href="http://www.google.com/search?q=cache:http://middleware.internet2.edu/dir/docs/internet2-mace-dir-saml-attributes-200604.pdf">collection of URN values</a> to represent common LDAP attributes, including those defined in the eduPerson object class.  As before, if campuses needed to include additional attributes in a SAML assertion, they were defined within a local namespace.  Today, it is very common to see a mix of attributes at USC including those defined by Internet2:</p>

<ul>
<li><code>urn:mace:dir:attribute-def:displayName</code></li>
<li><code>urn:mace:dir:attribute-def:eduPersonAffiliation</code></li>
</ul>

<p>as well as those we have defined locally at USC:</p>

<ul>
<li><code>urn:mace:usc.edu:gds:attribute-def:uscUSCID</code></li>
<li><code>urn:mace:usc.edu:gds:attribute-def:uscStudentDegreeProgram</code></li>
</ul>

<h3>Applying Precedence</h3>

<p>No one is pretending that the fixed set of attributes defined in <a href="http://www.faqs.org/rfcs/rfc2426.html">rfc2426</a> is the definitive list of attributes that could possibly be useful in OpenID, no more than eduPerson was the exhaustive list of attributes for every university that used it.  All that is being questioned is why did Attribute Exchange redefine all that was already established in vCard?  I would strongly support Tantek&#8217;s third proposal of hosting the official hCard XMDP profile at <code>http://microformats.org/profile/hcard</code>, so that AX can leverage the hCard specification while maintaining URL based attribute names.  And given that it appears as though <a href="http://willnorris.com/openid-support">no one is currently supporting AX</a>, <strong>now</strong> is the time to make this change.</p>

<p>(For the non-technical, the title roughly reads &#8220;First try to reuse.  Only if that doesn&#8217;t work, then reinvent.&#8221;)</p>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2007/11/try-reuse-catch-ex-reinvent/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenID is not a provisioning engine</title>
		<link>http://willnorris.com/2007/10/openid-is-not-a-provisioning-engine</link>
		<comments>http://willnorris.com/2007/10/openid-is-not-a-provisioning-engine#comments</comments>
		<pubDate>Tue, 30 Oct 2007 08:11:46 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[identity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[hcard]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[openid-ax]]></category>
		<category><![CDATA[provisioning]]></category>
		<category><![CDATA[saml]]></category>
		<category><![CDATA[shibboleth]]></category>

		<guid isPermaLink="false">http://willnorris.com/2007/10/openid-is-not-a-provisioning-engine</guid>
		<description><![CDATA[In talking about the future possibilities of OpenID 2.0 and the Attribute Exchange extension, James Henstridge mentions, Imagine being able to update your shipping address in one place when you move house and having all the online retailers you use receive the updated address immediately. Or changing your email address and having all the bugzilla [...]]]></description>
			<content:encoded><![CDATA[<p>In talking about the future possibilities of OpenID 2.0 and the <a href="http://openid.net/specs/openid-attribute-exchange-1_0-07.html">Attribute Exchange</a> extension, <a href="http://blogs.gnome.org/jamesh/2007/10/23/openid-20/">James Henstridge</a> mentions,</p>

<blockquote>
  <p>Imagine being able to update your shipping address in one place when you 
  move house and having all the online retailers you use receive the updated 
  address immediately. Or changing your email address and having all the 
  bugzilla instances you use pick up the new address instantly (perhaps 
  requiring you to verify the new address first, of course).</p>
</blockquote>

<p>While I agree this kind of experience would be very neat, it is not a use case for OpenID nor the Attribute Exchange extension.<span id="more-206"></span>  I am not surprised to hear someone say this, as this is a common point of confusion here at USC in regards to <a href="http://shibboleth.internet2.edu/">Shibboleth</a>.  When it comes to attribute delivery, both OpenID and SAML are primarily designed to provide data <em>at the time of login</em> <sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>.  So this means that if a user never logs in to your service, you never get any data about them.  And if a user&#8217;s data changes since their last login, you don&#8217;t find out about until they <em>next</em> login, since that is the only time attribute delivery occurs.  It is also important to note that you are typically only getting data about the user that is logging in, no one else.  You can&#8217;t treat an OpenID provider as a lookup service to get data about some other user.</p>

<p>So how does a relying party update their data without waiting on the user to login again?  One option is to have the data pushed to each service using some kind of messaging hub.  There is a whole market for enterprise messaging complete with its own set of acronyms like <a href="http://en.wikipedia.org/wiki/Enterprise_service_bus">ESB</a>, <a href="http://en.wikipedia.org/wiki/Enterprise_messaging_system">EMS</a>, <a href="http://en.wikipedia.org/wiki/Enterprise_application_integration">EAI</a>, and many many more.  I&#8217;m particularly interested in a project developed by a colleague of mine in Sweden called <a href="http://devel.it.su.se/pub/jsp/polopoly.jsp?d=1227">JEvent</a>, which uses the XMPP <a href="http://www.xmpp.org/extensions/xep-0060.html">Publish-Subscribe</a> protocol to deliver these types of messages using a standard XMPP server in the middle.  Your Jabber messaging window becomes your console. :)</p>

<p>The other method of getting at user data is for each relying party to pull the data.  This is the model we use at USC, where that mechanism for pulling data is LDAP.  A number of services on campus use LDAP to address both use cases mentioned above &#8212; refreshing data about users, as well as looking up data about someone other than the user who logged in.  So what&#8217;s the equivalent in the decentralized OpenID world?  Well honestly there isn&#8217;t anything just yet but we have a good foundation.  Thanks to <a href="http://microformats.org/">microformats</a> like <a href="http://microformats.org/wiki/hcard">hCard</a>, you can publish your data in a standard, machine-parsable format that your online retailers or bugzilla instances could watch periodically.  When you update your hCard on your homepage they can respond in kind, perhaps by immediately updating their databases or sending you a confirmation email of the change.  Right now all of this data is decentralized, published on personal blogs and webpages.  I don&#8217;t argue that this data should certainly be under individual control, but it puts an awful large burden on the individual service providers to do all that spidering.  I don&#8217;t know what the answer is, but I&#8217;ve been thinking about an hCard crawler with an LDAP front-end as a simple place to start.  Configure Apple AddressBook or Outlook to use LDAP, and you&#8217;re off and running.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>SAML is actually a little more flexible here, but it&#8217;s not the common use case&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2007/10/openid-is-not-a-provisioning-engine/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Temporary Password Change</title>
		<link>http://willnorris.com/2005/04/temporary-password-change</link>
		<comments>http://willnorris.com/2005/04/temporary-password-change#comments</comments>
		<pubDate>Fri, 22 Apr 2005 14:39:12 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[opendirectory]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://willnorris.com/wordpress/?p=10</guid>
		<description><![CDATA[I was thinking about something this morning and wanted to write it down before I forget&#8230; here at Visible School we often need to login to a user&#8217;s machine as that user while we&#8217;re working on it to ensure proper file permissions, set preferences, etc. Typically, the easiest thing to do is to change the [...]]]></description>
			<content:encoded><![CDATA[<p>I was thinking about something this morning and wanted to write it down before I
forget&#8230; here at <a href="http://www.visibleschool.com">Visible School</a> we often need to login to a user&#8217;s machine
as that user while we&#8217;re working on it to ensure proper file permissions, set
preferences, etc.  Typically, the easiest thing to do is to change the user&#8217;s
password to something generic, and then have them change it back when we&#8217;re done
with their machine.  Wouldn&#8217;t it be much easier though to create a new LDAP
attribute called &#8216;password_bak&#8217;; then copy the user&#8217;s password into
that new attribute, change &#8216;password&#8217; to something temporary, and then copy the
user&#8217;s password back into place when you&#8217;re done.  We could login with their
account while we were working on the computer, and everything would be
completely transparent to the user.  I&#8217;m pretty sure <a href="http://www.apple.com/server/macosx/open_directory.html">Open Directory</a> does
some weird things with the password attribute in LDAP so I&#8217;m not sure how easy
it would be with OS X, but it&#8217;s certainly an idea worth pursuing.</p>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/04/temporary-password-change/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Address Book features in Tiger</title>
		<link>http://willnorris.com/2005/04/address-book-features-in-tiger</link>
		<comments>http://willnorris.com/2005/04/address-book-features-in-tiger#comments</comments>
		<pubDate>Tue, 12 Apr 2005 14:59:17 +0000</pubDate>
		<dc:creator>Will Norris</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://willnorris.com/wordpress/2005/04/address-book-features-in-tiger</guid>
		<description><![CDATA[After reading back through this, I realize this has less to do with the new Address Book features and more to do with structuring your enterprise correctly&#8230; the new features just really got me thinking about it I guess. So Apple just announced today that Tiger would ship on April 29, and I&#8217;m just giddy [...]]]></description>
			<content:encoded><![CDATA[<p><em>After reading back through this, I realize this has less to do with the new
Address Book features and more to do with structuring your enterprise
correctly&#8230;  the new features just really got me thinking about it
I guess.</em></p>

<p>So Apple just announced today that Tiger would ship on April 29, and I&#8217;m just
giddy like a little school girl&#8230; it&#8217;s quite ridiculous really.  I&#8217;ve been
looking at all the new features that are to be included and was really impressed
by the new stuff in <a href="http://www.apple.com/macosx/features/addressbook">Address Book</a>.  Because of some recent stuff we&#8217;ve been
doing at Visible, I had this great vision of how things could (and should) work.</p>

<!-- more -->

<p>Visible School is holding a large fundraiser later this month and Rick has been
working on sending out personlized invitations to a rather large group of
people.  He&#8217;s been keeping track of everyone&#8217;s information in an Excel
spreadsheet and is then doing a mail merge in Word to create the letters and
all.  He could have done the same for envelope labels, but they opted to just
hand-write them (not sure why).  Anyway, the problem is that the only copy the
school has of these people&#8217;s contact info is in the spreadsheet on Rick&#8217;s
computer.  These could be potential future donors so it would be nice to have
them in a more permanent spot, so imagine this scenario &#8212;</p>

<p>All of these guests are entered into Visible&#8217;s master LDAP directory&#8230; they
could be in their own branch if need be, but it would likely suffice to simply
put them in the main users branch with an <a href="http://www.nmi-edit.org/eduPerson/draft-internet2-mace-dir-eduperson-00.html">eduPersonAffiliation</a> of &#8220;donor&#8221; or
something.  Some of the contact information for some of these people may be
private so we would set permission levels accordingly (and because Address Book
allows you to authenticate to LDAP it would all be transparent to the end user).
Rick could then just open Address Book and search for &#8220;donor&#8221; (some
customization would need to be done so that the eduPersonAffiliation field would
show up), then use the new label printing feature that will be added in Tiger to
print out labels.  I would imagine he could also export them in a format to be
used for a mail merge to do the covers letters.</p>

<p>So how is this different than just using a spreadsheet?  Well, on the front-end
it wouldn&#8217;t be much different&#8230; probably about the same amount of work (if not
a tad bit more).  However, all of these donor&#8217;s information would now be stored
where they belong&#8230; in Visible School&#8217;s master contact database.  As we get
more donors they are simply added as well, and when the next fundraiser comes
along, Rick simply searches for &#8220;donor&#8221; again.  It doesn&#8217;t seem all that
revolutionary, but if you could see the way things are done now you&#8217;d understand
how great this would be.</p>
]]></content:encoded>
			<wfw:commentRss>http://willnorris.com/2005/04/address-book-features-in-tiger/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

