Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Org.eclipse.higgins.icard"

(IdASCard)
(See Also)
 
(72 intermediate revisions by 6 users not shown)
Line 1: Line 1:
This page describes the one mandatory I-Card interface that all types of Higgins-compatible I-Cards must implement, as well as these optional interfaces:
+
{{#eclipseproject:technology.higgins|eclipse_custom_style.css}}
* TokenIssuerCard
+
This page describes the base ''ICard'' interface that all types of Higgins-compatible i-cards must implement, as well as several other optional interfaces implemented by specific [[I-Card Provider]]s.
* URLIssuerCard
+
* IdASCard
+
  
==I-Card Interface==
+
These interfaces are in a state of continuous evolution. We're trying to support real world demos (recently, for example on CardSpace-compatible interoperability) on the one hand, while also trying to build a robust abstraction layer around the i-card metaphor (e.g. as described here [http://en.wikipedia.org/wiki/I-card Wikipedia i-card]), on the other. What's shown below on this page "works" (supports certain interop use cases), but some lower level implementation dependences are leaking up through the abstraction that will limit things we want to do in the future.
  
All [[I-Card]]s implement the [[I-Card Interface]]
+
==ICard Interface==
  
  // Return the human friendly name of the card
+
All [[I-Card]]s must implement the ICard Interface:
  String getCardName();
+
 
 +
  //Returns the type of this i-card (e.g. "m-card", "p-card", "r-card", "z-card" etc.)
 +
  String getType();
 
   
 
   
// Set the human friendly name of the card
 
void setCardName(String);
 
 
   
 
   
  // Return true if this card only manages information about a
+
  // A card identifier that is unique to the card issuer. Or at least that
  // exactly one [[Digital Subject]]
+
  // is what we believe the semantics that Microsoft intended and we currently
  boolean isSingle();
+
// see no reason not to follow
 +
// Return the identifier string 
 +
  String getId();
 
   
 
   
// Set whether or not this card is a single (else multiple)
 
// subject card
 
void setSingle(boolean flag);
 
 
 
// Returns if 'isSingle()' is true, an optional contextually-unique identifier for the [[Digital Subject]]
 
// Otherwise return null.
 
String getCUID();
 
 
   
 
   
  // ???
+
  // The unique identifier of the i-card in the i-card registry.
  URI getUUID();
+
  // Because different i-card providers could contains i-cards with the same
 +
// ID, it could be difficult to retrieve the same i-card from the i-card
 +
// registry again using i-card ID.
 +
// The UUID must be unique over all i-card providers in the i-card registry
 +
// to allow retrieve the same i-card from the i-card registry multiple times.
 +
CUID getCUID();
 
   
 
   
// Returns the human friendly name of the card issuer, originator, creator
 
String getIssuerName();
 
 
   
 
   
  // Sets the card's human friendly name of the card issuer, originator, creator
+
  // The version of the card. Useful in subsequent import operations,
  void setIssuerName(String name);
+
  // so that cards can be updated or overwritten.
 +
String getVersion();
 
   
 
   
// Returns a background image of the card
 
Image getCardImage();
 
 
 
// Sets the background image of the card
 
void setCardImage(Image image);
 
 
   
 
   
  // Return the mime type of the background image (JPEG or GIF)
+
  //the human friendly name of the card. The only thing that will be
  String getImageMimeType();
+
// possible to modify after the import.
 +
  String getName();
 
   
 
   
  // Returns when the card was first issued, created, orginated
+
 +
// Representation of a background image of the card.
 +
byte[] getImage();
 +
 +
 +
// The mime type of the background image (JPEG or GIF).
 +
String getImageType();
 +
 +
 +
// Name of the issuer of the card. Used to match the required issuer, if a relying party specifies an issuer in the policy.
 +
String getIssuer();
 +
 +
 +
// The human friendly name of the card issuer
 +
String getIssuerName();
 +
 +
 +
  // Returns when the card was first issued, created, originated
 
  Date getTimeIssued();
 
  Date getTimeIssued();
 +
 
   
 
   
 
  // Returns (optionally) the time after which the card should
 
  // Returns (optionally) the time after which the card should
 
  // be considered expired, invalid. Otherwise returns null
 
  // be considered expired, invalid. Otherwise returns null
  Date getExpiredTime();
+
  Date getTimeExpires();
 
   
 
   
// Set the expiration date and time
 
void setExpiredTime(Date date);
 
 
   
 
   
// Return the date and time after which the card should be
 
// treated as expired and invalid. If there is no expiration
 
 
  // If card handles only simple claim types then  
 
  // If card handles only simple claim types then  
 
  // return a list of all possible types of claims that are supported
 
  // return a list of all possible types of claims that are supported
 
  // throw exception otherwise
 
  // throw exception otherwise
  Iterable<String> getSupportedSimpleClaimTypes();
+
  // This is here for backward compatibility with CardSpace cards
 +
//
 +
// Note: this is a convenience method that does the equivalent of
 +
// c = getContext(); and then (presuming c has a simple schema)
 +
// does creates a linear list of claim/attribute types from
 +
// the schema of c (retrieved by c.getSchema())
 +
List getSupportedSimpleClaimTypes() throws ComplexSchemaException;
 
   
 
   
// If card handles complex claim types then
 
// return an OWL-DL schema describing types of complex claim
 
// objects that are supported
 
String getSupportedComplexClaimTypes();
 
 
   
 
   
  // Given a relying party policy ''Policy'', return true
+
  // List of all possible types of claims (as String) that are supported.
// if this card can provide the claims required/desired by the relying party
+
  public List getSupportedClaimTypesUris();
// else return false
+
  boolean isMatch(Policy);
+
 
   
 
   
// Return whether the user wishes to be asked for explicit release of
 
// this card's information (i) every time it is requested (ii) only
 
// the first time it is requested (iii) never
 
ReleasePolicy getReleasePolicy();
 
 
   
 
   
  // Set the release policy of this card
+
  // List of claims provided by this ICard.
  void setReleasePolicy(ReleasePolicy);
+
  Iterator getClaims();
 
   
 
   
// Return a list of the types of expored card data stream formats supported
 
// ?? presumably a CardFormat also mentions XML language and/or version number
 
<Iterable>CardFormat getSupportedExportFormats();
 
 
   
 
   
  // Return a data stream containing a serialization of the card
+
  // Retrieve the value of a simple claim type
  // The format depends on the kind of card  
+
IClaim getClaim(String type);
  // E.g. CardSpace I-Cards will export CardSpace format data
+
  String export(CardFormat format);
+
 +
IClaim getClaimByShortName(String shortTypeName);
 +
 +
 +
// Provider of this card
 +
ICardProvider getProvider();
 +
 +
 +
//
 +
String getDescription();
 +
 +
 +
//
 +
void setName(String newName) throws CardException;
 +
 +
 +
//
 +
void setImage(byte[] newImage, String newImageType) throws CardException;
 +
 +
 +
//
 +
void setIssuerName(String name) throws CardException;
 +
 +
 +
//
 +
void setExpiredTime(Date date) throws CardException;
 +
 +
 +
  // The list of token types could be issued using this card (this method was moved from ITokenCard)
 +
List getSupportedTokenTypes();
 +
 +
 +
  // Indicates that this card has been issued by user (claim values can be editable)
 +
  public boolean isSelfIssued();
 +
 +
 +
// Date when the card was last updated
 +
Date getTimeLastUpdated() throws CardException;
 +
 
 +
 
 +
 
  
 
===To Do===
 
===To Do===
  
* Need methods to get/set the access control list idea (see [[I-Card]])
+
* Future: we may want to add methods to the a human friendly text name and an icon that informs the user about the kind of data access "protocol" used (if any) to retrieve the underlying data. Examples of strings might be "LDIF", "OpenID", "WS-Trust", etc.
 +
* Future: we may want to add methods (analogous to the ones mentioned above) to inform the user about the format of the underlying data (e.g. LDAP, RDF, RDBMS, email contacts, etc.)
  
==TokenIssuerCard Interface==
+
==IInformationCard Interface (extends ICard interface)==
  
Some types of [[I-Card]]s may implement this interface.  
+
All CardSpace-interoperable cards must implement this interface.  
+
 
  // If card is of type (1) then return a [[Digital Identity]]
+
  // Random entropy used for computing the PPID claim value for the card
// that satisfies the policy ''policy''
+
  byte[] getHashSalt();
// The ''credential'' parameter used to authenticate to the  
+
  // Token Issuer–-may be null if Token Issuer policy doesn’t require it
+
DigitalIdentity requestDigitalIdentity(Policy policy, DigitalIdentity credential);
+
 
   
 
   
// Return the EPR of the card issuer
 
// For CardSpace cards this is either the local STS endpoint (for
 
// self-asserted cards) or a remote STS (for managed cards)
 
EndpointReference getCardIssuerEndpoint();
 
 
   
 
   
  // Return a list of endpoint references, credential hint, credential selector
+
  // Used as the entropy to generate the token signing key
  Iterable<TokenService> getTokenServices()
+
  byte[] getMasterKey();
 
   
 
   
// Return a list of supported token types
 
?? getPolicy?? ();
 
 
   
 
   
  // Is the RP identity required in the token request message?
+
  // XML representation of the card in RoamingInformationCard format. This Element should be created within the passed Document
  boolean getRequireAppliesTo()
+
  Element toXML(Document doc) throws CardException;
  
==URLIssuerCard Interface==
 
  
Some types of I-Cards may implement this interface.
+
==IManagedInformationCard Interface (extends IInformationCard interface)==
  
// Returns a URL that satisfies the policy ''policy''
+
All Managed CardSpace-interoperable cards must implement this interface.
// Credential may be required for access to data source
+
URL requestURL(Policy policy, DigitalIdentity credential);
+
  
==IdASCard==
+
// An ordered list of security token services
 +
List getTokenServices();
 +
 +
 +
// Indicates that RST must include information identifying the relying
 +
Boolean getRequireAppliesTo();
 +
 +
 +
// PrivacyNotice XML element as it was imported from xml file
 +
Element getPrivacyNotice();
 +
 
 +
 
 +
==IPersonalInformationCard Interface (extends IInformationCard interface)==
  
Some types of [[I-Card]]s may implement this interface. If ICard.isSingle() is true, then implementation can invoke ICard.getCUID() to retreive the CUID of the [[Digital Subject]] with the [[Context]] returned by IdASCard.getContextRef() below.
+
All Personal CardSpace-interoperable cards must implement this interface.
  
  // Return the EPR of the IdAS service this card uses
+
  // The base64 encoded bytes of the SHA1 hash of the pin code
  EndpointReference getIdASEndpoint();
+
  byte[] getPinDigest();
 
   
 
   
  // Return the IdAS [[Context]] reference
+
  ContextRef getContextRef();
+
  // Used to edit claim values of the card
 +
  void setClaimList(List claims) throws CardException;
 +
 +
 +
// Used to set/remove pin protection
 +
void setPinCode(String pinCode) throws CardException;
 +
 +
 +
// URI of the context where DigitalSubject with claim values of the card is stored
 +
URI getClaimListContextID();
 +
 +
 +
// ID of DigitalSubject which holds claim values of the card
 +
String getClaimListSubjectID();
 +
 
 +
 
 +
 
  
* Need method to get the IdAS endpoint ref and related credentials
 
  
 
==See Also==
 
==See Also==
 
* [[I-Card Provider]]
 
* [[I-Card Provider]]
 
* [[I-Card Registry]]
 
* [[I-Card Registry]]
* [[Higgins Wiki]]
+
 
 +
[[Category:Higgins Components]]

Latest revision as of 23:41, 10 July 2009

{{#eclipseproject:technology.higgins|eclipse_custom_style.css}} This page describes the base ICard interface that all types of Higgins-compatible i-cards must implement, as well as several other optional interfaces implemented by specific I-Card Providers.

These interfaces are in a state of continuous evolution. We're trying to support real world demos (recently, for example on CardSpace-compatible interoperability) on the one hand, while also trying to build a robust abstraction layer around the i-card metaphor (e.g. as described here Wikipedia i-card), on the other. What's shown below on this page "works" (supports certain interop use cases), but some lower level implementation dependences are leaking up through the abstraction that will limit things we want to do in the future.

ICard Interface

All I-Cards must implement the ICard Interface:

//Returns the type of this i-card (e.g. "m-card", "p-card", "r-card", "z-card" etc.)
String getType();


// A card identifier that is unique to the card issuer. Or at least that
// is what we believe the semantics that Microsoft intended and we currently
// see no reason not to follow
// Return the identifier string   
String getId();


// The unique identifier of the i-card in the i-card registry.
// Because different i-card providers could contains i-cards with the same
// ID, it could be difficult to retrieve the same i-card from the i-card
// registry again using i-card ID.
// The UUID must be unique over all i-card providers in the i-card registry
// to allow retrieve the same i-card from the i-card registry multiple times.
CUID getCUID();


// The version of the card. Useful in subsequent import operations,
// so that cards can be updated or overwritten.
String getVersion();


//the human friendly name of the card. The only thing that will be
// possible to modify after the import.
String getName();


// Representation of a background image of the card.
byte[] getImage();


// The mime type of the background image (JPEG or GIF).
String getImageType();


// Name of the issuer of the card. Used to match the required issuer, if a relying party specifies an issuer in the policy.
String getIssuer();


// The human friendly name of the card issuer
String getIssuerName();


// Returns when the card was first issued, created, originated
Date getTimeIssued();


// Returns (optionally) the time after which the card should
// be considered expired, invalid. Otherwise returns null
Date getTimeExpires();


// If card handles only simple claim types then 
// return a list of all possible types of claims that are supported
// throw exception otherwise
// This is here for backward compatibility with CardSpace cards
//
// Note: this is a convenience method that does the equivalent of
// c = getContext(); and then (presuming c has a simple schema)
// does creates a linear list of claim/attribute types from 
// the schema of c (retrieved by c.getSchema()) 
List getSupportedSimpleClaimTypes() throws ComplexSchemaException;


// List of all possible types of claims (as String) that are supported.
public List getSupportedClaimTypesUris();


// List of claims provided by this ICard.
Iterator getClaims();


// Retrieve the value of a simple claim type 
IClaim getClaim(String type);


IClaim getClaimByShortName(String shortTypeName);


// Provider of this card
ICardProvider getProvider();


// 
String getDescription();


//
void setName(String newName) throws CardException;


// 
void setImage(byte[] newImage, String newImageType) throws CardException;


// 
void setIssuerName(String name) throws CardException;


// 
void setExpiredTime(Date date) throws CardException;


// The list of token types could be issued using this card (this method was moved from ITokenCard) 
List getSupportedTokenTypes();


// Indicates that this card has been issued by user (claim values can be editable)
public boolean isSelfIssued();


// Date when the card was last updated
Date getTimeLastUpdated() throws CardException;



To Do

  • Future: we may want to add methods to the a human friendly text name and an icon that informs the user about the kind of data access "protocol" used (if any) to retrieve the underlying data. Examples of strings might be "LDIF", "OpenID", "WS-Trust", etc.
  • Future: we may want to add methods (analogous to the ones mentioned above) to inform the user about the format of the underlying data (e.g. LDAP, RDF, RDBMS, email contacts, etc.)

IInformationCard Interface (extends ICard interface)

All CardSpace-interoperable cards must implement this interface.

// Random entropy used for computing the PPID claim value for the card
byte[] getHashSalt();


// Used as the entropy to generate the token signing key
byte[] getMasterKey();


// XML representation of the card in RoamingInformationCard format. This Element should be created within the passed Document
Element toXML(Document doc) throws CardException;


IManagedInformationCard Interface (extends IInformationCard interface)

All Managed CardSpace-interoperable cards must implement this interface.

// An ordered list of security token services
List getTokenServices();


// Indicates that RST must include information identifying the relying
Boolean getRequireAppliesTo();


// PrivacyNotice XML element as it was imported from xml file
Element getPrivacyNotice();


IPersonalInformationCard Interface (extends IInformationCard interface)

All Personal CardSpace-interoperable cards must implement this interface.

// The base64 encoded bytes of the SHA1 hash of the pin code
byte[] getPinDigest();


// Used to edit claim values of the card
void setClaimList(List claims) throws CardException;


// Used to set/remove pin protection
void setPinCode(String pinCode) throws CardException;


// URI of the context where DigitalSubject with claim values of the card is stored
URI getClaimListContextID();


// ID of DigitalSubject which holds claim values of the card
String getClaimListSubjectID();



See Also

Back to the top