Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "PDS Architecture"

(PDS Agent)
(HBX)
 
(243 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{#eclipseproject:technology.higgins|eclipse_custom_style.css}}
+
{{#eclipseproject:technology.higgins|eclipse_custom_style.css}} [[Image:Higgins.funnell.PNG|right]]  
[[Image:Higgins.funnell.PNG|right]]
+
__NOTOC__
+
  
This page describes the Personal Data Store (PDS), a new work area under development for Higgins 2.0. It also includes a ''Building Blocks'' section describing some additional components.
+
This document describes the top level Higgins 2.0 PDS components under active development. Here are the bugzilla component names:
 +
* H2-Client
 +
* H2-HBX
 +
* H2-PDS
 +
* H2-PDS Support
 +
* H2-ADS
 +
* H2-Data Model
  
== Intro ==
+
== Front End  ==
  
The PDS is a combination of a PDS Agent and a PDS Vault.  
+
There are two front end components: a web client, and a browser extension.  
  
=== PDS Agent===
+
[[Image:Higgins client 2.0.222.png|center]]
+
Gives you control over your own information. It:
+
* Shares information about you to those with whom you wish it to be shared
+
* Allows you to be discoverable by others that meet criteria you specify
+
* Provides a virtual integration of your personal information that is currently scattered across hundreds of database silos
+
* Lets you define and manage a set of ''personas'' (e.g. Work, Home & Friends, Citizen, Health, Anonymous) over which you have complete control.
+
* Links information from your personas to accounts (profiles) that you have at services providers, websites, social networking sites, etc. and over which you share joint control and rights
+
* Links information from your personas with the personas of your friend's and colleague's PDSes
+
* Provides a run-time environment for apps that run within the PDS agent itself
+
  
===PDS Vault===
+
=== Client ===
* Provides an encrypted "lock box" in the cloud
+
* Data in the PDS vault cannot be read by the PDS vault's operator
+
* Backs up personal data stored on your computers and mobile devices
+
* Synchronizes personal data to other devices and computers owned by the person using a variety of network protocols.
+
* Is used by the PDS agent to store certain kinds of information about you
+
  
[[Image:Tla 2.0.18.png|center]]
+
The client is written in HTML and JavaScript and runs in any desktop browser (e.g. IE, FF, Safari, Chrome). In the future we also plan to make it display well on the limited screen size of smartphone mobile browser (e.g. iPhone, Android, etc.).
  
As shown in the top-left in the diagram above, we are also developing Windows, Mac and mobile clients for the Higgins PDS. These clients have two advantages over the PDS agent. First, data stored on these devices is entirely under your control without the need to rely on third party hosted services. Second the client is closely integrated with the browser and other local apps. This allows the client to capture information about you as you browse and can augment your web experience through web augmentation (overlaying context-specific information within your browser) as well as through automatic form filling (e.g. filling in your passwords).
+
* [[Org.eclipse.higgins.js.pds.client | .js.pds.client]]
  
Information from a wide variety of data sources such as the social network, telco and health data sources shown above are virtually integrated by the PDS Agent and presented in a "dashboard" application.
+
=== HBX ===
  
== Data Representation  ==
+
The Higgins browser extension makes possible functionality like browser-side integration with other web APIs and sites, scraping and form filling.
  
Within a PDS a single individual is represented as a set of containers called Contexts each of which holds a digital identity called a Person. Each person instance has a set of attributes and values. Thus one individual (natural person, data subject) is represented as multiple Person entities each in its own context-container.  
+
* .chrome.bx - Chrome-only Higgins Browser Extension
 +
* .js.pds.cde - Connection Data Engine 1. Loads CDE1-compatible JSON Scripts (See [[App-data vocabulary]]) from templates and uses them to implement auto-login, auto-registration, form filling, etc.
 +
* [[org.eclipse.higgins.js.pds.cde2|.js.pds.cde2]] - Connection Data Engine 2. Loads CDE2-compatible JSON Scripts (See [[App-data vocabulary]]) from templates and uses them to implement auto-login, auto-registration, form filling, etc.
 +
* .js.pds.connector.common
  
[[Image:Tla intro 2.0.108.png|center]]
+
====Functionality====
  
The data in these [[Context]]s adheres to the Higgins [[Persona Data Model 2.0]], which can be used for storing arbitrary (identity and social networking) data. [[UDI]] references are used for representing links between [[Context]]s, both inside the [[Personal_Data_Store_2.0]] and to external data stores.
+
=====Browser interactions=====
 +
When the user's browser lands on a new webpage it:
 +
* Determines if the current PDS user is currently logged in.
 +
** This requires there be a template for the current site (domain) and that it contains an IsLoggedIn script
 +
** It is possible that a different PDS user (not the current PDS user) is currently logged in.
 +
* If the user is not logged in then
 +
** It automatically logs the user in (or should it just auto-fill in the userid/password and wait for the user to click?)
 +
* Looks for every appropriate form on the page
 +
** Automatically fills in each form as best it can  -- this requires there be a template for the current site (domain) and that it contains a Fill script for this form (is there one fill script container with lots of per-form-submit-URL scripts? Or are there lots of Fill scripts each with an for-this-form-submit-URL attribute?
 +
* Waits for the user to submit a form (including a login form with or without a custom template?)
 +
** Scrapes the form submit data and writes it into the PDS. If it is a login form then it writes into the proxy object, else the corresponding context
  
== Components ==
+
=====Web client interactions=====
 +
When the user opens a connection editor page (e.g. to edit the nytimes.com connection):
 +
* The BX immediately starts a background process to login and scrape the latest data values from the site.
 +
** This is necessary because the user may have gone to the site directly (not using the PDS) and updated data values. A progress bar that shows this background process.
 +
* If the user edits an attribute it writes the updated attribute value to the site.
 +
** If this "write" operation happens before the background sync completes, there is some possibility for sync collisions and and confusion.
  
=== PDS Agent ===
+
== Back End Components ==
  
*An evolution of the [[Cloud Selector 1.1]] from Higgins 1.1 with much broader functionality.
+
There are three back end components mostly written in Java and running in the cloud (e.g. Amazon AWS):
  
=== PDS Vault  ===
+
*PDS  
 +
*PDS Support
 +
*ADS
  
*[[PDS Vault 2.0]] - secure, encrypted storage
+
[[Image:Higgins server 2.0.230.png|center]]  
  
=== PDS Client  ===
+
===PDS===
 +
PDS Subcomponents:
  
The [[PDS Client 2.0]] is a library used to access the [[Personal_Data_Store_2.0]].  
+
*.pds.usermanager.ws - simple web service to manage user accounts, change password, etc.
  
=== Authentication (AuthN) Service  ===
+
===PDS Support===
 +
PDS Support Subcomponents:
  
The [[IdAS Proxy Service 2.0]] and [[Attribute Service 2.0]] require access tokens minted by the [[Authentication Service 2.0]]. Eventually the [[I-Card Service]] and [[CardSync Service]] will also rely on this external authN service.
+
*.pds.client - wrapper around Open Anzo java client
  
=== Authorization Manager  ===
+
===Attribute Data Storage===
 +
ADS Subcomponents:
  
*Authorization Manager (planned) gives the user control over the flows of data from a managed relationship card provider to a relying party. We plan to use/adapt Kantara UMA protocols.
+
*PLANNED: .ads.ld - Linked Data endpoint
  
== Building Blocks ==
+
== Data Model  ==
This section describes the data related services, java frameworks and data models that are used by the personal data store service.
+
  
===Data Models===
+
Data attributes whether created by the user or imported from an external service are stored in a common data model. This allows them to be consistently displayed to, and in some cases edited by, the user irrespective of its original source. We call this the [[Persona Data Model 2.0]].
Data models used in Higgins code and services:
+
  
[[Image:Higgins data models.png|center]]
+
[[Category:Higgins 2]]
 
+
* [[Persona Data Model 2.0]]
+
* [[Higgins Data Model 2.0]]
+
* [[Context Data Model 2.0]]
+
 
+
===IdAS Solution ===
+
The IdAS solution is a testbed for exercising the IdAS Java framework.
+
* Higgins 1.1: See [[Higgins_1.1_Plan#IdAS_Solution_1.1]]
+
* Higgins 1.0: [[IdAS Solution 1.0]]: a basic configuration of the [[Identity Attribute Service 1.0]] (IdAS). IdAS is a java framework that provides a common interface to identity, profile, and relationship data from external data sources (e.g. websites, databases, directories).
+
 
+
=== XDI4J ===
+
XDI4J is a java library for working with XDI.
+
* Higgins 1.1: [[XDI4j 1.1]]
+

Latest revision as of 12:12, 4 January 2012

{{#eclipseproject:technology.higgins|eclipse_custom_style.css}}
Higgins.funnell.PNG

This document describes the top level Higgins 2.0 PDS components under active development. Here are the bugzilla component names:

  • H2-Client
  • H2-HBX
  • H2-PDS
  • H2-PDS Support
  • H2-ADS
  • H2-Data Model

Front End

There are two front end components: a web client, and a browser extension.

Higgins client 2.0.222.png

Client

The client is written in HTML and JavaScript and runs in any desktop browser (e.g. IE, FF, Safari, Chrome). In the future we also plan to make it display well on the limited screen size of smartphone mobile browser (e.g. iPhone, Android, etc.).

HBX

The Higgins browser extension makes possible functionality like browser-side integration with other web APIs and sites, scraping and form filling.

  • .chrome.bx - Chrome-only Higgins Browser Extension
  • .js.pds.cde - Connection Data Engine 1. Loads CDE1-compatible JSON Scripts (See App-data vocabulary) from templates and uses them to implement auto-login, auto-registration, form filling, etc.
  • .js.pds.cde2 - Connection Data Engine 2. Loads CDE2-compatible JSON Scripts (See App-data vocabulary) from templates and uses them to implement auto-login, auto-registration, form filling, etc.
  • .js.pds.connector.common

Functionality

Browser interactions

When the user's browser lands on a new webpage it:

  • Determines if the current PDS user is currently logged in.
    • This requires there be a template for the current site (domain) and that it contains an IsLoggedIn script
    • It is possible that a different PDS user (not the current PDS user) is currently logged in.
  • If the user is not logged in then
    • It automatically logs the user in (or should it just auto-fill in the userid/password and wait for the user to click?)
  • Looks for every appropriate form on the page
    • Automatically fills in each form as best it can -- this requires there be a template for the current site (domain) and that it contains a Fill script for this form (is there one fill script container with lots of per-form-submit-URL scripts? Or are there lots of Fill scripts each with an for-this-form-submit-URL attribute?
  • Waits for the user to submit a form (including a login form with or without a custom template?)
    • Scrapes the form submit data and writes it into the PDS. If it is a login form then it writes into the proxy object, else the corresponding context
Web client interactions

When the user opens a connection editor page (e.g. to edit the nytimes.com connection):

  • The BX immediately starts a background process to login and scrape the latest data values from the site.
    • This is necessary because the user may have gone to the site directly (not using the PDS) and updated data values. A progress bar that shows this background process.
  • If the user edits an attribute it writes the updated attribute value to the site.
    • If this "write" operation happens before the background sync completes, there is some possibility for sync collisions and and confusion.

Back End Components

There are three back end components mostly written in Java and running in the cloud (e.g. Amazon AWS):

  • PDS
  • PDS Support
  • ADS
Higgins server 2.0.230.png

PDS

PDS Subcomponents:

  • .pds.usermanager.ws - simple web service to manage user accounts, change password, etc.

PDS Support

PDS Support Subcomponents:

  • .pds.client - wrapper around Open Anzo java client

Attribute Data Storage

ADS Subcomponents:

  • PLANNED: .ads.ld - Linked Data endpoint

Data Model

Data attributes whether created by the user or imported from an external service are stored in a common data model. This allows them to be consistently displayed to, and in some cases edited by, the user irrespective of its original source. We call this the Persona Data Model 2.0.

Back to the top