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"

(Personal Data Store)
(HBX)
 
(303 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__
+
==Higgins 1.0 and 1.1 services==
+
  
===Web Services===
+
This document describes the top level Higgins 2.0 PDS components under active development. Here are the bugzilla component names:
;I-Card Manager: Thin client selectors use the [[I-Card Manager]] Google GWT-based app to provide a web interface to view, update and manage your cards hosted on the I-Card Service.
+
* H2-Client
;I-Card Service: Some selectors are designed as "thin clients" that only implement the user interface portion and rely on a hosted [[I-Card Service 1.1]] for core functionality.
+
* H2-HBX
;[[CardSync Service 1.1]]: A specialized bi-directional, synchronizing XML endpoint for synchronizing i-card data stored on a co-resident [[I-Card Service 1.1]]
+
* H2-PDS
 +
* H2-PDS Support
 +
* H2-ADS
 +
* H2-Data Model
  
===Web Apps===
+
== Front End  ==
;[[Cloud Selector 1.1]]: Makes i-cards available as OpenIDs. It reads card data from the [[I-Card Service]], so no client software is required.
+
  
==Higgins 2.0 PDS ==
+
There are two front end components: a web client, and a browser extension.  
Under development for Higgins 2.0
+
  
[[Image:Higgins pds (2).png]]
+
[[Image:Higgins client 2.0.222.png|center]]  
  
 +
=== Client ===
  
===Personal Data Store ===
+
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.).
A [[Personal Data Store 2.0]] is a web service that stores personal data, that makes it available to apps on a user-permissioned basis. It can be accessed by sending [[XDI]] messages to its endpoint optionally using the [[PDS Client]]
+
  
===PDS Client ===
+
* [[Org.eclipse.higgins.js.pds.client | .js.pds.client]]
The PDS Client has no UI, but performs a number of functions:
+
* The “main event” is support for apps that wish to read attributes from the PDS by calling methods like “getAttribute()”. The PDS client also maintains (also in the PDS) the user’s permissions–the decisions that the user has make as to who (what app or relying party) has access to what attributes. 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.  
+
* The PDS client maintains a local copy of some or all of the person’s personal data stored in the remote PDS
+
* It 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.  
+
* It can be configured to encrypt attribute values before they are sent over the wire (e.g. in XDI messages) to the remote PDS
+
* It contains a local Security Token Service (STS) that allows it to create and sign SAML (for example) tokens for self-asserted attributes.
+
* It contains an STS client to support remote IdP/STSes managed by external parties (e.g. to support managed i-cards).
+
* It performs cross context schema mapping. The PDS Client 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).
+
  
===Authentication (AuthN) Service ===
+
=== HBX ===
The [[IdAS Proxy Service 1.1]] and [[Attribute Service 1.1]] 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.
+
  
===Authorization Manager ===
+
The Higgins browser extension makes possible functionality like browser-side integration with other web APIs and sites, scraping and form filling.
* 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.
+
  
===Web Portal ===
+
* .chrome.bx - Chrome-only Higgins Browser Extension
* We plan to develop a Web Portal--an evolution of the [[Cloud Selector 1.1]] from Higgins 1.1 with broader functionality.
+
* .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
  
== Misc. Building Blocks ==
+
====Functionality====
This section describes the data related services, java frameworks and data models that are used by the personal data agent services.
+
  
===Data Models===
+
=====Browser interactions=====
* [[Data Models]] used in Higgins code and services
+
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
  
===IdAS Solution ===
+
=====Web client interactions=====
The IdAS solution is a testbed for exercising the IdAS Java framework.
+
When the user opens a connection editor page (e.g. to edit the nytimes.com connection):
* Higgins 1.1: See [[Higgins_1.1_Plan#IdAS_Solution_1.1]]
+
* The BX immediately starts a background process to login and scrape the latest data values from the site.  
* 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).
+
** 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.
  
=== XDI4J ===
+
== Back End Components  ==
XDI4J is a java library for working with XDI.
+
 
* Higgins 1.1: [[XDI4j 1.1]]
+
There are three back end components mostly written in Java and running in the cloud (e.g. Amazon AWS):
 +
 
 +
*PDS
 +
*PDS Support
 +
*ADS
 +
 
 +
[[Image:Higgins server 2.0.230.png|center]]
 +
 
 +
===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]].
 +
 
 +
[[Category:Higgins 2]]

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