|
|
(45 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | == Introduction == | + | [[Image:Higgins_logo_76Wx100H.jpg|right]] |
− | This page describes and defines a Higgins [[ContextId]]. | + | == Version == |
− | See also: [[Context Discovery]] and [[Context Discovery Components]].
| + | This page describes the concept of a [[ContextId]] as used in [[Context Data Model 2.0]]. |
| | | |
| == Definition == | | == Definition == |
− | A '''ContextId''' is a URI or XRI that identifies one instance of a [[Context]].
| + | * An identifier of a [[Context]] |
− | * A [[ContextId]] MUST conform to the ABNF defined below. | + | * A ''Context UDI'' as defined in [http://www.azigo.com/udi/udi-syntax.html UDI Syntax] |
− | * A [[ContextId]] must directly or indirectly (e.g. by resolution) provide sufficient information to both identify and open a [[Context]]. See the ''Context Discovery with a ContextId'' heading below.
| + | |
− | * Two different [[ContextId]]s may refer to the same [[Context]].
| + | |
− | * If two [[ContextId]]s are equal, they refer to the same underlying [[Context]] dataset, although not necessarily the same [[Context]] "container" instance. This means that, as a requester of information, different [[Digital Identity|Digital Identities]] may see different subsets of the [[Context]] based on the authorization passed in during authentication. A given [[ContextId]] may be used against multiple [[Context Provider]]s to produce the same [[Context]] (although, as mentioned, different [[Context]] instances).
| + | |
− | * The [[Identity Attribute Service (IdAS)]] can be used as a service to access a [[Context]] given a [[ContextId]]
| + | |
| | | |
− | == Syntax ==
| + | [[Category:Context Data Model 2.0]] |
− | The following [http://en.wikipedia.org/wiki/Augmented_Backus-Naur_form ABNF] defines a Higgins [[ContextId]]. All rules not defined in this ABNF are defined in the [http://wiki.oasis-open.org/xri/XriCd02/Xri2dot0Abnf ABNF for XRI 2.0] (which includes the IRI ABNF from [http://www.ietf.org/rfc/rfc3987.txt RFC 3987]) except:
| + | |
− | * '''xri2-authority''' and '''xri2-subseg''' are the '''xri-authority''' and '''xri-subset''' rules defined in the [http://wiki.oasis-open.org/xri/XriCd02/Xri2dot0Abnf ABNF for XRI 2.0]
| + | |
− | * '''xri3-authority''' and '''xri3-subseg''' are the '''xri-authority''' and '''xri-subset''' rules defined in the [http://wiki.oasis-open.org/xri/XriThree/SyntaxAbnf proposed ABNF for XRI 3.0]
| + | |
− | | + | |
− | <pre>
| + | |
− | contextId = contextURI / contextXRI
| + | |
− | | + | |
− | contextURI = contextfileURI / contexthttpURI
| + | |
− | contextfileURI = [ "file://" ] ipath-abempty descriptor-ext
| + | |
− | descriptor-ext = ".xrds" / ".xdi" ;see note 1
| + | |
− | contexthttpURI = ( "http://" / "https://" ) iauthority
| + | |
− | ipath-abempty [ descriptor-ext ] [ "?" iquery ]
| + | |
− | | + | |
− | contextXRI = contextQXRI / ;see note 2
| + | |
− | contextHXRI ;see note 3
| + | |
− | contextQXRI = ( [ "xri://" ] xri2-contextQXRI ) /
| + | |
− | ( [ "xri:" ] xri3-contextQXRI )
| + | |
− | xri2-contextQXRI = xri2-authority [ "/($context)" *xri2-subseg ]
| + | |
− | xri3-contextQXRI = xri3-authority [ "/$context" *xri3-subseg ]
| + | |
− | contextHXRI = proxy-URI "/" (xri2-contextQXRI / xri3-contextQXRI )
| + | |
− | proxy-URI = ( "http://" / "https://" ) proxy-reg-name
| + | |
− | proxy-reg-name = "xri." ireg-name
| + | |
− | </pre>
| + | |
− | | + | |
− | Notes:
| + | |
− | | + | |
− | # ".xrds" and ".xdi" are formats designed expressly for discovery and description of resources using HTTP(S) URIs and/or XRIs. XRDS format is defined by [http://www.oasis-open.org/committees/download.php/24286/xri-resolution-v2.0-wd-11-ed-02.doc XRI Resolution Working 2.0]. XDI format is being defined by the [http://www.oasis-open.org/committees/xdi OASIS XDI Technical Committee]. Other resource description file types can be supported by extending this ABNF rule.
| + | |
− | # QXRI (Query XRI) is an XRI in URI-normal form without the "xri://" prefix (XRI 2.0) or "xri:" prefix (XRI 3.0). See Section 11.2 of [http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.pdf XRI Resolution 2.0].
| + | |
− | # HXRI (HTTP(S) XRI) is the format for encapsulating an XRI within an HTTP(S) URI for purposes of resolution by an XRI proxy resolver. See Section 6 of [http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.pdf XRI Resolution 2.0].
| + | |
− | | + | |
− | == Examples ==
| + | |
− | | + | |
− | === contextURI ===
| + | |
− | | + | |
− | ==== contextfileURI ====
| + | |
− | | + | |
− | file://system/config/openid.xrds
| + | |
− | file://system/config/openid.xdi
| + | |
− | file://system/config/ldap.xrds
| + | |
− | file://system/config/ldap.xdi
| + | |
− | | + | |
− | ==== contexthttpURI ====
| + | |
− | | + | |
− | http://example.com
| + | |
− | https://example.com
| + | |
− | http://example.com
| + | |
− | https://example.com
| + | |
− | http://example.com/higgins/openid.xrds
| + | |
− | https://example.com/higgins/openid.xdi
| + | |
− | http://example.com/higgins/ldap.xrds
| + | |
− | https://example.com/higgins/ldap.xdi
| + | |
− | | + | |
− | === ContextQXRI ===
| + | |
− | | + | |
− | ==== contextQXRI – XRI 2.0 Form ====
| + | |
− | | + | |
− | =drummond
| + | |
− | =drummond/($context)
| + | |
− | =drummond/($context)*($openid)
| + | |
− | =drummond/($context)*($ldap)
| + | |
− | =!F83.62B1.44F.2813
| + | |
− | =!F83.62B1.44F.2813/($context)*($openid)
| + | |
− | =!F83.62B1.44F.2813/($context)*($ldap)
| + | |
− | =drummond*mom
| + | |
− | =drummond*mom/($context)*($openid)
| + | |
− | =drummond*mom/($context)*($ldap)
| + | |
− | @example
| + | |
− | @example/($context)
| + | |
− | @example/($context)*($openid)
| + | |
− | @example/($context)*($ldap)
| + | |
− | @free*example
| + | |
− | @free*example/($context)*($openid)
| + | |
− | @free*example/($context)*($ldap)
| + | |
− | | + | |
− | ==== contextQXRI – Proposed XRI 3.0 Form ====
| + | |
− | | + | |
− | =drummond
| + | |
− | =drummond/$context
| + | |
− | =drummond/$context$openid
| + | |
− | =drummond/$context$ldap
| + | |
− | =!F83.62B1.44F.2813
| + | |
− | =!F83.62B1.44F.2813/$context$openid
| + | |
− | =!F83.62B1.44F.2813/$context$$ldap
| + | |
− | =drummond*mom
| + | |
− | =drummond*mom/$context$openid
| + | |
− | =drummond*mom/$context$ldap
| + | |
− | @example
| + | |
− | @example/$context
| + | |
− | @example/$context$openid
| + | |
− | @example/$context$ldap
| + | |
− | @free*example
| + | |
− | @free*example/$context$openid
| + | |
− | @free*example/$context$ldap
| + | |
− | | + | |
− | === contextHXRI ===
| + | |
− | A contextHXRI is a ContextQXRI that uses an HXRI proxy resolver prefix. "xri.net" is a public HXRI proxy resolver operated by XDI.org. All others are examples.
| + | |
− | | + | |
− | ==== contextHXRI – XRI 2.0 Form ====
| + | |
− | | + | |
− | http://xri.net/=drummond
| + | |
− | http://xri.net/=drummond/($context)
| + | |
− | https://xri.net/=drummond/($context)*($openid)
| + | |
− | https://xri.net/=drummond*mom/($context)*($openid)
| + | |
− | http://xri.example.com/@example/($context)*($openid)
| + | |
− | http://xri.example.com/@free*example/($context)*($openid)
| + | |
− | https://xri.example.org/@1000.a1b2.c3d4.9999!1234/($context)*($ldap)
| + | |
− | | + | |
− | ==== contextHXRI – Proposed XRI 3.0 Form ====
| + | |
− | | + | |
− | http://xri.net/=drummond
| + | |
− | http://xri.net/=drummond/$context
| + | |
− | https://xri.net/=drummond/$context$openid
| + | |
− | https://xri.net/=drummond*mom/$context$openid
| + | |
− | http://xri.example.com/@example/$context$openid
| + | |
− | http://xri.example.com/@example*free/$context$openid
| + | |
− | https://xri.example.org/@1000.a1b2.c3d4.9999!1234/$context$ldap
| + | |
− | | + | |
− | == Context Discovery Rules ==
| + | |
− | A key property of a [[ContextId]] is that it can be resolved into the metadata necessary open a [[Context]]. The complete process for doing this is described in [[Context Discovery]]. Following are the discovery rules that apply to each form of ContextId.
| + | |
− | | + | |
− | === contextURI Discovery ===
| + | |
− | Since URIs do not offer the structured identifier features of XRIs, they must resolve directly to an XRDS or XDI document containing the Higgins context configuration metadata for a specific context type.
| + | |
− | | + | |
− | ==== contextfileURI ====
| + | |
− | # Open the identified file.
| + | |
− | # For an XRDS file, select the highest priority service endpoint that conforms to the [[Higgins XRDS Service Endpoint]] requirements.
| + | |
− | # For an XDI X3 file, parse the Higgins context configuration metadata from the X3 document as described in [[Higgins XDI Context Reference]].
| + | |
− | | + | |
− | ==== contexthttpURI ====
| + | |
− | # Resolve the URI to a discovery document as specified in Section 6 of [http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.pdf XRI Resolution 2.0].
| + | |
− | ## If the contexthttpURI ends in the context descriptor extension '''.xrds''' for an XRDS document, use the MIME type '''application/xrds+xml'''.
| + | |
− | ## If the contexthttpURI ends in the context descriptor extension '''.xdi''' for an XDI document, use the MIME type '''text/x3'''.
| + | |
− | ## If the contexthttpURI does not end in a context descriptor extension, use either or both of these MIME types as preferred in content negotiation with the server.
| + | |
− | # If the MIME type of the discovery document is '''application/xrds+xml''', select the highest priority service endpoint that conforms to the [[Higgins XRDS Service Endpoint]] requirements.
| + | |
− | # If the MIME type is '''text/x3''', parse the Higgins context configuration metadata from the X3 document as described in [[Higgins XDI Context Reference]].
| + | |
− | | + | |
− | === contextXRI Discovery ===
| + | |
− | Since XRIs are abstract structured identifiers intended designed explicitly for resource discovery and description, they offer more flexiblity in the discovery process.
| + | |
− | | + | |
− | ==== Using XRDS ====
| + | |
− | # Resolve the authority component of the XRI as specified in [http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.pdf XRI Resolution 2.0]. Trusted resolution is RECOMMENDED.
| + | |
− | # From this XRDS document, select the Higgins service endpoint as defined in Section 13 of [http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.pdf XRI Resolution 2.0]. Note that this provides a number of ways for ContextXRI authors to control service endpoint selection. Using the path component of the XRI to match a [[Higgins XRDS Service Endpoint]] is RECOMMENDED.
| + | |
− | # Parse the Higgins context metadata as defined in [[Higgins XRDS Service Endpoint]].
| + | |
− | | + | |
− | ==== Using XDI ====
| + | |
− | # Resolution of the authority component of the XRI may use either XRDS resolution or XDI context discovery.
| + | |
− | ## For XRDS resolution, follow the same steps as described above, except that in the final XRDS document, the highest priority SEP of type '''xri://$xdi''' MUST be selected, and an XDI X3 document MUST be requested from that service endpoint URI.
| + | |
− | ## For XDI context discovery, resolve the authority component of the XRI as specified in the XDI Contexts section of [http://wiki.oasis-open.org/xdi/XdiRdfModel XDI RDF Model]] document.
| + | |
− | # In both cases, from the final XDI document, parse the XDI context description as defined in [[Higgins XDI Context Reference]].
| + | |
− | | + | |
− | == Relationship to OpenID ==
| + | |
− | Any OpenID 2.0 identifier as defined by [http://openid.net/specs/openid-authentication-2_0.html OpenID Authentication 2.0] may function as a Higgins [[ContextId]]. OpenID 2.0 supports both URLs and XRIs. All of the examples of contexthttpURI and contextXRI above are valid OpenID 2.0 identifiers.
| + | |
− | | + | |
− | The only caveat to keep in mind is that if an OpenID 2.0 URL is used as a Higgins [[ContextId]], the XRDS or XDI document to which it resolves must EITHER contain:
| + | |
− | * Only one XRDS service endpoint or XDI context reference describing the target [[Context]], OR
| + | |
− | * The consuming application must know how to select the XRDS service endpoint or XDI context reference it requires (i.e., it must know which Higgins [[Context Type]] it is seeking).
| + | |
− | | + | |
− | == Open Issues ==
| + | |
− | # Should the contextId ABNF support IRI (Internationalized Resource Identifiers) and not just URIs? Note that the ABNF above uses IRI rules; this needs to be changed if only URIs will be supported.
| + | |
− | | + | |
− | == See Also ==
| + | |
− | * [[SubjectId]]
| + | |
− | * [[Relation]]
| + | |
− | * [[Context Discovery]]
| + | |
− | * [[Context Discovery Components]]
| + | |
− | * [[Higgins XRDS Service Endpoint]]
| + | |
− | * [[Higgins XDI Context Reference]]
| + | |
− | * [[Concepts]]
| + | |
− | | + | |
− | == Links ==
| + | |
− | * [http://eclipse.org/higgins Higgins Home]
| + | |