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 "IdAS Registries Proposal"

(Objects)
(Definitions)
Line 6: Line 6:
 
===Definitions===
 
===Definitions===
 
* a ContextId (aka "cid") an URI identifier of a Context. It may be an XRI. The intent is that cids are globally unique. In practice they may not be.
 
* a ContextId (aka "cid") an URI identifier of a Context. It may be an XRI. The intent is that cids are globally unique. In practice they may not be.
* IdAS is an attribute service aggregator/abstraction. It manages a set of statically or dynamically installed Context Providers.
+
* IdAS is an attribute service aggregator/abstraction. It manages a set of statically or dynamically installed [[Context Provider]] plugins
 
* A Context Provider (analogous to a JDBC driver) acts as a factory for IContexts
 
* A Context Provider (analogous to a JDBC driver) acts as a factory for IContexts
  

Revision as of 00:29, 9 February 2007

Introduction

This document describes a new approach to handling IdAS context provider configuration issues. It builds on work discussed at the F2F in Provo Jan 2007. This document works top down from use cases.

It proposes a design that divides the registry work into two completely separate registries. One ("IdASRegistry") is a registry of context providers. The other ("IdASContextRegistry") manages the binding between a ContextId and a (ContextProvider, config-data) pair.

Definitions

  • a ContextId (aka "cid") an URI identifier of a Context. It may be an XRI. The intent is that cids are globally unique. In practice they may not be.
  • IdAS is an attribute service aggregator/abstraction. It manages a set of statically or dynamically installed Context Provider plugins
  • A Context Provider (analogous to a JDBC driver) acts as a factory for IContexts

Use Cases

  1. create a new (IContext, cid) combination
  2. connect to existing cid (returns IContext)
  3. open an IContext
  4. close an IContext
  5. destroy a cid

Non-Use Case

  1. associate existing IContext with cid

Terms Used

  • cid: short for "ContextId" (an identifier)
  • factoryConfig: factory-specific configuration data required to initialize the IContextFactory itself
  • contextConfig: factory-specific configuration data required to connect to, open, etc. an IContext
  • cpid: id of a context provider (IContextFactory class name ? Eclipse extension id ?)
  • IContextFactory: implemented by a context provider plugin
  • IContext: a Context instance implemented by a context provider plugin

Services

  • IdAS
  • IdASContextRegistry --registry of ContextIds
  • IdASRegistry --registry of available cps
  • cp --a context provider

IdAS

cid create(cpid, config)
IContext connect(cid)
destroy(cid)


IContextFactory

cid create(config)
void destroy(config)
IContext connect(cid)

IContext

SubjectId open(callbackHandler) {
 // We've discussed moving away from 'getOpenPolicy' and passing into open here
 // a Digital Identity blob. So I've put this in here. But this issue 
 // is unrelated to the registry design
}
void close()
...lots of other methods

IContextFactory

IContext createContext(config)

IdASContextRegistry

void register(cid, cp, config)
void unregister(cid)
cpid&config resolve(cid)

IdASRegistry

IdASRegistry becomes much simpler than the currently implemented one

cf getContextFactory(cpid)
void registerContextFactory(cf)
void removeContextFactory(cf)

IdAS Implementation

cid create(cpid, config)
{
 cf = IdASRegistry.getContextFactory(cpid); 
 cid = cf.createContext(config);
 IdASContextRegistry.register(cid, cpid, config); 
 return cid;
}
IContext connect(cid) 
{
 cpid+config = IdASContextRegistry.resolve(cid);
 cp = IdASRegistry.get(cpid);
 IContext = cp.connect(config);
}
void destroy(cid)
{
 cpid+config = IdASContextRegistry.resolve(cid); 
 cp = IdASRegistry.get(cpid);
 cp.destroy(config)  
}

IdASContextRegistry Implementation

cpid&config resolve(cid)
{
 // if cid is an XRI, resolve it to a URL
 // HTTP get the XRDS document
 // lookup the "Higgins IdAS Context Provider" service type with it
 // return cpid&config
 // 
 // The code to do this is called an XRI Resolver. It already 
 // exists in a Java implementation maintained by OpenXRI
 // that is available at SourceForge here
 // The community that works on this is jazzed about helping the 
 // Higgins project implement this.
 //
}
void register(cid, cpid, config)
{
 // if cid is an XRI, resolve it to a URL
 // HTTP get the XRDS document at URL
 // find the "Higgins IdAS Context Provider" service type within it
 // add cpid and config as "service metadata"
 // HTTP put updated XRDS document
 // 
 // The code to do this at a "community" level is something that
 // the XRI TC members have been working on and could get 
 // done for our purposes very quickly.
}

See Also

  • <need to put links here to relevant XRI documents>
  • Higgins Home

Back to the top