<?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/"
	>

<channel>
	<title>In Context &#187; Higgins</title>
	<atom:link href="http://www.incontextblog.com/?feed=rss2&#038;cat=3" rel="self" type="application/rss+xml" />
	<link>http://www.incontextblog.com</link>
	<description></description>
	<lastBuildDate>Fri, 21 Sep 2012 13:17:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Identity In The Browser at 5. Lessons Learned.</title>
		<link>http://www.incontextblog.com/?p=728</link>
		<comments>http://www.incontextblog.com/?p=728#comments</comments>
		<pubDate>Mon, 02 May 2011 02:51:57 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Active clients]]></category>
		<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Information Cards]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=728</guid>
		<description><![CDATA[This (v3) document describes Information Card related R&#38;D that has been undertaken over the past five years by Microsoft, the Eclipse Higgins open source project (especially contributions from IBM, Novell and Azigo), from Axel Nennker, and from the FC2 consortium. In this revision we start with the lessons learned and then follow with a summary [...]]]></description>
			<content:encoded><![CDATA[<p>This (v3) document describes Information Card related R&amp;D that has been undertaken over the past five years by Microsoft, the <a href="http://higgins-project.org">Eclipse Higgins open source project</a> (especially contributions from IBM, Novell and Azigo), from Axel Nennker, and from the <a href="http://www.fc2-consortium.org/langswitch_lang/en/">FC2 consortium</a>. In this revision we start with the lessons learned and then follow with a summary of some relevant experiences and development efforts. The opinions expressed here are my own.</p>
<p><strong>Terminology</strong></p>
<ul>
<li>A website that relies on assertions from the user agent is referred to as a <em>service provider (SP).</em></li>
<li>A web service that issues cards to the user, authenticates the user  agent to the card, and provides a set of signed claims on request by the  user agent is referred to as a <em>identity provider (IdP).</em></li>
<li>An attribute about the user is sometimes referred to as a <em>claim</em>.</li>
<li>The software integrated with the browser (either entirely within a browser extension, or invoked by the extension) is referred to as an<em> active client </em>or sometimes as a<em> selector.</em></li>
</ul>
<h1>Lessons Learned</h1>
<p>This section summarizes what worked and what didn&#8217;t across all known Infocard projects.</p>
<p><strong>User Experience<br />
</strong></p>
<ul>
<li><strong>Card metaphor.</strong> Expressing a facet of a person&#8217;s composite digital identity as a card, seemed to work well. There are two broad classes of cards. A <em>managed</em> card represents a set of claims from an external IdP. A managed card holds no claim values, but rather the endpoint of an IdP web service (often called a Security Token Service (STS)). A <em>personal</em> card represents (and physically holds) a set of self-asserted claims from the active client&#8217;s internal IdP.</li>
<li><strong>Usability. </strong>First generation Infocard implementations provided complete transparency, notice and consent to the user related to every disclosure of claims to an SP. While providing the best possible security and privacy, the experience was considered overly intrusive and annoying. The balance needed to be readjusted. To improve usability, and admittedly at the expense of some privacy and security, more recent active clients implemented the following usability improvements:
<ul>
<li>Instead of popping up the card selector window each time, the selector would remember what card had been used on the previous visit to this same SP. Microsoft&#8217;s CardSpace 2 beta (never released) selector experimented with an option wherein the SP rendered the image of the previously used card &#8220;inline&#8221; within their web page. Clicking on this card would cause the login (claims transmission) <em>without</em> popping up the card selector window at all.</li>
<li>Instead of showing all of the details of the claims required and/or desired by the SP in the initial card selector window, these details were hidden and accessed by drilling in on a link. Examination of the UI of OAuth-based systems in the wild shows that the OAuth (e.g. Facebook Connect, etc.) community has come to an even more extreme simplification of the UI in this area. The UI is often reduced to a checkbox saying that the user is consenting to the disclosure to the OAuth consumer of &#8220;some&#8221;, [unspecified and not discoverable list of] attributes and other kinds of disclosures.</li>
</ul>
</li>
<li><strong>Automatic card matching </strong>worked well and was critical to simplifying the user experience. <em>Card matching</em> refers to the active client only displaying the set of cards whose characteristics (e.g. the set of claims it supports, the card issuer, etc.) satisfy the requirements described in the SP&#8217;s policy (e.g. the set of claims desired and/or required, the set of IdPs that are trusted by this SP, etc.)</li>
<li><strong>Performance.</strong> All common user interactions must happen in less than a second. Early  selectors took several seconds to load and display the &#8220;card picker&#8221; window (especially the first time). This sluggishness was annoying.</li>
<li><strong>Roaming</strong>. The active client must roam the person&#8217;s digital identity (i.e. their set of cards) across all of that user&#8217;s devices and browsers.</li>
<li><strong>Unmodified browser support.</strong> A major drawback to Infocard is the inability for it to work work even in a simplified and/or  degraded manner with an unmodified browser. We learned that future  solutions should instead follow a &#8220;better with&#8221; philosophy. That is, they should work in  some fashion with an unmodified browser and then work &#8220;better&#8221; if a browser-integrated  active client is available.</li>
<li><strong>Card bootstrapping</strong>.  Infocard failed to provide a UI that would guide the user who didn&#8217;t  have any cards that satisfied the SP&#8217;s policy, to find and get a suitable  card. In this situation future solutions must guide the user to a list  of possible card issuing sites (IdPs) where a suitable card can be obtained.</li>
<li><strong>Active client bootstrapping.</strong> Infocard failed to provide a UI that would guide the user who didn&#8217;t  have an active client (or cloud selector) into becoming  provisioned with one. Future solutions must guide the user from the SP  side to a list of possible (and likely competing) cloud selectors. And, following the &#8220;better with&#8221; philosophy to a list of identity-capable browsers and/or browser extensions.<strong> </strong></li>
<li><strong>Cross-platform.</strong> The solution must be available on all of the user&#8217;s computing platforms including mobile devices.</li>
<li><strong>Cross-browser. </strong>Users often use multiple browsers, the solution must work across all popular browsers.</li>
<li><strong>Cross-protocol.</strong> Users simply want things to work. They don&#8217;t care about underlying  protocols. The solution should present a consistent UX for  identity-related interactions irrespective of underlying protocol.  Infocard introduced a new, incompatible protocol with that had the effect splintering the  identity ecosystem further and introducing yet-another competing UX to learn and use.</li>
<li><strong>Dynamic claims. </strong>Infocards  failed to support the dynamic claims. In some cases the SP needs to be able to not just indicate the <em>types</em> of claims required (e.g. givenname, employer, etc.) but also to be able to indicate (dynamic)  parameters to the claims. In payment use cases (e.g. using a card to pay for an item at checkout) the  SP must be be able to pass the price as a parameter along with its  other &#8220;policy&#8221; information back to the active client so that the client can  in turn pass this price parameter back to the IdP (e.g. a bank). The Infocard community never  achieved consensus on how to implement this. Axel Nennker  suggested an approach that both his own research project and the <a href="http://www.fc2-consortium.org/langswitch_lang/en/">French FC2 consortium</a> implemented in their respective selectors.</li>
<li><strong>Claims aggregation.</strong> In more complex use cases SPs need to aggregate claims from <em> multiple</em> IdPs (e.g. physical address information from your mobile  provider and payment information from your bank). With most Infocard  solutions this causes the selector &#8220;card picker&#8221; UI to appear multiple times in  succession (once for each IdP). This is annoying for the user. David Chadwick worked on and the <a href="http://www.fc2-consortium.org/langswitch_lang/en/">FC2 consortium</a> implemented multi-card selection in their  research selector however the Infocard community never reached consensus  on an SP policy format  that would support a single request for claims  from multiple IdPs. See also my opinions in my <a href="http://www.incontextblog.com/?p=448">Attributes First</a> post.</li>
<li><strong>Brokered authentication (and claims providers vs. identity providers).</strong> Current Infocard solutions require the user to  authenticate to each (managed) card issuer (IdP) in order to use the card. While the number of passwords (and other challenges) was greatly reduced  from the usual one-password-per-SP model, it wasn&#8217;t reduced to a single master  password (or other kind/set of &#8220;master&#8221; challenges). To achieve this, a distinction should be  made between an <em>identity provider</em> and a <em>claim provider</em>. Ideally the user would have a <em>very</em> small number of identity providers (ideally perhaps just one) to which they  would authenticate themselves using a specific, consistent method for a  given level of assurance (and other specific, consistent methods for  progressively higher levels of assurance). Claims providers would then rely on  assertions from identity providers. The active client would &#8220;broker&#8221; the identity assertions from the IdP and pass them along with their requests to claims providers. The <a href="http://www.fc2-consortium.org/langswitch_lang/en/">FC2 consortium</a> in their research active client implemented the ability to have multiple  claims providers leverage the results of a single authentication to an identity provider (e.g.  a government issued smart card).</li>
</ul>
<p><strong>Capabilities</strong></p>
<ul>
<li><strong>Decentralized architecture.</strong> Infocard architecture allows IdPs, active clients, and SPs to be developed independently of one another. <strong></strong></li>
<li><strong>Extensible schema.</strong> For managed cards, the issuer of the card (i.e. the IdP) may independently define the set of claims it chooses support. The browser&#8217;s active client dynamically supported any set of claims on a managed card. This loosely coupled, extensible approach worked well. It relied on market forces to &#8220;socialize&#8221; a set of claim types that one or more IdPs might issue and one or more SPs might rely on. The personal cards as implemented by Microsoft supported a fixed 14 claim-type schema. There was some discussion in open source projects of allowing personal (self-asserted) cards to also support an extensible schema but this was never implemented.<strong></strong></li>
<li><strong>Claims as URIs.</strong> URIs worked well as claim types since they provide a well-understood global namespace management approach. But we could have gone further. The URIs were treated within the Infocard active clients as opaque strings. There have been discussions initially with Dick Hardt and later with Mark Wahl, Drummond Reed, Markus Sabadello, John Bradley, Axel Nennker and others about the benefits of actually having these claim/attribute URIs be dereferenceable to a metadata description of themselves. There were some early proposals on the semantics of this metadata. Each advocate for a given set of semantics preferred a different serialization format: Dick&#8217;s was in XML, Mark&#8217;s in RDFa, Higgins used RDF, etc. No consensus was ever reached on either the semantics or the serialization. See <a href="http://wiki.idcommons.net/Identity_Schemas">Identity Schemas WG</a> for some related work on claim URIs.<strong></strong></li>
<li><strong>Claim catalog. </strong>The ecosystem of Infocard proponents created a central, common <a href="http://wiki.informationcard.net/index.php?title=Claim_Catalog">Claim Catalog</a> to promote interoperability. The thought was that we should have a common repository of well-known claims in order to prevent unnecessary minting of claims with the same semantics as existing claims. The catalog was maintained using a lightweight process based on an email list managed by the Schemas WG of the Information Card Foundation. This process worked well. We noticed that despite the fact that minting claim URIs rooted in one&#8217;s own domain offers no advantage over using the standard &#8220;http://schemas.informationcard.net/@ics&#8221; organizations acting as IdPs often preferred to use their own domains. <strong></strong></li>
<li><strong>Browser-initiated invocation.</strong> Unlike SAML and  similar redirect-based approaches wherein the SP initiates the flow,  with Infocard the browser actively looks for &#8220;trigger&#8221; markup in the SP  web page and if it is found invokes and displays the selector app. This approach worked well and provided a level of phishing protection. The Microsoft-proposed, (later, OASIS IMI) trigger mechanism was an embedded &lt;object&gt; tag in the HTML. An alternative mechanism was implemented by Axel and Higgins that used a URI link to trigger invocation. This URI used a  scheme (e.g. &#8220;icard:&#8221;) that was detected as a trigger by browser plugins. This approach has a second key advantage, namely, that it works with mobile smartphones. Smartphone borwsers (e.g. iPhone and Android) while not supporting plugins to associate apps with URI schemes. This allowed an active client (aka selector) app to be associated with the scheme.</li>
<li><strong>Passive advertisement of SP policy.</strong> Markup in the SP passively declares the SP&#8217;s policy&#8211;things like what  identity providers (IdPs) are trusted by the SP (or if self-asserted  claims are acceptable, the set of &#8220;required&#8221; claims, the set of  &#8220;optional&#8221; claims. The Microsoft-proposed, (later, OASIS IMI), approach included the policy as embedded markup within the &lt;object&gt; tag. Axel, Kantara ULX, Higgins and others felt that instead the trigger mechanism (see above) should be separated from the SP policy description. By using a URI scheme for the trigger mechanism, the URI acts as a reference to the policy. Some work was done on defining a JSON format for this policy.</li>
<li><strong>Minimal disclosure.</strong> When the user selects a card to &#8220;send&#8221; to the SP, the active client provides minimal set of claims necessary, not all of the claims &#8220;supported&#8221; by the card.</li>
<li><strong>Non-correlatable identifiers (PPIDs). </strong>The active client generated pair-wise unique Private Personal Identifiers (PPIDs) to allow persistent SP-specific pseudonyms. This capability increased privacy while ensuring that the SP can reliably recognize the same visitor over time.</li>
<li><strong>Audit logs.</strong> Active clients implemented audit logs (sometimes called ledgers) that kept track of what claims the user had disclosed to which SP.</li>
</ul>
<p><strong>Implementation trade-offs</strong></p>
<ul>
<li><strong>Performance vs. security. </strong>The original Infocard implementation with its secure desktop while more secure was considered unacceptably sluggish.</li>
<li><strong>Cost of cloud services</strong>.  Cloud-based selectors have many advantages, however their reliance on  centralized processing increases the cost to deploy them.</li>
<li><strong>Pure browser extension vs. browser extension + app. </strong>Whereas  a pure browser extension has deployment advantages (easy  download/install and in some cases some cross platform support), five  years ago the thinking was that such an approach had three  disadvantages: (i) the lack of isolation in browsers (at that time)  meant that the selector would be too vulnerable to attack (ii) a pure  browser extension wouldn&#8217;t be useable by local (non-browser-based) apps  and would thus not be as &#8220;universal&#8221; a solution (iii) it would take more  development effort since more of the code would be browser-dependent  and less of it common, browser-independent code. <em>Note: the latest  thinking in Higgins 2.0 is to go back to the original approach.  On these three points the thinking is now, respectively: (i) the security characteristics of browsers are now good enough,  (ii) non-browser-based apps are less important to worry about, and it  may even be possible to have a local app leverage the browser (iii) the  benefits of i) and ii) outweigh the cost of a lot of per-browser  development.</em></li>
<li><strong>Identity in the browser vs. Identity in the platform. </strong>CardSpace and most (though not all) other active clients were separate applications that were invoked by browser extensions. In the case of CardSpace the application was bundled with the operating system (e.g. Vista and Windows 7) and was more correctly &#8220;identity in the platform.&#8221; The benefit of this approach is that the active client can be invoked by applications other than the browser. In this way the user has a consistent &#8220;identity&#8221; experience across both the Web and local apps. The Higgins project implemented a &#8220;selector switch&#8221; abstraction layer that decoupled the user&#8217;s choice of browser from the user&#8217;s choice of active client application. It allowed, for example, IE to invoke CardSpace or a Higgins-based active client. Until an &#8220;identity&#8221; layer is integrated into either the platform or the browser, users will have to download and install something. Experience has shown that making this installation experience extremely light and fast is very important for user adoption. As a consequence the Higgins 2.0 project has backed off from the &#8220;in the platform&#8221; goal and has (for now) abandoned the selector switch idea because the simplest and fastest user experience (for conventional PCs) is the installation of a browser extension using the browser&#8217;s native installation mechanisms.</li>
</ul>
<p><strong>Driving Adoption</strong></p>
<ul>
<li><strong>Focus on SPs.</strong> Infocard proponents were too slow to realize that the hardest part of  driving adoption is getting the SPs to adopt the technology (not recruiting IdPs nor even building active client support into browsers). Resources  must be invested in creating libraries and services to make it as easy  as possible for SPs to adopt a new technology, especially since SPs are  so numerous compared to the population of IdPs.</li>
<li><strong>Create a non-competitive, layered, protocol stack. </strong>As  mentioned above, users simply want identity-related interactions to  work with a consistent experience irrespective of the underlying  protocols. Layering a consistent experience over protocols that were  never designed to work together appears to be difficult and creates a  fragmented, competitive landscape. A more promising approach would be to  collaboratively create a layered model of protocols and user  experiences. This could unify the ecosystem instead of creating multiple  competing solutions with differing strengths and weaknesses.</li>
<li><strong>Microsoft vs. an ecosystem.</strong> Microsoft, having gotten a black eye years before with Passport and Hailstorm, was determined to learn from these mistakes with Infocard. And they did. The changes were profound: the Infocard architecture was decentralized, the network protocols were  contributed to a standards organization (OASIS), the IP was covered by an Open Specification Promise (basically an agreement not to sue developers) and Microsoft was uncharacteristically open and collaborative with open source projects (e.g. Higgins). They genuinely wanted to see the emergence of active clients integrated with other browsers and other (especially non-Windows!) platforms. The reality was quite good. The problem was one of market <em>perception</em>. Despite the collaboration, openness, standardization, IP stances taken etc. the perception in the market was that Infocard was a &#8220;Microsoft&#8221; technology. Industry analysts by lauding Kim and his team for their seminal contributions and by never quite realizing that solving the Internet identity problem would &#8220;take a village&#8221; (an ecosystem with multiple tech providers). The unintended consequence of promoting Microsoft&#8217;s early role was to limit greatly the appeal of Infocard. Many at Microsoft could never quite understand that the more <span style="text-decoration: underline;">they</span> promoted Infocard (and thereby made it seem like a Microsoft-controlled technology), the less successful it would be in the marketplace.</li>
</ul>
<h1>History</h1>
<p>We begin by describing Microsoft CardSpace and then discuss other projects and how they differed and innovated.</p>
<h2>2006: Microsoft Windows CardSpace 1.X</h2>
<p>In 2006 Kim Cameron and his team at Microsoft released Windows CardSpace.</p>
<p><img class="alignnone" title="CardSpace" src="http://upload.wikimedia.org/wikipedia/en/2/2a/Cardspace_identity_selector.png" alt="" width="786" height="578" /></p>
<p>The following section describes the salient points about CardSpace.</p>
<p><strong>Cards &amp; Selectors</strong></p>
<ul>
<li>Uses the card UX metaphor (and introduced a browser-integrated &#8220;identity selector&#8221; client app to hold and manage them). A card is a metaphor for a digital identity&#8211;a set of claims (attributes) by some issuer (the user or an IdP)</li>
<li>Supports personal cards (that contain attributes (aka claims) &amp; values as asserted by the user)</li>
<li>Supports managed cards (that contains a pointer to an IdP (the IdP that issued the card to the user))</li>
</ul>
<p><strong>Sending a Card to a Site User Experience</strong></p>
<ul>
<li>User goes to a website and sees a purple icon.</li>
<li>The icon indicates that the site either wants the user to login or it wants the user to provide a set of claims.</li>
<li>User clicks on the icon and the selector application&#8217;s &#8220;card selector&#8221; UI window is displayed</li>
<li>A set of zero, one or more cards that match the SP&#8217;s policy (requirements) is shown within this window</li>
<li>The user clicks on a card to &#8220;send&#8221; it to the site</li>
</ul>
<p><strong>Get Card User Experience</strong></p>
<ul>
<li>User goes to a card-issuing website</li>
<li>User logs in and may have to provide other attributes</li>
<li>User clicks on the icon of a card</li>
<li>User downloads an info card (a 3kb-ish signed XML file) that is automatically imported into the user&#8217;s selector</li>
</ul>
<p><strong>Architectural Highlights</strong></p>
<ul>
<li><strong>Overview:</strong> browser plugin that communicates with a desktop selector app. Selector was almost entirely written in managed (C#) code and leveraged .NET.</li>
<li><strong>Browser-initiated invocation.</strong> Unlike SAML and similar redirect-based approaches wherein the SP initiates the flow, with Infocard the browser actively looks for &#8220;trigger&#8221; markup in the SP web page and if it is found invokes and displays the selector app.</li>
<li><strong>Passive advertisement of SP policy.</strong> Markup in the SP passively declares the SP&#8217;s policy&#8211;things like what identity providers (IdPs) are trusted by the SP (or if self-asserted claims are acceptable, the set of &#8220;required&#8221; claims, the set of &#8220;optional&#8221; claims.</li>
<li><strong>Selector-to-IdP protocols:</strong> based on a suite of SOAP protocols centered on WS-Trust.</li>
<li><strong>Selector/browser-to-SP protocols:</strong> HTTP(S) POST of a security (e.g. SAML 1.1, etc.) token.</li>
<li><strong>Security</strong>: selector supported only a single &#8220;getToken()&#8221; API.</li>
<li><strong>Security</strong>: the selector runs in its own protected operating system process called a secure desktop.</li>
</ul>
<p><strong>Implementation</strong></p>
<ul>
<li>Commercially released application.</li>
<li>Compatible with IE.</li>
<li>Installable on Windows XP; bundled with Vista &amp; Windows 7.</li>
</ul>
<p><strong>Capabilities</strong></p>
<ul>
<li><strong>Federated login.</strong> User can login to a SP without an SP-specific password.</li>
<li><strong>Verified claims.</strong> User can convey a signed set of claims from an IdP to the SP.</li>
<li><strong>Multiple identities.</strong> Each card represents a different digital identity of the user. Each card supports a different set of claims. For example, a card might support only the single claim that a person is over the age of 21.</li>
<li><strong>Card matching. </strong>When the card selector window appears only the set of cards whose characteristics (e.g. IdP domain, set of supported claims, etc.) match what the SP has declared in their policy are displayed.</li>
<li><strong>Minimal disclosure. </strong>Only the intersection of (a) the set of claims supported by the card/IdP and (b) the set of claims required by the SP, are disclosed to the SP.</li>
<li><strong>Non-correlatable identifiers (PPIDs).</strong> An identifier (e.g. an email address or userid, etc) is a kind of claim. For privacy reasons where possible cross-SP correlatable identifiers should be avoided and less identifying claims used instead. CardSpace used a pair-wise key generated between the selector and the SP to generate the value of a PPID claim (if the SP policy asked for it). In this way the SP can reliably know that this was the same user as an earlier visit without being able to collude with other SPs to aggregate information about the user.</li>
<li><strong>Audit logs. </strong>The selector automatically maintained a log of what cards &amp; claims had been used at what SPs</li>
<li><strong>SP authentication.</strong> The selector provided visual cues to help the user recognize the identity of the SP</li>
</ul>
<h2>2006-2010: Eclipse Higgins 1.0 and 1.x</h2>
<p><strong>Cross-browser and Cross Platform support</strong></p>
<p>The Higgins project initially wanted to see if a selector could be implemented entirely as a pure browser extension. This would have the advantage of making it more easily deployed, and for cross-platform browsers (e.g. Firefox) would provide a cross platform solution. The initial browser targeted was Firefox 2.x as shown below.</p>
<p><img class="alignnone" title="HBX" src="http://wiki.eclipse.org/images/thumb/f/f8/Higgins-F2F-Jan26-s2.png/613px-Higgins-F2F-Jan26-s2.png" alt="" width="613" height="599" /></p>
<p>Higgins also experimented with another approach to achieving cross platform support, namely by developing a native application written in a cross-platform toolkit. Contributors to Higgins from Novell created a GWT-based selector to run on several flavors of Linux as well as Windows. Theoretically a GWT-based app could also run on OSX, but in practice the UI wasn&#8217;t acceptable, so a native Cocoa-based app was also developed by the Novell team.</p>
<p><img title="GWT-based selector" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/DigitalMe.png/800px-DigitalMe.png" alt="" width="800" height="560" /></p>
<p><strong>Roaming </strong></p>
<p>One of the most serious drawbacks of the selectors mentioned above is that they suffer from the &#8220;card roaming&#8221; issue. Since cards are stored within the selector clients, if the user wishes to use more than one machine, or borrow someone&#8217;s computer, or use a kiosk, etc. their cards are not available. Two approaches to address this limitation were pursued at Higgins.</p>
<p>One approach was to develop the heart of the selector as web service. Then, the active client portion that is integrated with the browser is merely a presentation layer with the cardstore being resident in the web service. The Higgins I-Card Service is such a service, and provides web services to a &#8220;UI-only&#8221; Adobe AIR rich client selector as well as the iPhone selector shown below.</p>
<p><img class="alignnone" title="Higgins AIR selector" src="http://wiki.eclipse.org/images/5/52/Selector.jpg" alt="" width="717" height="718" /></p>
<p><strong>Mobile Browsers</strong></p>
<p>A number of mobile Infocard solutions have been developed. As mentioned in the Lessons Learned section, since mobile browsers don&#8217;t support plugins it was necessary to replace the IMI-defined &lt;object&gt; tag trigger with a URI-based trigger in the SP&#8217;s web pages.</p>
<p>As an example of a mobile solution, the Higgins iPhone Selector relies on a hosted I-Card web service:</p>
<p><img class="alignnone" title="iPhone selector" src="http://wiki.eclipse.org/images/5/52/Shot2.png" alt="" width="320" height="480" /> <img class="alignnone" title="IPhone selector (card back)" src="http://wiki.eclipse.org/images/5/54/Shot3.png" alt="" width="320" height="480" /></p>
<p>A second approach to providing card roaming was also explored and partially implemented. In this architecture the selectors would be full clients having their own local cardstores but have the ability to optionally take advantage of a cloud-based cardstore and synchronization service.</p>
<p><strong>Browser-Only Support (Cloud Selectors)</strong></p>
<p>One of the most serious drawbacks of the active client approach is quite simply that they <em>require</em> an active client (even if in some cases this active client is merely a browser extension) in order to work. Within Higgins a Cloud Selector was developed that worked with an unmodified browser. The cloud selector relied on OpenID to allow the SP to initiate redirect to the cloud selector. The &#8220;back end&#8221; of the cloud selector remained unchanged with the required security token being returned in the second redirect back to the SP. Note that without an active client more care must be taken (e.g. a second factor of authentication added) to strengthen the authentication between the user and selector.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=728</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personal Data Service vs. Personal Data Store</title>
		<link>http://www.incontextblog.com/?p=666</link>
		<comments>http://www.incontextblog.com/?p=666#comments</comments>
		<pubDate>Wed, 06 Oct 2010 18:02:20 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Personal Data Stores]]></category>
		<category><![CDATA[VRM]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=666</guid>
		<description><![CDATA[I share Drummond&#8217;s perspective on this issue. When I describe the concept of a Personal Data Store to techies I&#8217;m constantly having to explain that it&#8217;s about centralizing control over personal data, but not centralizing its location. David Siegel calls it a Personal Data Locker, others Personal Data Space or Personal Data Vault. W3C folks [...]]]></description>
			<content:encoded><![CDATA[<p>I share <a href="http://www.equalsdrummond.name/?p=327">Drummond&#8217;s perspective</a> on this issue. When I describe the concept of a Personal Data <em>Store</em> to techies I&#8217;m constantly having to explain that it&#8217;s about centralizing <em>control</em> over personal data, but not centralizing its <em>location</em>.</p>
<p>David Siegel calls it a Personal Data Locker, others Personal Data Space or Personal Data Vault. W3C folks are working on Personal Data <em>Wiki</em>. I was just on a VRM call today. At Drummond&#8217;s suggestion a bunch of us are going to try to create wikipedia entries, and hopefully a diagram (as Iain Henderson suggested) that define some common terms. It would be helpful at this early &#8220;market development&#8221; stage to have a common set of terms that developers and techies can understand. Here are my contributions:</p>
<p>Terms:</p>
<ul>
<li><strong>Personal Data Service</strong> (PDS) &#8211; A service that enables the user to participate as a peer within a distributed personal data ecosystem. A PDS provides one or more of the following services: (a) a web portal that provides a dashboard view of the user&#8217;s data, the ability update self-asserted data, and a way to manage authorizations (e.g. using something like an UMA Authorization Manager) and set policies under which 3rd parties gain access to portion of the user&#8217;s information, (b) supports a Discovery API that allows you to be discoverable by other people, organizations, apps and exchanges whose inquiries that meet criteria you specify, and (c) provides an identity provider (IdP) endpoint (e.g. OpenID OP)</li>
<li><strong>Attribute Data Service</strong> &#8211; Service that (A) locally stores your self-asserted data attributes, makes them available via APIs, and supports active clients. Ideally these self-asserted data are stored in encrypted form using a key that the PDS operator does not know. It also (B) maps data from both external data services (e.g. Facebook, etc.) as well as from external Personal Data Services (e.g. your friend&#8217;s PDS or a PDS managed by your favorite telco), makes it all available via APIs (e.g. XDI, SPARQL, oStatus, etc.), and supports active clients.</li>
<li><strong>3rd Party App</strong> &#8211; A web app that consumes data from the PDS. These include information <strong>refineries</strong> &#8211;a kind of app that reads datasets from  the PDS, refines them, and  writes them back to the PDS user. The  refinery process includes  analytics, inferencing, segmentation, etc.  Refineries generally to  create higher value, more refined data from the  more raw forms of data,  while often also making the data sets less  personally identifying. These also include information <strong>exchanges</strong>&#8211;a kind of PDS App that is involved in creating  personal data exchanges analogous to a stock exchange. An exchange  itself is a platform that supports yet another layer of apps above it  [this is not shown above].</li>
</ul>
<p>Couldn&#8217;t resist drawing a picture:</p>
<p><img class="alignnone" title="PDS" src="http://wiki.eclipse.org/images/5/56/Higgins_pds_2.0.130.png" alt="" width="643" height="583" /></p>
<p><object id="azigo3NPAPI" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0px" height="0px" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="azigo3NPAPI" type="application/x-shockwave-flash" width="0px" height="0px"></embed></object></p>
<p><object id="azigo3NPAPI" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0px" height="0px" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="azigo3NPAPI" type="application/x-shockwave-flash" width="0px" height="0px"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=666</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Higgins, active clients and Personal Data Services</title>
		<link>http://www.incontextblog.com/?p=660</link>
		<comments>http://www.incontextblog.com/?p=660#comments</comments>
		<pubDate>Wed, 22 Sep 2010 02:58:01 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Active clients]]></category>
		<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Information Cards]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=660</guid>
		<description><![CDATA[Some thoughts on active clients and Personal Data Services with a heavy bias towards those under development within Higgins. Uses the old &#8220;Personal Data STORE&#8221; term&#8230; Higgins active clients and personal data stores v2 View more presentations from Paul Trevithick.]]></description>
			<content:encoded><![CDATA[<p>Some thoughts on active clients and Personal Data Services with a heavy bias towards those under development within Higgins. Uses the old &#8220;Personal Data STORE&#8221; term&#8230;</p>
<div style="width:425px" id="__ss_5258280"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ptrevithick/higgins-active-clients-and-personal-data-stores-v2" title="Higgins active clients and personal data stores v2">Higgins active clients and personal data stores v2</a></strong><object id="__sse5258280" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=higginsactiveclientsandpersonaldatastoresv2-100922084434-phpapp01&#038;stripped_title=higgins-active-clients-and-personal-data-stores-v2&#038;userName=ptrevithick" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5258280" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=higginsactiveclientsandpersonaldatastoresv2-100922084434-phpapp01&#038;stripped_title=higgins-active-clients-and-personal-data-stores-v2&#038;userName=ptrevithick" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/ptrevithick">Paul Trevithick</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=660</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XDI, Semantic Web</title>
		<link>http://www.incontextblog.com/?p=642</link>
		<comments>http://www.incontextblog.com/?p=642#comments</comments>
		<pubDate>Wed, 18 Aug 2010 19:25:19 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Personal Data Stores]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[VRM]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=642</guid>
		<description><![CDATA[Comparing two &#8220;standards&#8221; stacks and one implementation project (Higgins):]]></description>
			<content:encoded><![CDATA[<p>Comparing two &#8220;standards&#8221; stacks and one implementation project (Higgins):<br />
<a href="http://www.incontextblog.com/wp-content/uploads/2010/08/xdi-semweb-and-higgins-v71.png"><img class="alignnone size-full wp-image-646" title="xdi semweb and higgins x3" src="http://www.incontextblog.com/wp-content/uploads/2010/08/xdi-semweb-and-higgins-v5.png" alt="" width="554" height="584" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=642</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet of Subjects</title>
		<link>http://www.incontextblog.com/?p=597</link>
		<comments>http://www.incontextblog.com/?p=597#comments</comments>
		<pubDate>Thu, 06 May 2010 09:36:47 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Data Portability]]></category>
		<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Personal Data Stores]]></category>
		<category><![CDATA[VRM]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=597</guid>
		<description><![CDATA[Well, here&#8217;s a new organization, iosf.org, that I should have known about. I hope I can get to their event. It&#8217;s on July 5th and I have to be in Paris on the 6th for an Information Card workshop with FC2. Hmmm&#8230;should be possible.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.incontextblog.com/wp-content/uploads/2010/05/ioslondon200.jpg" alt="" hspace="10" vspace="10" align="left" />Well, here&#8217;s a new organization,<a href="http://www.iosf.org/"> iosf.org</a>, that I should have known about. I hope I can get to their event. It&#8217;s on July 5th and I have to be in Paris on the 6th for an Information Card workshop with FC2. Hmmm&#8230;should be possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=597</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apps and Personal Data Stores</title>
		<link>http://www.incontextblog.com/?p=504</link>
		<comments>http://www.incontextblog.com/?p=504#comments</comments>
		<pubDate>Mon, 22 Mar 2010 01:25:39 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Azigo]]></category>
		<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Information Cards]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[Selectors]]></category>
		<category><![CDATA[VRM]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=504</guid>
		<description><![CDATA[This post presents an architecture comprised of apps, a dashboard, and a personal data store (PDS) that can be implemented by multiple developers, hosted by multiple operators over an open, personal data network and whose goal is to give users more control over their own identity (personal data, profiles, preferences, affiliations, and relationships). It is [...]]]></description>
			<content:encoded><![CDATA[<p>This post presents an architecture comprised of apps, a dashboard, and a personal data store (PDS) that can be implemented by multiple developers, hosted by multiple operators over an open, personal data network and whose goal is to give users more control over their own identity (personal data, profiles, preferences, affiliations, and relationships). It is in support of aspirations that have been widely reported by others and called variously <a href="http://cyber.law.harvard.edu/projectvrm/Main_Page">VRM</a>, <a href="http://dataportability.org/">data portability</a>, user-centric identity, the Data Web, <a href="http://ojphi.org/htbin/cgiwrap/bin/ojs/index.php/fm/article/viewArticle/1068">Augmented Social Network (2003)</a>, and so on.</p>
<p><a href="http://www.incontextblog.com/wp-content/uploads/2010/03/tla-2.0.101.png"><img class="alignnone size-full wp-image-576" title="top level architecture (12)" src="http://www.incontextblog.com/wp-content/uploads/2010/03/tla-2.0.101.png" alt="" width="813" height="571" /></a></p>
<p>I&#8217;ve annotated the diagram above with little &#8220;H&#8221; and &#8220;A&#8221; markers so you can see specifically the areas that Higgins and Azigo are working on respectively. Lots of other folks are also working on other parts of the picture too, of course.</p>
<p><strong>Apps</strong></p>
<p>Apps are of course the most important kind of component since they are what the end user sees and appreciates. Apps gain access to the user&#8217;s data by making calls (e.g. <em>getAttribute</em>)  to an API exposed by the <em>PDS Client</em>. Architecturally, we&#8217;ve seen the need to support both conventional kinds of apps: web, mobile (iPhone, Android, etc.), and desktop, as well as a more unusual kind of app, I&#8217;ll call a <em>Javascript app</em>.  In this latter case Javascript is fetched from a web service (e.g. from <a href="http://www.kynetx.com/">Kynetx</a> KNS) injected locally into your browser by a browser extension. This same browser extension exposes the same PDS Client API to this Javascript program.<br />
<strong> </strong></p>
<p><strong>Dashboard</strong></p>
<p>The dashboard is an admin GUI app for your personal data. It is an occasional-use tool that provides: (a) a control panel to manage the permissioning policies that control which of your attributes are shared with whom (including so-called &#8220;selector&#8221; functionality to approve the release of your info)  (b) a dashboard GUI to see and manage all of your identity data attributes (including profile data, credentials, friends lists, etc.) whether stored in your own PDS or managed by others (c) a place to directly enter self-asserted attributes (d) an embedded app marketplace (e) a canvas area where apps can extend the UI to add their own admin interfaces (f) a place to import &amp; manage your i-cards and OpenID OP relationships.</p>
<blockquote><p>ASIDE: <em>Dashboard</em> is a new word I&#8217;m trying  out. The reality is that this piece of software is a bit of a swiss army  knife where each blade/tool is called something different. A few examples: Microsoft  calls the aspect that pops up to give notice and consent to release a set  of attributes an <em>identity selector</em>. Inside Google they call  identity-related client add-ons to a browser an <em>active client</em>. The &#8220;show  me all of my stuff&#8221; aspect does sound like a <em>dashboard</em>. On the other hand, the  permissioning aspect is something Eve would call a <em>relationship manager</em> (or I  think she would). And I think Bob Blakley would too.</p></blockquote>
<p>The dashboard combines aspects of earlier client efforts. In 2006-2007 we saw Information Card Selectors like <a href="http://en.wikipedia.org/wiki/Windows_CardSpace">Windows  CardSpace</a> as well as the Higgins selectors provide an interface to view and manage multiple digital identities displayed as visual cards, as well as provide notice and consent to the release of your selected digital identity. In 2009 Azigo augmented the selector concept support for  Kynetx apps in <a href="http://azigo.com/">Azigo</a> (along with cross-platform and card roaming support). Prototypes shown by Microsoft (e.g. <a href="http://self-issued.info/?p=235">OpenID Active Client</a>) and Higgins at IIW in 2009 added OpenID support thus demonstrating multi-protocol support. <a href="http://mozillalabs.com/blog/2010/03/account-manager/">Mozilla  Lab&#8217;s Account Manager</a> is doing some great work in this area. The Higgins project is working on a next-generation client as part of the <a href="http://wiki.eclipse.org/Active_Client_Overview">Higgins 2.0 Active Client</a> expected in 2011.</p>
<p><strong>Personal Data Store</strong></p>
<p>A PDS is a web service that works on your behalf, giving you more control over your own personal data whether it is stored in the PDS or managed elsewhere. PDS stores <em>local</em> attributes in blinded form so that only the user has the decryption key&#8211;not the PDS service provider. The PDS is an idea that has been underdevelopment for years. For some background see <a href="http://blog.joeandrieu.com/2007/07/26/vrm-and-personal-datastores/">Joe  Andrieu</a>, <a href="http://blog.joeandrieu.com/2007/06/14/vrm-the-user-as-point-of-integration/">Joe  again</a>, and <a href="http://informationanswers.com/?p=506">Iain Henderson</a>. As part of Higgins 2.0 the <a href="http://wiki.eclipse.org/Personal_Data_Store_2.0">PDS</a> is being developed. Another interesting PDS development project is <a href="http://themineproject.org/">Mine</a>!</p>
<p><strong>PDS Client </strong></p>
<p>The PDS Client has no UI, but provides an API for apps that wish to read/write  attributes from the PDS. Here are some of its functions:</p>
<ul>
<li>Maintains (and syncs to the PDS and other clients) the user’s &#8221;permissions&#8221;–the decisions that the user has make as to who (what app or relying party) has access to what attributes. For example, the first time a new app/RP asks for a certain set of attributes, the PDS Client will trigger the PDS Dashboard to present the policy decision to the user. The next time this same request happens, the PDS Client remembers the grant and usually doesn’t have to bother the user about it this time.</li>
<li>Maintains a local copy of some or all of the person’s personal data stored in the remote PDS</li>
<li>Maintains an OAuth WRAP access token that it gets by authenticating itself to an external authentication service. It passes this token along in XDI messages to the remote PDS service.</li>
<li>Can be configured to encrypt attribute values before they are sent over the wire (e.g. in XDI messages) to the remote PDS</li>
<li>Contains a local Security Token Service (STS) that allows it to create and sign SAML (for example) tokens for self-asserted attributes.</li>
<li>Contains an STS client to support remote IdP/STSes managed by external parties (e.g. to support managed i-cards).</li>
<li>Performs cross-context schema mapping.</li>
</ul>
<p>The Higgins 2.0 <a href="http://wiki.eclipse.org/PDS_Client_2.0">PDS Client</a> is packaged as either a C++  or Java code library or as a separate  operating system process (e.g. on  Windows it is a Windows Service).</p>
<p><strong> </strong></p>
<p><strong>Network Protocol</strong></p>
<p><a href="http://www.equalsdrummond.name/">Drummond Reed</a> with his <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xdi">OASIS  XDI</a> and OASIS XRI work was first to my knowledge to define an open <em>data web</em>. A few years later Tim published his <a href="http://www.w3.org/DesignIssues/LinkedData.html">Linked Data</a> paper. We&#8217;re starting to see implementations of Linked Data so now the Semweb  folks also have a data web. Both of these approaches are important.</p>
<p>An open community is starting to form around the XDI that is focused on PDS-related use cases and create might be called a <em>profile</em> of XDI in this area. The community is leveraging XDI&#8217;s existing strengths in the areas of identity management integration, security, access control, data sharing and versioning, as well as extending them where needed in order to meet the PDS-related requirements.</p>
<p>This focus probably provides a critical time-to-adoption advantage over the Linked Data effort in this PDS area. Since the objective is interoperability (i.e. an interoperable ecosystem of PDSes and apps over a common protocol) assembling a community focused on this area would seem to be the fasted way to get there. Linked Data (like &#8220;vanilla&#8221; XDI) has a much broader link-all-the-worlds-data-together mission and lacks direct support for many of the PDS-related requirements. As a consequence RDF developers (including Higgins) define ad-hoc extensions to RDF to make it support the PDS use cases that are only interoperable within their own developer community.</p>
<p><strong>PDS Schema</strong></p>
<p>The Higgins PDS uses its own <em>internal</em> schema called the <a href="http://wiki.eclipse.org/Persona_Data_Model_2.0">Persona</a> data model. This is not  to say that the PDS architecture imposes a single ontology on its  clients. Quite the opposite. Every attribute call (e.g. getAttribute)  may request attributes in any vocabulary. As I&#8217;ve mentioned in my <a href="../?p=463">schema mapping post</a>, we follow the philosophy of mapping into and out from the  internal schema.</p>
<p><strong>Authorization Manager</strong> <strong>(AM)</strong></p>
<p>The AM provides the &#8220;back end&#8221; authorization manager for access  control  of attributes managed by data services other than your own PDS.  The Higgins project has been tracking the promising <a href="http://kantarainitiative.org/confluence/display/uma/Home">UMA    Authorization Manager</a> effort that <a href="http://www.xmlgrrl.com/blog/">Eve Maler</a> and others have been developing.</p>
<p><strong>Kynetx KNS</strong></p>
<p>KNS is a web service that serves up compiled Javascript apps for injection into browsers. The app developer uses the Kynetx AppBuilder tool to create apps. Each app is packaged as an information card. The developer puts this app on their website for folks to download and install. If you click on it and already have a PDS Dashboard the new app gets installed in about one second. If you click on it an you don&#8217;t already have a PDS Dashboard, then you download an installation package that includes a Dashboard (with the app pre-installed inside it).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=504</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Schema Mapping Session at IIW</title>
		<link>http://www.incontextblog.com/?p=463</link>
		<comments>http://www.incontextblog.com/?p=463#comments</comments>
		<pubDate>Mon, 09 Nov 2009 21:48:01 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Data Portability]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=463</guid>
		<description><![CDATA[I led a session about schema mapping at IIW last week. The basic idea is this. Rather than trying to get the world to agree to a single schema for attributes (e.g. OpenID AX, ICF Schema Catalog, Plaxo Portable Contacts, etc., etc., &#8230;you know the old saw that the great thing about standard is that [...]]]></description>
			<content:encoded><![CDATA[<p>I led a session about schema mapping at IIW last week. The basic idea is this. Rather than trying to get the world to agree to a single schema for attributes (e.g. OpenID AX, ICF Schema Catalog, Plaxo Portable Contacts, etc., etc., &#8230;you know the old saw that the great thing about standard is that there are so many of them (like 75!)) we just let the natural authorities for attributes mint their own URIs.</p>
<p>And while we&#8217;re being lazy, we just sit back and watch as these schema-creators evangelize their particular schema as far and as wide as they wish to. Today the only way an IdP can talk to an RP is if both know how to speak a common schema. This is true regardless of protocol or transport. It is as true of SAML tokens as OpenID attributes.</p>
<p>Its all a form of tight coupling. And tight coupling requires a lot of effort. You know what they say &#8220;consensus is harder than code.&#8221; Experience shows that the richer the schema the higher the costs to get everyone on board, the longer the process takes, and the narrower the diffusion/adoption. These economic realities drive the creation of more and newer schemas in each sub-ecosystem, even when common schemas could theoretically be agreed to.</p>
<p>But if we can&#8217;t all agree to the &#8220;one schema to rule them all&#8221; aren&#8217;t we doomed to a Tower of Babel?</p>
<p><img src="http://www.incontextblog.com/wp-content/uploads/2009/11/babel1.png" alt="" hspace="10" vspace="10" align="left" /></p>
<p>Not entirely. There is another possible route to interoperability. Mapping. Instead of creating N*N mappings between each schema we create 2N mappings into and out from a common, rich, granualr, and horribly complicated schema (that nobody would use <em>directly</em>).</p>
<p>We use a mechanical process (think web service, library, etc.) that maps an <em>input</em> schema into a rich, intermediate schema, and from there to an <em>output</em> schema. This schema mapping process, being both algorithmic and data driven, can live at the RP, in the cloud, or at the IdP, depending on the need.</p>
<p>I will now describe one way to do this schema mapping. I have a personal bias towards declarative approaches that involve rich data and simple algorithms. The mapping rules that I&#8217;m about to describe can themselves be described as data with embedded names of a few simple functions. So that&#8217;s the design approach. Here are the details.</p>
<p>Every input attribute must come from some known namespace (schema name). A set of mapping rules must have already been created; one for each attribute in the input schema. The rule for the specific input attribute is then looked up and applied to transform this input attribute into its equivalent attribute(s) in the internal, intermediate data model (schema). To create the output attribute(s) the process is reversed. The target namespace (schema name) must be known, and a set of mapping rules must have been created for it. The output process takes the attribute in the internal data model, looks up the mapping rule for it and uses this rule to generate the output attribute.</p>
<p>This approach was discussed a lot on the second day of the recent <a href="http://middleware.internet2.edu/tao-of-attributes/">Tao of Attributes workshop</a>, and a some similar thinking was discussed a couple years ago regarding a Common Dictionary Service (CDS) on the <a href="http://identityschemas.org">IdentitySchemas.org</a> list at Identity Commons</p>
<p>The Higgins project is starting work on an open source <a href="http://wiki.eclipse.org/Persona_Data_Model_1.1#UML_Class_Diagram">Persona Data Model</a> that could serve as a common internal schema. A schema that nobody would actually use per se, but useful to map into and out from. We&#8217;re also experimenting with declarative mapping rules.</p>
<p>A quick aside:</p>
<blockquote><p>The straw that broke the camel&#8217;s back for me happened recently. In the ICF&#8217;s Schema Working Group, we created a super-lightweight, email-based process to simply list whatever attribute/claim URIs that any party reasonably suggested they wanted. <a href="http://wiki.informationcard.net/index.php/Claim_Catalog">Here&#8217;s the catalog</a> we created. When Equifax wanted an &#8220;I&#8217;m over 18&#8243; URI we swung into action and minted http://schemas.informationcard.net/@ics/age-18-or-over/2008-11. Cool.</p></blockquote>
<blockquote><p>Then the ICF and OpenID foundations start working together with the GSA and other parts of the Federal government. There&#8217;s a need for a &#8220;Level of Assurance&#8221; 1 claim. No problem. We created http://schemas.informationcard.net/@ics/icam-assurance-level-1/2009-06. Trouble is, when the GSA&#8217;s profile for IMI Infocards was published the URI started with http://idmanagement.gov.</p>
<p>Why? Who knows. That&#8217;s what they wanted. And since (sadly) in SAML there are no sub-namespaces allowed with the URI namespace, one URI is as good as another since all must be treated as an opaque string. So it&#8217;s hard to push back on the &#8220;customer&#8221; and tell them that the attribute should really start off http://schemas.informationcard.net&#8230;  They think that the LOA 1 URI is theirs. To make a separate URI and thus define another schema over such a trifling matter, was all the convincing that I needed to rethink things.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=463</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OpenID Summit &amp; IIW IX Presentations</title>
		<link>http://www.incontextblog.com/?p=456</link>
		<comments>http://www.incontextblog.com/?p=456#comments</comments>
		<pubDate>Wed, 04 Nov 2009 07:19:45 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Information Cards]]></category>
		<category><![CDATA[Selectors]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=456</guid>
		<description><![CDATA[Kantara ULX WG &#8211; a quick intro to what we&#8217;re trying to do Relationship cards &#8211; newbie intro]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.incontextblog.com/wp-content/uploads/2009/11/ULX-at-OpenID-Summit-Nov-2-2009.pdf">Kantara ULX WG</a> &#8211; a quick intro to what we&#8217;re trying to do</li>
<li><a href="http://www.incontextblog.com/wp-content/uploads/2009/11/Relationship-Cards-IIW-Nov-3-2009.pdf">Relationship cards</a> &#8211; newbie intro</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=456</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Password Cards</title>
		<link>http://www.incontextblog.com/?p=177</link>
		<comments>http://www.incontextblog.com/?p=177#comments</comments>
		<pubDate>Wed, 04 Mar 2009 17:16:11 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Information Cards]]></category>
		<category><![CDATA[Selectors]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=177</guid>
		<description><![CDATA[Here&#8217;s an idea that will let your trusty selector log you in to the other 99.999&#8230;% of sites that don&#8217;t yet support I-Card, OpenID, SAML, Facebook Connect, or Google Friend Connect. One of the long term goals of the Higgins project is to provide universal login. This is the ability to log you in to [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an idea that will let your trusty selector log you in to the other 99.999&#8230;% of sites that don&#8217;t yet support I-Card, OpenID, SAML, Facebook Connect, or Google Friend Connect.</p>
<p>One of the long term goals of the Higgins project is to provide <strong>universal login</strong>. This is the ability to log you in to almost any website or app (aka Relying Party (RP)) using a variety of methods including I-Card (as defined in ISIP 1.5 and <a href="http://docs.oasis-open.org/imi/identity/v1.0/cd/identity-1.0-spec-cd-02.html">soon here-ish</a>), OpenID and username/password.</p>
<p>As a step towards universal login, I&#8217;ve written up <a href="http://wiki.eclipse.org/Password_Cards">this summary of password cards</a> based on input from many folks. The basic idea is to enhance the Higgins browser extension with &#8220;password manager&#8221; capabilities, and to enhance the selector such that it can store your usernames and passwords as claim values on personal cards, and to do so with special care to prevent phishing attacks.</p>
<p>As I mentioned <a href="http://www.incontextblog.com/?p=90">here</a>, I see this work as a step towards convergence on single browser extension that &#8220;just works&#8221; (universal login).  Beyond un/pw and I-Card we&#8217;d like to integrate support for what the IDIB folks, Axel Nennker, and others are doing with OpenID. And then there&#8217;s SAML.</p>
<p>Odd as it may seem, by embracing passwords, we&#8217;ll help eliminate them. Or at least I hope so.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=177</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No &#8216;user-centric&#8217; or &#8216;enterprise-centric&#8217; identity</title>
		<link>http://www.incontextblog.com/?p=49</link>
		<comments>http://www.incontextblog.com/?p=49#comments</comments>
		<pubDate>Wed, 27 Aug 2008 14:15:10 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Digital Identity]]></category>
		<category><![CDATA[Higgins]]></category>
		<category><![CDATA[Information Cards]]></category>
		<category><![CDATA[Selectors]]></category>

		<guid isPermaLink="false">http://www.incontextblog.com/?p=49</guid>
		<description><![CDATA[Dave Kearns has written an article explaining that, if solutions are architected correctly, there&#8217;s no meaningful difference between the two. He writes: We start by defining identity as a group of “personas” (see “Defining identity, persona, role”). Any persona can be made up of a group of personas or roles. Each of those personas can [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="float:right; margin: 5px;" src="http://www.networkworld.com/graphics/templates/kearns_thumb.gif" alt="" width="47" height="47" />Dave Kearns has written <a href="http://www.networkworld.com/newsletters/dir/2008/082508id2.html?nlhtident=ts_082708&amp;nladname=082708security:identitymanagemental">an article</a> explaining that, if solutions are architected correctly, there&#8217;s no meaningful difference between the two. He writes:</p>
<blockquote><p>We start by defining identity as a group of “personas” (see <a href="http://www.networkworld.com/newsletters/dir/2003/0825id2.html">“Defining identity, persona, role”</a>). Any persona can be made up of a group of personas or roles. Each of those personas can be linked, or separated, as the    entity identified by them wishes. One of those personas is (or, rather, could be) an “enterprise persona.” That one brings    together “…all the activities and attributes of a single entity” performed for or related to that enterprise “into a readily    accessible (and reportable and auditable) form.”</p>
<p>So there is no “user-centric” or “enterprise-centric” identity. There is just an entity with AN identity made up of various personas some of which may be controlled or limited in some way by an outside organization – not only by the enterprise but also by governments, social organizations, etc. The ability to keep these personas separate, where legally able to do so, must be a given. Each persona will have different identity needs and requirements, of course, but that’s what will drive the “identity economy” as vendors seek to satisfy those needs and requirements in accordance with the laws. The government’s laws, the enterprise’s “laws”, the fraternal and social organization’s “laws” and the Laws of Identity as laid down by Cameron.</p></blockquote>
<p>I really didn&#8217;t understand this when I started the Higgins project back in 2003. I was trying to scratch a personal itch. I wanted a personal dashboard that would pull together all of my profiles and social relationships. I felt like my various personas and buddy lists were scattered all over the web in hundreds of silos/sites.</p>
<p>Later when my colleague <a href="http://www.meristic.com/">Mary Ruddy</a> described the Higgins project to Jamie Lewis, Jamie suggested that we talk to Tony Nadalin (IBM) and Kim Cameron. My initial reaction was &#8220;no,&#8221; and &#8220;no way&#8221; [respectively]. I figured that I was working on a user-centric solution that would work for me, as an individual. So why would we talk to IBM, they sell to enterprises [so surely what we're working on can't be of interest]. And as for talking to Microsoft (I didn&#8217;t know Kim at the time)&#8230;why would I talk to the folks that brought us Hailstorm and Passport?</p>
<p>As history has shown, I was wrong on both counts. Luckily, Jamie was persuasive and Mary was insistent. We have since joined forces with Tony and Kim. Tony explained to us that the problems facing the enterprise were extremely relevant to Higgins and that there was no conflict. And Kim (and later Mike Jones and others) won us over by showing that Microsoft could be a good actor in this space. [So much so that the <a href="http://higgins-project.org">Higgins</a> project decided to invest a ton of resources on making sure that its "card-based" metaphor and file formats were a pure super-set conceptually, functionally, and architecturally WRT CardSpace.]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.incontextblog.com/?feed=rss2&#038;p=49</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
