SlideShare une entreprise Scribd logo
1  sur  50
Exploring Human Identity
 Through Personalization and Data Mining




                                Jonathan LeBlanc
               Developer Evangelist: X.commerce
                              Twitter: @jcleblanc
                         E-Mail: jleblanc@x.com
                    Github: github.com/jcleblanc
What We’re Going to Cover


             The Foundations of Human Identity

             Tribalism and Social Grouping

             Experimental Identity Methods

             The Big Bag of Social Identity Fail


http://www.x.com                        http://slideshare.net/jcleblanc
What We’re Going to Cover


             The Foundations of Human Identity

             Tribalism and Social Grouping

             Experimental Identity Methods

             The Big Bag of Social Identity Fail


http://www.x.com                        http://slideshare.net/jcleblanc
Human Identity: User Types




       Anonymous Users   Registered Users


http://www.x.com             http://slideshare.net/jcleblanc
Human Identity: Open Identity Programming

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

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

      BrowserID
      Mozilla

http://www.x.com                         http://slideshare.net/jcleblanc
Human Identity: Anonymous Users




http://www.x.com        http://slideshare.net/jcleblanc
Human Identity: Tracking Anonymous Users

             There are a few common options




           Tracking Cookie     Local Storage

http://www.x.com                   http://slideshare.net/jcleblanc
Human Identity: Tracking Anonymous Users

                   Program Overview

      • On each page visited, track the URL

      • HTML5 Local Storage as primary storage

      • Cookies as secondary storage


http://www.x.com                    http://slideshare.net/jcleblanc
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)


http://www.x.com                       http://slideshare.net/jcleblanc
Human Identity: Registered Users




http://www.x.com          http://slideshare.net/jcleblanc
Human Identity: Identity Sources

                   Sources of Real Identity




       Social (perceived)         Concrete (true)

http://www.x.com                       http://slideshare.net/jcleblanc
Human Identity: Concrete Identity




http://www.x.com          http://slideshare.net/jcleblanc
PayPal Access: OAuth 2 + Commerce


                   Seamless Checkout



                   Prospect Scores



                   Recommendations


http://www.x.com                http://slideshare.net/jcleblanc
PayPal Access: The Common Code




<?php
define('KEY', 'YOUR APPLICATION ID');
define('SECRET', 'YOUR APPLICATION SECRET');

define('CALLBACK_URL', 'YOUR CALLBACK PATH - TO COMPLETE.PHP');
define('AUTH_ENDPOINT', 'https://identity.x.com/xidentity/resources/authorize');
define('TOKEN_ENDPOINT', 'https://identity.x.com/xidentity/oauthtokenservice');
define('USER_ENDPOINT', 'https://identity.x.com/xidentity/resources/profile/me');

function run_curl($url, $method = 'GET', $postvals = null){ ... }
?>
PayPal Access: Forwarding for Login


 <?php
 require_once "common.php";

 $auth_url = sprintf(
   "%s?scope=%s&response_type=code&redirect_uri=%s&client_id=%s",
   AUTHORIZATION_ENDPOINT,
   urlencode("https://identity.x.com/xidentity/resources/profile/me"),
   urlencode(CALLBACK_URL),
   KEY);

 //forward user to PayPal auth page
 header("Location: $auth_url");
 ?>
PayPal Access: Obtaining the Access Token
   <?php
   require_once "common.php";

   //capture code from auth
   $code = $_GET["code"];

   //construct POST object for access token fetch request
   $postvals =
   sprintf("client_id=%s&client_secret=%s&grant_type=authorization_code&
   code=%s&redirect_uri=%s",
     KEY,
     SECRET,
     $code,
     urlencode(CALLBACK_URL));

   //get JSON access token object
   $token =
   json_decode(run_curl(ACCESS_TOKEN_ENDPOINT, 'POST', $postvals));
PayPal Access: Using the Access Token




    //construct URI to fetch profile information for current user
    $profile_url =
    sprintf("%s?oauth_token=%s", PROFILE_ENDPOINT, $token-
    >access_token);

    //fetch profile of current user
    $profile = run_curl($profile_url);

    var_dump($profile);
    ?>
PayPal Access: Using the Raw Data




http://www.x.com          http://slideshare.net/jcleblanc
PayPal Access: Using the Raw Data




http://www.x.com          http://slideshare.net/jcleblanc
What We’re Going to Cover


             The Foundations of Human Identity

             Tribalism and Social Grouping

             Experimental Identity Methods

             The Big Bag of Social Identity Fail


http://www.x.com                        http://slideshare.net/jcleblanc
Social Grouping: It’s Not A New Thing…




http://www.x.com           http://slideshare.net/jcleblanc
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


http://www.x.com                    http://slideshare.net/jcleblanc
Social Grouping: The Real Life Social Graph




http://www.x.com               http://slideshare.net/jcleblanc
Social Grouping: The Online Social Graph




http://www.x.com           http://slideshare.net/jcleblanc
Social Grouping: Group Types


                   Follower Type


                   Connection Type

                   Group Type


http://www.x.com                http://slideshare.net/jcleblanc
Social Grouping: Data Miners are Rock Stars




http://www.x.com              http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer


                   Program Overview

      • Use all URLs from the previous program.

      • Obtain content category for page.

      • Categorize user interest.

http://www.x.com                    http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer




                           Step 1: Obtain
                           Website Content




http://www.x.com            http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer




 Step 2: Perform
 Keyword Density
 Search




http://www.x.com            http://slideshare.net/jcleblanc
Social Grouping: Group Programming Primer




                         Step 3: Weight
                         Keywords




http://www.x.com            http://slideshare.net/jcleblanc
What We’re Going to Cover


             The Foundations of Human Identity

             Tribalism and Social Grouping

             Experimental Identity Methods

             The Big Bag of Social Identity Fail


http://www.x.com                        http://slideshare.net/jcleblanc
Experimental Identity: WebFinger




http://www.x.com          http://slideshare.net/jcleblanc
Experimental Identity: WebFinger



                   Step 1: Perform Discovery

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




http://www.x.com                        http://slideshare.net/jcleblanc
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>



http://www.x.com                          http://slideshare.net/jcleblanc
Experimental Identity: WebFinger


                   Step 2: Collect User Data

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



http://www.x.com                         http://slideshare.net/jcleblanc
Experimental Identity: WebFinger


   User Profile
   http://www.google.com/profiles/nakedtechnologist


   Portable Contacts
   http://www-
   opensocial.googleusercontent.com/api/people/118167
   121283215553793/

http://www.x.com                     http://slideshare.net/jcleblanc
Experimental Identity: WebFinger


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



http://www.x.com             http://slideshare.net/jcleblanc
Experimental Identity: BrowserID




http://www.x.com          http://slideshare.net/jcleblanc
Experimental 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>


http://www.x.com                        http://slideshare.net/jcleblanc
Experimental 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);
           }
       });
});
http://www.x.com                         http://slideshare.net/jcleblanc
Experimental Identity: BrowserID Results

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

http://www.x.com                    http://slideshare.net/jcleblanc
What We’re Going to Cover


             The Foundations of Human Identity

             Tribalism and Social Grouping

             Experimental Identity Methods

             The Big Bag of Social Identity Fail


http://www.x.com                       http://slideshare.net/jcleblanc
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)



http://www.x.com                          http://slideshare.net/jcleblanc
Social Identity Fail: Privacy Concerns

      When Making Things Easy Impairs Privacy


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




http://www.x.com                       http://slideshare.net/jcleblanc
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)




http://www.x.com                             http://slideshare.net/jcleblanc
Identity Programming Core Concepts

            Identity is more than just a login

            Have a social conscience

            Find the tool that:
                   – Has the raw data that you need
                   – Works with your business

http://www.x.com                             http://slideshare.net/jcleblanc
Thanks! Any Questions?
    http://slidesha.re/convergese_id




                           Jonathan LeBlanc
          Developer Evangelist: X.commerce
                         Twitter: @jcleblanc
                    E-Mail: jleblanc@x.com
               Github: github.com/jcleblanc

Contenu connexe

Similaire à 2012 ConvergeSE: Exploring Human Identity Through Personalization and Data Mining

2012 Confoo: Defining User Identity
2012 Confoo: Defining User Identity2012 Confoo: Defining User Identity
2012 Confoo: Defining User IdentityJonathan LeBlanc
 
2012 POSSCON Changing the Face of Identity in Ecommerce
2012 POSSCON Changing the Face of Identity in Ecommerce2012 POSSCON Changing the Face of Identity in Ecommerce
2012 POSSCON Changing the Face of Identity in EcommerceJonathan LeBlanc
 
Building Viral Social Experiences
Building Viral Social ExperiencesBuilding Viral Social Experiences
Building Viral Social ExperiencesJonathan LeBlanc
 
Building Things Fast - and getting approval
Building Things Fast - and getting approvalBuilding Things Fast - and getting approval
Building Things Fast - and getting approvalSimon Willison
 
The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009Chris Chabot
 
Persona: in your browsers, killing your passwords
Persona: in your browsers, killing your passwordsPersona: in your browsers, killing your passwords
Persona: in your browsers, killing your passwordsFrancois Marier
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)Doris Chen
 
2012 03 27_philly_jug_rewrite_static
2012 03 27_philly_jug_rewrite_static2012 03 27_philly_jug_rewrite_static
2012 03 27_philly_jug_rewrite_staticLincoln III
 
Fronteers 2009 Of Hamsters, Feature Creatures and Missed Opportunities
Fronteers 2009 Of Hamsters, Feature Creatures and Missed OpportunitiesFronteers 2009 Of Hamsters, Feature Creatures and Missed Opportunities
Fronteers 2009 Of Hamsters, Feature Creatures and Missed OpportunitiesChristian Heilmann
 
Passwords and freedom: can we lose the former and retain the latter?
Passwords and freedom: can we lose the former and retain the latter?Passwords and freedom: can we lose the former and retain the latter?
Passwords and freedom: can we lose the former and retain the latter?Francois Marier
 
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permissionAbraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permissionYury Chemerkin
 
Experiments in Data Portability 2
Experiments in Data Portability 2Experiments in Data Portability 2
Experiments in Data Portability 2Glenn Jones
 
Passwords suck, but centralized proprietary services are not the answer
Passwords suck, but centralized proprietary services are not the answerPasswords suck, but centralized proprietary services are not the answer
Passwords suck, but centralized proprietary services are not the answerFrancois Marier
 
You're still using passwords on your site?
You're still using passwords on your site?You're still using passwords on your site?
You're still using passwords on your site?Francois Marier
 

Similaire à 2012 ConvergeSE: Exploring Human Identity Through Personalization and Data Mining (20)

2012 Confoo: Defining User Identity
2012 Confoo: Defining User Identity2012 Confoo: Defining User Identity
2012 Confoo: Defining User Identity
 
2012 POSSCON Changing the Face of Identity in Ecommerce
2012 POSSCON Changing the Face of Identity in Ecommerce2012 POSSCON Changing the Face of Identity in Ecommerce
2012 POSSCON Changing the Face of Identity in Ecommerce
 
Building Viral Social Experiences
Building Viral Social ExperiencesBuilding Viral Social Experiences
Building Viral Social Experiences
 
Building Things Fast - and getting approval
Building Things Fast - and getting approvalBuilding Things Fast - and getting approval
Building Things Fast - and getting approval
 
The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009The Open & Social Web - Kings of Code 2009
The Open & Social Web - Kings of Code 2009
 
We are Digital Puppets
We are Digital PuppetsWe are Digital Puppets
We are Digital Puppets
 
Persona: in your browsers, killing your passwords
Persona: in your browsers, killing your passwordsPersona: in your browsers, killing your passwords
Persona: in your browsers, killing your passwords
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
 
2012 03 27_philly_jug_rewrite_static
2012 03 27_philly_jug_rewrite_static2012 03 27_philly_jug_rewrite_static
2012 03 27_philly_jug_rewrite_static
 
Fronteers 2009 Of Hamsters, Feature Creatures and Missed Opportunities
Fronteers 2009 Of Hamsters, Feature Creatures and Missed OpportunitiesFronteers 2009 Of Hamsters, Feature Creatures and Missed Opportunities
Fronteers 2009 Of Hamsters, Feature Creatures and Missed Opportunities
 
The social media developer
The social media developer The social media developer
The social media developer
 
Passwords and freedom: can we lose the former and retain the latter?
Passwords and freedom: can we lose the former and retain the latter?Passwords and freedom: can we lose the former and retain the latter?
Passwords and freedom: can we lose the former and retain the latter?
 
Web services and JavaScript
Web services and JavaScriptWeb services and JavaScript
Web services and JavaScript
 
Abraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permissionAbraham aranguren. legal and efficient web app testing without permission
Abraham aranguren. legal and efficient web app testing without permission
 
Jquery fundamentals
Jquery fundamentalsJquery fundamentals
Jquery fundamentals
 
Experiments in Data Portability 2
Experiments in Data Portability 2Experiments in Data Portability 2
Experiments in Data Portability 2
 
HTTP Security Headers
HTTP Security HeadersHTTP Security Headers
HTTP Security Headers
 
Passwords suck, but centralized proprietary services are not the answer
Passwords suck, but centralized proprietary services are not the answerPasswords suck, but centralized proprietary services are not the answer
Passwords suck, but centralized proprietary services are not the answer
 
You're still using passwords on your site?
You're still using passwords on your site?You're still using passwords on your site?
You're still using passwords on your site?
 
H4x0rs gonna hack
H4x0rs gonna hackH4x0rs gonna hack
H4x0rs gonna hack
 

Plus de Jonathan LeBlanc

JavaScript App Security: Auth and Identity on the Client
JavaScript App Security: Auth and Identity on the ClientJavaScript App Security: Auth and Identity on the Client
JavaScript App Security: Auth and Identity on the ClientJonathan LeBlanc
 
Improving Developer Onboarding Through Intelligent Data Insights
Improving Developer Onboarding Through Intelligent Data InsightsImproving Developer Onboarding Through Intelligent Data Insights
Improving Developer Onboarding Through Intelligent Data InsightsJonathan LeBlanc
 
Better Data with Machine Learning and Serverless
Better Data with Machine Learning and ServerlessBetter Data with Machine Learning and Serverless
Better Data with Machine Learning and ServerlessJonathan LeBlanc
 
Best Practices for Application Development with Box
Best Practices for Application Development with BoxBest Practices for Application Development with Box
Best Practices for Application Development with BoxJonathan LeBlanc
 
Box Platform Developer Workshop
Box Platform Developer WorkshopBox Platform Developer Workshop
Box Platform Developer WorkshopJonathan LeBlanc
 
Modern Cloud Data Security Practices
Modern Cloud Data Security PracticesModern Cloud Data Security Practices
Modern Cloud Data Security PracticesJonathan LeBlanc
 
Understanding Box UI Elements
Understanding Box UI ElementsUnderstanding Box UI Elements
Understanding Box UI ElementsJonathan LeBlanc
 
Understanding Box applications, tokens, and scoping
Understanding Box applications, tokens, and scopingUnderstanding Box applications, tokens, and scoping
Understanding Box applications, tokens, and scopingJonathan LeBlanc
 
The Future of Online Money: Creating Secure Payments Globally
The Future of Online Money: Creating Secure Payments GloballyThe Future of Online Money: Creating Secure Payments Globally
The Future of Online Money: Creating Secure Payments GloballyJonathan LeBlanc
 
Modern API Security with JSON Web Tokens
Modern API Security with JSON Web TokensModern API Security with JSON Web Tokens
Modern API Security with JSON Web TokensJonathan LeBlanc
 
Secure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaSecure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaJonathan LeBlanc
 
Protecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsProtecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsJonathan LeBlanc
 
PHP Identity and Data Security
PHP Identity and Data SecurityPHP Identity and Data Security
PHP Identity and Data SecurityJonathan LeBlanc
 
Secure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaSecure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaJonathan LeBlanc
 
Protecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsProtecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsJonathan LeBlanc
 
Future of Identity, Data, and Wearable Security
Future of Identity, Data, and Wearable SecurityFuture of Identity, Data, and Wearable Security
Future of Identity, Data, and Wearable SecurityJonathan LeBlanc
 

Plus de Jonathan LeBlanc (20)

JavaScript App Security: Auth and Identity on the Client
JavaScript App Security: Auth and Identity on the ClientJavaScript App Security: Auth and Identity on the Client
JavaScript App Security: Auth and Identity on the Client
 
Improving Developer Onboarding Through Intelligent Data Insights
Improving Developer Onboarding Through Intelligent Data InsightsImproving Developer Onboarding Through Intelligent Data Insights
Improving Developer Onboarding Through Intelligent Data Insights
 
Better Data with Machine Learning and Serverless
Better Data with Machine Learning and ServerlessBetter Data with Machine Learning and Serverless
Better Data with Machine Learning and Serverless
 
Best Practices for Application Development with Box
Best Practices for Application Development with BoxBest Practices for Application Development with Box
Best Practices for Application Development with Box
 
Box Platform Overview
Box Platform OverviewBox Platform Overview
Box Platform Overview
 
Box Platform Developer Workshop
Box Platform Developer WorkshopBox Platform Developer Workshop
Box Platform Developer Workshop
 
Modern Cloud Data Security Practices
Modern Cloud Data Security PracticesModern Cloud Data Security Practices
Modern Cloud Data Security Practices
 
Box Authentication Types
Box Authentication TypesBox Authentication Types
Box Authentication Types
 
Understanding Box UI Elements
Understanding Box UI ElementsUnderstanding Box UI Elements
Understanding Box UI Elements
 
Understanding Box applications, tokens, and scoping
Understanding Box applications, tokens, and scopingUnderstanding Box applications, tokens, and scoping
Understanding Box applications, tokens, and scoping
 
The Future of Online Money: Creating Secure Payments Globally
The Future of Online Money: Creating Secure Payments GloballyThe Future of Online Money: Creating Secure Payments Globally
The Future of Online Money: Creating Secure Payments Globally
 
Modern API Security with JSON Web Tokens
Modern API Security with JSON Web TokensModern API Security with JSON Web Tokens
Modern API Security with JSON Web Tokens
 
Secure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaSecure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication Media
 
Protecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsProtecting the Future of Mobile Payments
Protecting the Future of Mobile Payments
 
PHP Identity and Data Security
PHP Identity and Data SecurityPHP Identity and Data Security
PHP Identity and Data Security
 
Secure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication MediaSecure Payments Over Mixed Communication Media
Secure Payments Over Mixed Communication Media
 
Protecting the Future of Mobile Payments
Protecting the Future of Mobile PaymentsProtecting the Future of Mobile Payments
Protecting the Future of Mobile Payments
 
Future of Identity, Data, and Wearable Security
Future of Identity, Data, and Wearable SecurityFuture of Identity, Data, and Wearable Security
Future of Identity, Data, and Wearable Security
 
Kill All Passwords
Kill All PasswordsKill All Passwords
Kill All Passwords
 
BattleHack Los Angeles
BattleHack Los Angeles BattleHack Los Angeles
BattleHack Los Angeles
 

Dernier

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 

Dernier (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 

2012 ConvergeSE: Exploring Human Identity Through Personalization and Data Mining

  • 1. Exploring Human Identity Through Personalization and Data Mining Jonathan LeBlanc Developer Evangelist: X.commerce Twitter: @jcleblanc E-Mail: jleblanc@x.com Github: github.com/jcleblanc
  • 2. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
  • 3. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
  • 4. Human Identity: User Types Anonymous Users Registered Users http://www.x.com http://slideshare.net/jcleblanc
  • 5. Human Identity: Open Identity Programming OpenID (…and the upcoming OpenID Connect) PayPal Access, Google, Yahoo! OAuth (1.0a + 2.0) PayPal Access, Facebook, Twitter BrowserID Mozilla http://www.x.com http://slideshare.net/jcleblanc
  • 6. Human Identity: Anonymous Users http://www.x.com http://slideshare.net/jcleblanc
  • 7. Human Identity: Tracking Anonymous Users There are a few common options Tracking Cookie Local Storage http://www.x.com http://slideshare.net/jcleblanc
  • 8. Human Identity: Tracking Anonymous Users Program Overview • On each page visited, track the URL • HTML5 Local Storage as primary storage • Cookies as secondary storage http://www.x.com http://slideshare.net/jcleblanc
  • 9. 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 } } }
  • 10. 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; }
  • 11. 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 }
  • 12. 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) http://www.x.com http://slideshare.net/jcleblanc
  • 13. Human Identity: Registered Users http://www.x.com http://slideshare.net/jcleblanc
  • 14. Human Identity: Identity Sources Sources of Real Identity Social (perceived) Concrete (true) http://www.x.com http://slideshare.net/jcleblanc
  • 15. Human Identity: Concrete Identity http://www.x.com http://slideshare.net/jcleblanc
  • 16. PayPal Access: OAuth 2 + Commerce Seamless Checkout Prospect Scores Recommendations http://www.x.com http://slideshare.net/jcleblanc
  • 17. PayPal Access: The Common Code <?php define('KEY', 'YOUR APPLICATION ID'); define('SECRET', 'YOUR APPLICATION SECRET'); define('CALLBACK_URL', 'YOUR CALLBACK PATH - TO COMPLETE.PHP'); define('AUTH_ENDPOINT', 'https://identity.x.com/xidentity/resources/authorize'); define('TOKEN_ENDPOINT', 'https://identity.x.com/xidentity/oauthtokenservice'); define('USER_ENDPOINT', 'https://identity.x.com/xidentity/resources/profile/me'); function run_curl($url, $method = 'GET', $postvals = null){ ... } ?>
  • 18. PayPal Access: Forwarding for Login <?php require_once "common.php"; $auth_url = sprintf( "%s?scope=%s&response_type=code&redirect_uri=%s&client_id=%s", AUTHORIZATION_ENDPOINT, urlencode("https://identity.x.com/xidentity/resources/profile/me"), urlencode(CALLBACK_URL), KEY); //forward user to PayPal auth page header("Location: $auth_url"); ?>
  • 19. PayPal Access: Obtaining the Access Token <?php require_once "common.php"; //capture code from auth $code = $_GET["code"]; //construct POST object for access token fetch request $postvals = sprintf("client_id=%s&client_secret=%s&grant_type=authorization_code& code=%s&redirect_uri=%s", KEY, SECRET, $code, urlencode(CALLBACK_URL)); //get JSON access token object $token = json_decode(run_curl(ACCESS_TOKEN_ENDPOINT, 'POST', $postvals));
  • 20. PayPal Access: Using the Access Token //construct URI to fetch profile information for current user $profile_url = sprintf("%s?oauth_token=%s", PROFILE_ENDPOINT, $token- >access_token); //fetch profile of current user $profile = run_curl($profile_url); var_dump($profile); ?>
  • 21. PayPal Access: Using the Raw Data http://www.x.com http://slideshare.net/jcleblanc
  • 22. PayPal Access: Using the Raw Data http://www.x.com http://slideshare.net/jcleblanc
  • 23. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
  • 24. Social Grouping: It’s Not A New Thing… http://www.x.com http://slideshare.net/jcleblanc
  • 25. 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 http://www.x.com http://slideshare.net/jcleblanc
  • 26. Social Grouping: The Real Life Social Graph http://www.x.com http://slideshare.net/jcleblanc
  • 27. Social Grouping: The Online Social Graph http://www.x.com http://slideshare.net/jcleblanc
  • 28. Social Grouping: Group Types Follower Type Connection Type Group Type http://www.x.com http://slideshare.net/jcleblanc
  • 29. Social Grouping: Data Miners are Rock Stars http://www.x.com http://slideshare.net/jcleblanc
  • 30. Social Grouping: Group Programming Primer Program Overview • Use all URLs from the previous program. • Obtain content category for page. • Categorize user interest. http://www.x.com http://slideshare.net/jcleblanc
  • 31. Social Grouping: Group Programming Primer Step 1: Obtain Website Content http://www.x.com http://slideshare.net/jcleblanc
  • 32. Social Grouping: Group Programming Primer Step 2: Perform Keyword Density Search http://www.x.com http://slideshare.net/jcleblanc
  • 33. Social Grouping: Group Programming Primer Step 3: Weight Keywords http://www.x.com http://slideshare.net/jcleblanc
  • 34. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
  • 35. Experimental Identity: WebFinger http://www.x.com http://slideshare.net/jcleblanc
  • 36. Experimental Identity: WebFinger Step 1: Perform Discovery curl https://gmail.com/.well-known/host-meta http://www.x.com http://slideshare.net/jcleblanc
  • 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> http://www.x.com http://slideshare.net/jcleblanc
  • 38. Experimental Identity: WebFinger Step 2: Collect User Data curl http://www.google.com/s2/webfinger/?q=nakedt echnologist@gmail.com http://www.x.com http://slideshare.net/jcleblanc
  • 39. Experimental Identity: WebFinger User Profile http://www.google.com/profiles/nakedtechnologist Portable Contacts http://www- opensocial.googleusercontent.com/api/people/118167 121283215553793/ http://www.x.com http://slideshare.net/jcleblanc
  • 40. Experimental Identity: WebFinger profileUrl name id formatted thumbnail url family name urls given name photos display name http://www.x.com http://slideshare.net/jcleblanc
  • 41. Experimental Identity: BrowserID http://www.x.com http://slideshare.net/jcleblanc
  • 42. Experimental 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> http://www.x.com http://slideshare.net/jcleblanc
  • 43. Experimental 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); } }); }); http://www.x.com http://slideshare.net/jcleblanc
  • 44. Experimental Identity: BrowserID Results { audience: "jcleblanc.com", email: "nakedtechnologist@gmail.com", expires: 1320081400987, issuer: "browserid.org", status: "okay" } http://www.x.com http://slideshare.net/jcleblanc
  • 45. What We’re Going to Cover The Foundations of Human Identity Tribalism and Social Grouping Experimental Identity Methods The Big Bag of Social Identity Fail http://www.x.com http://slideshare.net/jcleblanc
  • 46. 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) http://www.x.com http://slideshare.net/jcleblanc
  • 47. Social Identity Fail: Privacy Concerns When Making Things Easy Impairs Privacy “Path Uploads Your Entire iPhone Contact List By Default” --Mark Hachman (PCMag) http://www.x.com http://slideshare.net/jcleblanc
  • 48. 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) http://www.x.com http://slideshare.net/jcleblanc
  • 49. Identity Programming Core Concepts Identity is more than just a login Have a social conscience Find the tool that: – Has the raw data that you need – Works with your business http://www.x.com http://slideshare.net/jcleblanc
  • 50. Thanks! Any Questions? http://slidesha.re/convergese_id Jonathan LeBlanc Developer Evangelist: X.commerce Twitter: @jcleblanc E-Mail: jleblanc@x.com Github: github.com/jcleblanc

Notes de l'éditeur

  1. Concepts of bound vs unbound scopes
  2. Suck in web content via curlConvert to valid XML document (do not use as text and run Regex against it)
  3. Search through text on the page and store words + how often they are usedStrip out common words
  4. Use meta description and keywords to match against your keyword density searchUse Open Graph protocol tags to find more keywords and page content
  5. http://gizmodo.com/5470696/fck-you-google
  6. http://www.pcmag.com/article2/0,2817,2399970,00.asp
  7. 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