Changes between Version 1 and Version 2 of Credentials

Show
Ignore:
Author:
gary (IP: 155.98.60.98)
Timestamp:
06/09/10 12:31:07 (3 months ago)
Comment:

Add a section with detailed credential validation requirements.

Legend:

Unmodified
Added
Removed
Modified
  • Credentials

    v1 v2  
    3636The wildcard privilege "*" may be used in place of any other 
    3737privilege string. 
    38  
    39 A simple credential (one with no ancestors) must be signed by the 
    40 ProtoGENI authority whose certificate subject exactly matches the authority 
    41 in the `target` URN.  (This certificate will be included in a signature 
    42 element, according to standard XML Signature processing.  Other 
    43 certificates might also be enclosed, since it is necessary to 
    44 verify CA certificates up to one of the ultimately trusted roots.) 
    4538 
    4639For the detailed specification, please consult the 
    8679outermost child credential. 
    8780 
    88 No privilege may be included in a child credential unless either 
    89 a privilege with identical name or the privilege named "*" is present 
    90 in the parent.  In addition, the parent privilege must include 
    91 the element {{{<can_delegate>1</can_delegate>}}}. 
    92  
    93 The expiry time on a child credential may be no later than the 
    94 expiry time of the parent. 
    95  
    9681[wiki:DelegationExample A concrete example] of a delegated 
    9782credential is available, along with instructions on how to use 
    9883the ProtoGENI tools to create one. 
     84 
     85== Validating credentials == 
     86 
     87The following procedure should be followed before accepting any credential 
     88as proof of corresponding privileges.  Naturally, all credentials must 
     89be ''syntactically'' correct (and validate against the 
     90[attachment:wiki:Authentication:credential.rnc credential schema]); 
     91the following requirements describe restrictions which are necessary 
     92for ''semantic'' correctness as well. 
     93 
     94For any credential to be honoured, the current time must be no later 
     95than that specified in the `expires` element of the credential.  When 
     96issuing subsequent credentials under the authority conferred by an 
     97existing credential (e.g. when a slice credential has been presented to 
     98authenticate the issuing of a corresponding sliver credential), the 
     99`expires` element time of the consequent credential must be no later 
     100than the `expires` element time of the existing credential. 
     101 
     102=== Validating the root === 
     103 
     104Any simple credential (one with no ancestors), including the ultimate 
     105root credential which is contained in delegated credentials, must be 
     106signed by a ProtoGENI authority whose certificate `subject` matches the 
     107authority in the `target` URN.  (This certificate will be included in 
     108a signature element, according to standard XML Signature processing. 
     109Other certificates might also be enclosed, since it is necessary to 
     110verify CA certificates up to one of the ultimately trusted roots.) 
     111 
     112The certificate subject is considered to match the credential target 
     113if and only if: 
     114 
     115 1. The subject [wiki:URNs URN] in the authority's certificate has 
     116    `resource-type` "authority". 
     117 1. The `toplevelauthority` field in the authority's certificate 
     118    subject [wiki:URNs URN] is identical to the `toplevelauthority` 
     119    in the credential target URN. 
     120    [http://tools.ietf.org/html/rfc3151 RFC 3151] 
     121    defines transcription and equivalence of public identifier URNs. 
     122 
     123=== Validating any delegation === 
     124 
     125If the credential has been delegated, then each delegation must 
     126satisfy the following: 
     127 
     128 1. The `type` field of the child must be identical to the `type` 
     129    field of the parent. 
     130 1. The expiry time on a child credential must be no later than the 
     131    expiry time of the parent. 
     132 1. The expiry time of the child must be no later than the current 
     133    time. 
     134 1. A valid signature over the child credential, signed by the principal 
     135    identified in the `owner` element of the parent credential, 
     136    must be present in the `signatures` element of the outermost 
     137    credential. 
     138 1. For credentials of `type` `privilege`: 
     139    a. No privilege may be included in a child credential unless either 
     140       a privilege with identical name or the privilege named "*" is present 
     141       in the parent.  In addition, the parent privilege must include 
     142       the element {{{<can_delegate>1</can_delegate>}}}. 
     143 
     144=== Validating subauthorities === 
     145 
     146Please note that Utah's ProtoGENI software does not yet support 
     147subauthorities.  If a validator does not support subauthorities, it 
     148should reject any credential if either the authority certificate 
     149subject URN or the credential target URN contain one or more 
     150subauthority fields. 
     151 
     152If the validator does process subauthorities, the following 
     153restrictions will apply: 
     154 
     155 1. The number of subauthorities specified in the authority subject 
     156    and the credential target must agree, and each `subauthority` 
     157    field must match (just as the `toplevelauthority` must). 
     158 1. Any authority certificate where the subject URN contains one or 
     159    more subauthorities must have been signed by a CA such that the 
     160    certificate issuer URN contains exactly the same `toplevelauthority` 
     161    and `subauthority` fields as the certificate subject URN in 
     162    exactly the same order, except that the very last `subauthority` 
     163    in the certificate subject must not be present in the certificate 
     164    issuer.