Cette documentation est archivée et n’est pas conservée.

Création de cartes gérées

Visual Studio 2008

Download sample

Une carte gérée est une carte d'informations émise par un fournisseur d'identité. Elle contient les éléments suivants :

  • informations détaillées à propos de l'entité émettrice de la carte ;

  • nom de la carte ;

  • certificat ;

  • points de terminaison STS (Security Token Service) et MEX (Metadata Exchange) ;

  • image affichée sur la carte ;

  • liste de revendications relatives à l'utilisateur que le fournisseur d'identité corrobore ;

  • détails sur la manière avec laquelle l'utilisateur s'authentifie avec le STS du fournisseur d'identité pour que sa carte d'informations soit remplie avec les valeurs de revendication requises. Ce facteur d'authentification peut prendre la forme d'un certificat, d'un jeton Kerberos, d'une carte auto-émise ou, dans certains cas, d'une paire nom d'utilisateur/mot de passe.

    NoteRemarque :

    Pour créer des cartes à utiliser avec CardSpace, le fournisseur d'identité doit générer un fichier XML signé qui contient les données des cartes. Le nom de cette carte d'informations possède une extension de fichier .CRD.

Il est nécessaire de configurer un site Web pour travailler avec cet exemple. La configuration est exécutée à l'aide du fichier batch d'installation, fourni dans le dossier d'exemples :

Setup.bat

Pour plus d'informations sur l'installation du site Web, et quelques conseils en matière de dépannage, consultez Installation de certificats pour les exemples CardSpace.

Compilation du générateur de carte

Le code source du générateur de carte se trouve dans le dossier CardWriter (en C#).

ManagedCardWriter.cs

Le code source du générateur de carte se trouve dans le dossier CardWriter (en VB.NET) :

ManagedCardWriter.vb

Chargez le fichier projet (CardWriter.csproj) dans Visual Studio 2005 et compilez-le ou utilisez msbuild depuis la ligne de commande (où vous avez décompacté l'exemple).

msbuild /nologo /v:quiet CardWriter\CardWriter.csproj

Vous compilez ainsi le générateur de carte dans le dossier \bin, qui peut désormais être exécuté à partir de la ligne de commande.

bin\cardwriter.exe
Usage:
    ManagedCardWriter carddetails.ini [outputfilename.crd]

Utilisation du générateur de carte

Le générateur de carte utilise un fichier .INI comme entrée pour générer un fichier .CRD.

bin\cardwriter.exe SampleCards\FabrikamUP.ini
Reading card config from
   <install path >\FabrikamUP.ini
Card written to
   <install path>\SampleCards\FabrikamUP.crd
NoteRemarque :

La carte de sortie est placée dans le même répertoire que le fichier .INI source.

Fonctionnement des données dans une carte CardSpace

Le fichier .INI source contient plusieurs sections dont les données peuvent être modifiées pour générer des cartes à des fins spécifiques.

Exemple de type de carte

[CARD]
TYPE=UserNamePassword

À l'aide du créateur de la carte, chaque carte peut utiliser un type d'authentification pour s'authentifier avec le STS du fournisseur d'identité. Le type de carte peut être l'un des suivants : UserNamePassword, KerberosAuth, SelfIssuedAuth ou SmartCard.

Exemple d'informations détaillées sur une carte

[Details]
Name=My Card (U/P backed)
ID=http://www.fabrikam.com/card/unpw/randomnnumber123
version=1
image=images\fabrikam.jpg

La section « Details » contient quatre champs obligatoires.

Name

Nom complet de la carte que voit l'utilisateur. L'utilisateur peut modifier ce nom après avoir importé la carte dans son sélecteur d'identité.

ID

ID de la carte. Lorsque vous importez des cartes qui portent le même ID, vous devez confirmer que vous souhaitez remplacer l'ancienne carte par la nouvelle. Les cartes doivent conserver un ID cohérent d'une révision de schéma à l'autre.

Version

Chaque nouvelle version de la même carte doit obtenir un numéro de version incrémenté.

Image

Image qui apparaît à l'utilisateur lorsque la carte est importée dans son sélecteur d'identité. Cette image ne peut pas être modifiée par l'utilisateur.

Exemple d'informations détaillées sur l'émetteur

[Issuer]
     Address=http://www.fabrikam.com:3074/sts
     MexAddress=https://www.fabrikam.com:4074/sts/mex
     PrivacyPolicy=http://www.fabrikam.com/PrivacyPolicy.xml
     Certificate=LOCALMACHINE/MY/www.fabrikam.com

La section « Issuer » contient quatre champs obligatoires.

Address

URL du point de terminaison du STS du fournisseur d'identité.

MexAddress

Point de terminaison MEX pour le STS. Dans CardSpace, HTTPS est requis pour le point de terminaison MEX.

PrivacyPolicy

URL de l'emplacement de la stratégie de confidentialité du fournisseur d'identité.

Certificate

Emplacement du certificat, dont la clé publique est utilisée pour signer le fichier de la carte. Il doit être au format emplacement/nom de magasin/nom commun (par exemple, ordinateurlocal/My/www.fabrikam.com) ou sous forme de chemin d'accès à un fichier .PFX qui contient le certificat et la clé privée. Si le fichier .PFX est protégé par mot de passe, vous devez également insérer un CertificatePassword= champ dans le fichier .INI.

Exemple d'informations détaillées sur les revendications

[Claims]
1=http://schemas.microsoft.com/ws/2005/05/identity/claims/givenname
2=http://schemas.microsoft.com/ws/2005/05/identity/claims/surname   3=http://schemas.microsoft.com/ws/2005/05/identity/claims/emailaddress
4=http://www.contoso.com/myuritest

La section « Claims » répertorie les URI de revendications pris en charge par le fournisseur d'identité. L'utilisation du jeu standard d'URI de revendications ne requiert pas d'informations supplémentaires, tandis que l'utilisation d'URI de revendications personnalisées requiert une section pour chaque revendication personnalisée.

Exemple d'informations détaillées sur les URI de revendication personnalisée

[http://www.contoso.com/myuritest]
     display=My Super Claim
     description=A claim for all to see

Chaque URI de revendication personnalisée doit détailler le nom complet et la description de chaque revendication créée. Ceux-ci sont affichés à l'attention de l'utilisateur dans le sélecteur d'identité CardSpace.

Exemple de types de jetons pris en charge

[TokenTypes]
     1=urn:oasis:names:tc:SAML:1.0:assertion
     2=http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1

Le fournisseur d'identité déclare les types des jetons pris en charge par le STS. Ceux-ci sont répertoriés sous forme d'URN dans la section « Token Types ». Chaque URN apparaît sur une ligne distincte, avec un numéro d'index comme nom de champ (tel que 1, 2, 3, etc.).

Exemple d'informations détaillées sur le jeton

[Token Details]
RequiresAppliesTo=false

Le fournisseur d'identité peut décider d'émettre des jetons pour toute partie de confiance qui en fait la demande ou exiger que chaque partie de confiance indique qui elle est lorsqu'elle demande son identité.

Informations d'identification

Dans cette section, toute information d'identification peut être répertoriée et codée dans la carte. À chaque type d'authentification peut correspondre des spécifications différentes :

  • Pour l'authentification des cartes auto-émises, la valeur est la revendication PPID de la carte, telle qu'elle a été indiquée au fournisseur d'identité, à l'aide du certificat.

    [Credentials]
         value=eiavryEeugtsZibaD0moDOiIE+106HbYhYIbst73x5A=
         Hint=Enter your username and password
    
  • Pour l'authentification par nom d'utilisateur/mot de passe, la valeur est le nom d'utilisateur (facultatif), qui est affiché pour l'utilisateur.

    [Credentials]
         value=FrankLee
         Hint=Enter your username and password
    
  • Pour l'authentification par certificat, vous devez identifier le certificat à l'aide d'une des trois méthodes suivantes :

    • Empreinte numérique du certificat.

    • Référence au certificat dans son magasin au format emplacement/nom de magasin/nom commun (currentUser/My/FrankLee)

    • Hachage du certificat lui-même.

Exemple de certificat

[Credentials]
     value=3ce25c9ef8b2d5d99a227e1ea1a28d7f001a3355
     Hint=Insert your smartcard now

Consultation de la carte générée

Le format .CRD est un document XML qui contient les informations présentées plus haut. Il est utilisé par le fournisseur d'identité pour exprimer toutes ces informations de manière concise, et par l'utilisateur pour importer la carte dans sa collection.

Dans cet exemple, nous partons du principe qu'un fournisseur d'identité émet une carte qui certifie l'adhésion à un club automobile, et permet d'accéder à des services ou à des réductions de prix sur différents sites Web.

La signature

L'élément racine du fichier .CRD est une signature enveloppante.

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
  <SignedInfo>
    <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
    <Reference URI="#_Object_InfoCard">
      <Transforms>
        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
      </Transforms>
      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
      <DigestValue>3x/Op7j/BUjCskLqMHNdfCyI/H8=</DigestValue>
    </Reference>
  </SignedInfo>
  <SignatureValue>
      NT...0w==
  </SignatureValue>
  <KeyInfo>
    <X509Data>
      <X509Certificate>
         MIIG…uEd
      </X509Certificate>
      <X509Certificate>
         MIIE...Q==
      </X509Certificate>
    </X509Data>
  </KeyInfo>
  <Object Id="_Object_InfoCard">
      ...
  </Object>
</Signature>

Elle garantit qu'une fois la carte émise, elle doit être protégée contre les tentatives de falsification. C'est la signature qui permet cela. Elle garantit également de manière cryptographique que la carte provient effectivement du club automobile, puisqu'elle manifeste l'utilisation de la clé privée.

Les deux éléments X509Certificate contiennent le certificat du fournisseur d'identité (le club automobile) et le certificat de l'autorité de certification qui a émis le certificat au club automobile.

Après la signature, il existe un élément appelé InformationCard, qui contient les métadonnées effectives de la carte. L'exemple suivant montre les éléments XML de la carte.

<InformationCard xml:lang="en-us" xmlns="http://schemas.microsoft.com/ws/2005/05/identity">
      <InformationCardReference />
      <CardName />
      <CardImage />
      <Issuer />
      <IssuerName />
      <TimeIssued />
      <TimeExpires />
      <TokenServiceList />
      <SupportedTokenTypeList />
      <SupportedClaimTypeList />
      <PrivacyNoticeAt />
    </InformationCard>

<InformationCardReference> contient l'ID et la version de la carte ; cet élément est utilisé lors des opérations d'importation ultérieures pour permettre la mise à jour ou le remplacement de la carte.

<InformationCardReference>
    <CardId>
       http://www.fabrikam.com/card/unpw/randomnnumber123        
    </CardId>
    <CardVersion>1</CardVersion>
 </InformationCardReference>

<CardName> contient le nom cosmétique de la carte, que l'utilisateur est autorisé à modifier après l'importation.

<CardName>My Card</CardName>

<CardImage> contient une image codée en base 64 dont le fournisseur d'identité peut sélectionner l'apparence. L'élément est codé à l'intérieur de la carte et non référencé dans une URL pour garantir la cohérence au fournisseur de la marque sans dépendre de la capacité du client à résoudre les liens.

<CardImage MimeType="image/jpeg">
</CardImage>

<Issuer> représente l'URI du STS, à savoir l'adresse à laquelle les messages RST (Request Security Token) sont envoyés chaque fois que la carte gérée est utilisée. <IssuerName> est le nom cosmétique associé à cet élément.

<Issuer>http://www.fabrikam.com:3074/sts</Issuer>

<TimeIssued> et <TimeExpires> contiennent respectivement l'heure de l'opération d'émission et la date d'expiration de la carte. La date d'expiration doit être considérée comme une date de type « ce-contrat-de-métadonnées-est-valide-jusqu'à », pas comme une date d'expiration de compte, devant être gérée comme des données de compte au niveau du STS.

<TimeIssued>2006-08-07T23:37:42.3533826Z</TimeIssued>
      <TimeExpires>9999-12-31T23:59:59.9999999Z</TimeExpires>

<TokenServiceList> contient une liste d'éléments <TokenService> qui sont les données nécessaires à l'obtention des métadonnées STS (de manière sécurisée) et à l'authentification des demandes entrantes.

<TokenServiceList>
        <TokenService>
          <EndpointReference >
            <Address />
            <Metadata />
            <Identity />
          <UserCredential />
        </TokenService>
      </TokenServiceList>

<EndpointReference> est une référence à un point de terminaison WS-Addressing, qui contient à nouveau le point de terminaison STS ; la section Metadata contient l'adresse du point de terminaison WS-MetadataExchange.

<EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
        <Address>http://www.fabrikam.com:3074/sts</Address>
        <Metadata>
          <Metadata xmlns="http://schemas.xmlsoap.org/ws/2004/09/mex"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
           <wsx:MetadataSection xmlns="">
               <wsx:MetadataReference>
                 <Address xmlns="http://www.w3.org/2005/08/addressing">
                    https://www.fabrikam.com:4074/sts/mex
                  </Address>
               </wsx:MetadataReference>
           </wsx:MetadataSection>
           </Metadata>
           </Metadata>

<Identity> contient le certificat associé au STS, généralement le même que celui utilisé dans la signature initiale.

    <Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <X509Data>
          <X509Certificate>
            MIIGR…uEd
          </X509Certificate>
        </X509Data>
      </KeyInfo>
    </Identity>
</EndpointReference>

L'élément <UserCredential> change selon le type d'authentification :

  • Pour les cartes d'informations authentifiées par une carte personnelle, l'élément <PrivatePersonalIdentifier> est utilisé pour stocker le PPID.

    <UserCredential>
                <SelfIssuedCredential>
                  <PersonalPrivateIdentifier>
                     eiavryEeugtsZibaD0moDOiIE+106HbYhYIbst73x5A=
                   </PersonalPrivateIdentifier> 
                </ SelfIssuedCredential >
              </UserCredential>
    
  • Pour une carte authentifiée par certificat, l'élément <X509V3Credential> est utilisé par la carte gérée ; l'élément <KeyIdentifier> contient le hachage du certificat de la carte à puce. L'élément <DisplayCredentialHint> est l'invite que l'utilisateur reçoit avant d'afficher la carte à puce.

    <UserCredential>
          <X509V3Credential>
              <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
                  <KeyIdentifier 
                  ValueType="http://docs.oasis-open.org/wss/2004/xx/oasis-2004xx-wss-soap-message-security-1.1#ThumbprintSHA1" 
                  xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
                         3ce25c9ef8b2d5d99a227e1ea1a28d7f001a3355
                  </KeyIdentifier> 
             </ X509Data >
        </X509V3Credential>
    </UserCredential>
    
  • Le <UsernamePasswordCredential> contient le nom d'utilisateur par défaut pour les cartes authentifiées par nom d'utilisateur/mot de passe.

    <UserCredential>
        <DisplayCredentialHint>
            Enter your username and password
        </DisplayCredentialHint>
        <UsernamePasswordCredential>
            <Username>FrankLee</Username>
        </UsernamePasswordCredential>
    </UserCredential>
    

<SupportedTokenTypeList> contient une liste des éléments <TokenType> qui détaillent la liste des types de jetons pris en charge par le STS.

<SupportedTokenTypeList>
    <TokenType xmlns="http://schemas.xmlsoap.org/ws/2005/02/trust">
          urn:oasis:names:tc:SAML:1.0:assertion
    </TokenType>
</SupportedTokenTypeList>

<SupportedClaimTypeList> contient la liste des revendications prises en charge par la carte. Les revendications uniques sont décrites par l'élément <SupportedClaimType>, dont les éléments se passent d'explication (DisplayTag et Description). L'exemple utilise des URI de revendications prédéfinies disponibles dans le jeu auto-émis ainsi que des URI de revendications personnalisées, tels que http://www.contoso.com/myuritest.

<SupportedClaimTypeList>
    <SupportedClaimType
uri="http://schemas.microsoft.com/ws/2005/05/identity/claims/givenname">
        <DisplayTag>Given Name</DisplayTag>
        <Description>Given Name</Description>
    </SupportedClaimType>
    <SupportedClaimType 
Uri="http://schemas.microsoft.com/ws/2005/05/identity/claims/surname">
          <DisplayTag>Last Name</DisplayTag>
          <Description>Last Name</Description>
        </SupportedClaimType>
    <SupportedClaimType Uri="http://schemas.microsoft.com/ws/2005/05/identity/claims/emailaddress">
         <DisplayTag>Email Address</DisplayTag>
         <Description>Email Address</Description>
    </SupportedClaimType>
    <SupportedClaimType Uri=" http://www.contoso.com/myuritest">
          <DisplayTag>My Super Claim</DisplayTag>
          <Description>A claim for all to see</Description>
    </SupportedClaimType>
</SupportedClaimTypeList>

L'URL de la stratégie de confidentialité se trouve dans l'élément <PrivacyNotice> :

<PrivacyNotice>
        http://www.fabrikam.com/PrivacyPolicy.xml
</PrivacyNotice>

Glossaire

  • Carte gérée - Carte d'informations émise par un fournisseur d'identité. Cette carte d'informations contient des métadonnées relatives au serveur de jeton de sécurité et aux revendications prises en charge par le fournisseur d'identité.

  • Fournisseur d'identité - Le fournisseur d'identité émet des identités numériques pour les utilisateurs, qui contiennent des revendications de données relatives à l'utilisateur.

  • Service d'émission de jeton de sécurité (STS) - Le service d'émission de jeton de sécurité échange un jeton contre un autre. Le STS accorde un jeton doté de revendications en fonction de l'authentification des utilisateurs auprès du serveur. Il s'agit, dans la plupart des cas, du serveur qui délivre les informations d'identité numériques à l'utilisateur.

Voir aussi

Footer image

Envoyer des commentaires sur cette rubrique à Microsoft.

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.

Afficher: