2012 confoo: defining user identity
DESCRIPTION
March 2012 talk at Confoo (confoo.ca) on defining user identity.TRANSCRIPT
Defining User Identity
True Identity VS Anonymity
Jonathan LeBlancDeveloper Evangelist: X.commerce
Email: [email protected]: @jcleblanc
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
The Foundations of Human Identity
Tribalism and Social Grouping
The Big Bag of Social Identity Fail
Experimental Identity Methods
What We’re Going to Cover
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
The Foundations of Human Identity
Tribalism and Social Grouping
The Big Bag of Social Identity Fail
Experimental Identity Methods
What We’re Going to Cover
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Human Identity: User Types
Anonymous Users Real Identity Login
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
OAuth (1.0a + 2.0)PayPal Access, Facebook, Twitter
OpenID (…and the upcoming OpenID Connect)PayPal Access, Google, Yahoo!
BrowserIDMozilla
Human Identity: Open Identity Programming
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Human Identity: Anonymous Users
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
There are a few common options
Human Identity: Tracking Anonymous Users
Tracking Cookie Local Storage
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
• On each page visited, track the URL
• HTML5 Local Storage as primary storage
• Cookies as secondary storage
Human Identity: Tracking Anonymous Users
Program Overview
Tracking Anonymous Users with Local Storage
var storeName = "visited";if (typeof(localStorage) == 'undefined' ) { //Local Storage Not Available} else { try { var sites = localStorage.getItem(storeName); sites = (sites === null) ? window.location : sites + window.location; localStorage.setItem(storeName, sites + "|"); } catch (e) { if (e == QUOTA_EXCEEDED_ERR) { //quota exceeded } }}
Tracking Anonymous Users with Cookies
function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' '){ c = c.substring(1, c.length) }; if (c.indexOf(nameEQ) == 0){ return c.substring(nameEQ.length, c.length); } } return null;}
var storeName = "visited";if (typeof(localStorage) == "undefined" ) { var cookieVal = readCookie(storeName); var value = ((cookieVal === null) ? window.location : cookieVal + window.location); var days = 1; var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); var expires = "; expires=" + date.toGMTString(); document.cookie = storeName + "=" + value + "|" + expires + "; path=/";} else { //Use Local Storage}
Tracking Anonymous Users with Cookies
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
• Remove oldest results when storage fills
• Build categorization mapping prior to storage to save space (more on this later)
Human Identity: Tracking Anonymous Users
Next Steps / Improvements
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Human Identity: Real Identity Users
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Human Identity: Real Identity Sources
Social (perceived) Concrete (true)
Sources of Real Identity
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Human Identity: BrowserID
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
BrowserID Source<script src="https://browserid.org/include.js" type="text/javascript"></script>
JQuery Source<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
Human Identity: BrowserID
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Human Identity: BrowserID
navigator.id.get(function(assertion) { if (assertion) { $.ajax({ url: 'https://browserid.org/verify', type: 'POST', data: 'assertion='+assertion+'&audience=jcleblanc.com', success: function(res) { console.log(res); } });});
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
{ audience: "jcleblanc.com", email: "[email protected]", expires: 1320081400987, issuer: "browserid.org", status: "okay"}
Human Identity: BrowserID JSON Results
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
The Foundations of Human Identity
Tribalism and Social Grouping
The Big Bag of Social Identity Fail
Experimental Identity Methods
What We’re Going to Cover
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Social Grouping: It’s Not A New Thing…
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Tribalism started as a way to keep us safe
…it has lead to some horrible parts of history
but it is also a foundation of many of our social relationships
Social Grouping: Foundation in Tribalism
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Social Grouping: The Real Life Social Graph
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Social Grouping: The Online Social Graph
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Social Grouping: Group Types
Follower Type
Connection Type
Group Type
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Social Grouping: Data Miners are Rock Stars
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
• Use all URLs from the previous program.
• Obtain content category for page.
• Categorize user interest.
Social Grouping: Group Programming Primer
Program Overview
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Social Grouping: Group Programming Primer
Step 1: Obtain Website Content
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Social Grouping: Group Programming Primer
Step 2: Perform Keyword Density Search
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Social Grouping: Group Programming Primer
Step 3: Weight Keywords
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
The Foundations of Human Identity
Tribalism and Social Grouping
The Big Bag of Social Identity Fail
Experimental Identity Methods
What We’re Going to Cover
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
“My privacy concerns are not trite. They are linked to my actual physical safety” --Harriet Jacobs (Gizmodo)
Social Identity Fail: Personal Safety
When Social Discovery Impacts Personal Safety
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
“Path Uploads Your Entire iPhone Contact List By Default” --Mark Hachman (PCMag)
Social Identity Fail: Privacy Concerns
When Making Things Easy Impairs Privacy
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
“How Target Figured Out A Teen Girl Was Pregnant Before Her Father Did” --Kashmir Hill (Forbes)
Social Identity Fail: The Fine Line
The Fine Line Between Insightful and Creepy
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
The Foundations of Human Identity
Tribalism and Social Grouping
The Big Bag of Social Identity Fail
Experimental Identity Methods
What We’re Going to Cover
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Experimental Identity: WebFinger
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Step 1: Perform Discovery
curl https://gmail.com/.well-known/host-meta
Experimental Identity: WebFinger
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Experimental Identity: WebFinger
<XRD xmlns='http://docs.oasis.open.org/ns/xri/xrd-1.0' xmlns:hm='http://host-meta.net/xrd/1.0'> <hm:Host xmlns='http://host-meta.net/xrd/1.0'>gmail.com </hm:Host> <Link rel='lrdd' template='http://www.google.com/s2/webfinger/?q={uri}'> <Title>Resource Descriptor</Title> </Link></XRD>
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Step 2: Collect User Data
curl http://www.google.com/s2/webfinger/[email protected]
Experimental Identity: WebFinger
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
User Profilehttp://www.google.com/profiles/nakedtechnologist
Portable Contactshttp://www-opensocial.googleusercontent.com/api/people/118167121283215553793/
Experimental Identity: WebFinger
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
profileUrlidthumbnail urlurlsphotos
Experimental Identity: WebFinger
name formatted family name given name display name
X.Commerce (eBay Inc.)http://www.x.com | @x_commerce
Identity is more than just a login
Authentication is just the first step
Find the tool that:– Has the raw data that you need– Works with your business
Identity Programming Core Concepts
Thanks! Any Questions?
Jonathan LeBlancEmail: [email protected]
Twitter: @jcleblancGithub: https://github.com/jcleblanc
http://slidesha.re/confoo_identity2