Defining User Identity
True Identity VS Anonymity




                                         Jonathan LeBlanc
                         Developer Evangelist: X.commerce
                                    Email: jleblanc@x.com
                                       Twitter: @jcleblanc
What We’re Going to Cover


          The Foundations of Human Identity

          Tribalism and Social Grouping

          The Big Bag of Social Identity Fail

          Experimental Identity Methods


X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
What We’re Going to Cover


          The Foundations of Human Identity

          Tribalism and Social Grouping

          The Big Bag of Social Identity Fail

          Experimental Identity Methods


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
Human Identity: Open Identity Programming

       OAuth (1.0a + 2.0)
       PayPal Access, Facebook, Twitter

       OpenID (…and the upcoming OpenID Connect)
       PayPal Access, Google, Yahoo!

       BrowserID
       Mozilla
X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Human Identity: Anonymous Users




X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Human Identity: Tracking Anonymous Users

                There are a few common options




             Tracking Cookie      Local Storage

X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Human Identity: Tracking Anonymous Users

                          Program Overview

        • On each page visited, track the URL

        • HTML5 Local Storage as primary storage

        • Cookies as secondary storage

X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
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;
    }
Tracking Anonymous Users with Cookies

 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
 }
Human Identity: Tracking Anonymous Users

                    Next Steps / Improvements

        • Remove oldest results when storage fills

        • Build categorization mapping prior to
          storage to save space (more on this later)


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

                        Sources of Real Identity




         Social (perceived)            Concrete (true)

X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Human Identity: BrowserID




X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Human Identity: BrowserID

  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>



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
Human Identity: BrowserID JSON Results

         {
             audience: "jcleblanc.com",
             email: "nakedtechnologist@gmail.com",
             expires: 1320081400987,
             issuer: "browserid.org",
             status: "okay"
         }

X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
What We’re Going to Cover


          The Foundations of Human Identity

          Tribalism and Social Grouping

          The Big Bag of Social Identity Fail

          Experimental Identity Methods


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
Social Grouping: Foundation in Tribalism


    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


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
Social Grouping: Group Programming Primer

                          Program Overview

        • Use all URLs from the previous program.

        • Obtain content category for page.

        • Categorize user interest.

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
What We’re Going to Cover


          The Foundations of Human Identity

          Tribalism and Social Grouping

          The Big Bag of Social Identity Fail

          Experimental Identity Methods


X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Social Identity Fail: Personal Safety


    When Social Discovery Impacts Personal Safety


                             “My privacy concerns are not trite.
                             They are linked to my actual
                             physical safety”
                             --Harriet Jacobs (Gizmodo)



X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Social Identity Fail: Privacy Concerns


        When Making Things Easy Impairs Privacy


                             “Path Uploads Your Entire iPhone
                             Contact List By Default”
                             --Mark Hachman (PCMag)




X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Social Identity Fail: The Fine Line


      The Fine Line Between Insightful and Creepy


                         “How Target Figured Out A Teen Girl
                         Was Pregnant Before Her Father Did”
                         --Kashmir Hill (Forbes)




X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
What We’re Going to Cover


          The Foundations of Human Identity

          Tribalism and Social Grouping

          The Big Bag of Social Identity Fail

          Experimental Identity Methods


X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Experimental Identity: WebFinger




X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Experimental Identity: WebFinger



                    Step 1: Perform Discovery

   curl https://gmail.com/.well-known/host-meta




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
Experimental Identity: WebFinger



                     Step 2: Collect User Data

                    curl
http://www.google.com/s2/webfinger/?q=nakedt
           echnologist@gmail.com


X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Experimental Identity: WebFinger

  User Profile
  http://www.google.com/profiles/nakedtechnolo
  gist

  Portable Contacts
  http://www-
  opensocial.googleusercontent.com/api/people/1
  18167121283215553793/
X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Experimental Identity: WebFinger


         profileUrl              name
         id                       formatted
         thumbnail url            family name
         urls                     given name
         photos                   display name



X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Identity Programming Core Concepts

         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

X.Commerce (eBay Inc.)
http://www.x.com | @x_commerce
Thanks! Any Questions?
http://slidesha.re/confoo_identity2



                                      Jonathan LeBlanc
                                Email: jleblanc@x.com
                                    Twitter: @jcleblanc
                  Github: https://github.com/jcleblanc

2012 Confoo: Defining User Identity

  • 1.
    Defining User Identity TrueIdentity VS Anonymity Jonathan LeBlanc Developer Evangelist: X.commerce Email: jleblanc@x.com Twitter: @jcleblanc
  • 2.
    What We’re Goingto Cover The Foundations of Human Identity Tribalism and Social Grouping The Big Bag of Social Identity Fail Experimental Identity Methods X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 3.
    What We’re Goingto Cover The Foundations of Human Identity Tribalism and Social Grouping The Big Bag of Social Identity Fail Experimental Identity Methods X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 4.
    Human Identity: UserTypes Anonymous Users Real Identity Login X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 5.
    Human Identity: OpenIdentity Programming OAuth (1.0a + 2.0) PayPal Access, Facebook, Twitter OpenID (…and the upcoming OpenID Connect) PayPal Access, Google, Yahoo! BrowserID Mozilla X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 6.
    Human Identity: AnonymousUsers X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 7.
    Human Identity: TrackingAnonymous Users There are a few common options Tracking Cookie Local Storage X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 8.
    Human Identity: TrackingAnonymous Users Program Overview • On each page visited, track the URL • HTML5 Local Storage as primary storage • Cookies as secondary storage X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 9.
    Tracking Anonymous Userswith 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 } } }
  • 10.
    Tracking Anonymous Userswith 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; }
  • 11.
    Tracking Anonymous Userswith Cookies 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 }
  • 12.
    Human Identity: TrackingAnonymous Users Next Steps / Improvements • Remove oldest results when storage fills • Build categorization mapping prior to storage to save space (more on this later) X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 13.
    Human Identity: RealIdentity Users X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 14.
    Human Identity: RealIdentity Sources Sources of Real Identity Social (perceived) Concrete (true) X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 15.
    Human Identity: BrowserID X.Commerce(eBay Inc.) http://www.x.com | @x_commerce
  • 16.
    Human Identity: BrowserID 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> X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 17.
    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
  • 18.
    Human Identity: BrowserIDJSON Results { audience: "jcleblanc.com", email: "nakedtechnologist@gmail.com", expires: 1320081400987, issuer: "browserid.org", status: "okay" } X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 19.
    What We’re Goingto Cover The Foundations of Human Identity Tribalism and Social Grouping The Big Bag of Social Identity Fail Experimental Identity Methods X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 20.
    Social Grouping: It’sNot A New Thing… X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 21.
    Social Grouping: Foundationin Tribalism 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 X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 22.
    Social Grouping: TheReal Life Social Graph X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 23.
    Social Grouping: TheOnline Social Graph X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 24.
    Social Grouping: GroupTypes Follower Type Connection Type Group Type X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 25.
    Social Grouping: DataMiners are Rock Stars X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 26.
    Social Grouping: GroupProgramming Primer Program Overview • Use all URLs from the previous program. • Obtain content category for page. • Categorize user interest. X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 27.
    Social Grouping: GroupProgramming Primer Step 1: Obtain Website Content X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 28.
    Social Grouping: GroupProgramming Primer Step 2: Perform Keyword Density Search X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 29.
    Social Grouping: GroupProgramming Primer Step 3: Weight Keywords X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 30.
    What We’re Goingto Cover The Foundations of Human Identity Tribalism and Social Grouping The Big Bag of Social Identity Fail Experimental Identity Methods X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 31.
    Social Identity Fail:Personal Safety When Social Discovery Impacts Personal Safety “My privacy concerns are not trite. They are linked to my actual physical safety” --Harriet Jacobs (Gizmodo) X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 32.
    Social Identity Fail:Privacy Concerns When Making Things Easy Impairs Privacy “Path Uploads Your Entire iPhone Contact List By Default” --Mark Hachman (PCMag) X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 33.
    Social Identity Fail:The Fine Line The Fine Line Between Insightful and Creepy “How Target Figured Out A Teen Girl Was Pregnant Before Her Father Did” --Kashmir Hill (Forbes) X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 34.
    What We’re Goingto Cover The Foundations of Human Identity Tribalism and Social Grouping The Big Bag of Social Identity Fail Experimental Identity Methods X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 35.
    Experimental Identity: WebFinger X.Commerce(eBay Inc.) http://www.x.com | @x_commerce
  • 36.
    Experimental Identity: WebFinger Step 1: Perform Discovery curl https://gmail.com/.well-known/host-meta X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 37.
    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
  • 38.
    Experimental Identity: WebFinger Step 2: Collect User Data curl http://www.google.com/s2/webfinger/?q=nakedt echnologist@gmail.com X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 39.
    Experimental Identity: WebFinger User Profile http://www.google.com/profiles/nakedtechnolo gist Portable Contacts http://www- opensocial.googleusercontent.com/api/people/1 18167121283215553793/ X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 40.
    Experimental Identity: WebFinger profileUrl name id formatted thumbnail url family name urls given name photos display name X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 41.
    Identity Programming CoreConcepts 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 X.Commerce (eBay Inc.) http://www.x.com | @x_commerce
  • 42.
    Thanks! Any Questions? http://slidesha.re/confoo_identity2 Jonathan LeBlanc Email: jleblanc@x.com Twitter: @jcleblanc Github: https://github.com/jcleblanc

Editor's Notes

  • #28 Suck in web content via curlConvert to valid XML document (do not use as text and run Regex against it)
  • #29 Search through text on the page and store words + how often they are usedStrip out common words
  • #30 Use meta description and keywords to match against your keyword density searchUse Open Graph protocol tags to find more keywords and page content
  • #32 http://gizmodo.com/5470696/fck-you-google
  • #33 http://www.pcmag.com/article2/0,2817,2399970,00.asp
  • #34 http://www.forbes.com/sites/kashmirhill/2012/02/16/how-target-figured-out-a-teen-girl-was-pregnant-before-her-father-did/The statistician is now a rock star