Creación de tarjetas administradas

Download sample

Una tarjeta administrada es una tarjeta de información emitida por un proveedor de identidad. Contiene:

  • Detalles sobre la entidad que emite la tarjeta:

  • Nombre de la tarjeta.

  • Certificado.

  • Extremos STS (Servicio de token de seguridad) y MEX (Intercambio de metadatos).

  • Una imagen mostrada en la tarjeta.

  • La lista de notificaciones sobre el usuario que el proveedor de identidad corrobora.

  • Detalles sobre cómo el usuario autentica con STS del proveedor de identidad para tener la tarjeta de información rellenada con los valores de notificación necesarios. Este factor de autenticación puede tener forma de un certificado, un token de Kerberos, una tarjeta autoemitida o, en ciertos casos, un par de nombre de usuario/contraseña.

    Nota

    Para crear tarjetas para su uso con CardSpace, el proveedor de identidad debe generar un archivo XML firmado que contenga los datos de la tarjeta. Esta tarjeta de información se denomina con una extensión de archivo .CRD.

Para trabajar con este ejemplo, es necesaria la configuración del sitio Web. La configuración se hace utilizando el archivo por lotes de instalación proporcionado en la carpeta de ejemplo:

Setup.bat

Para obtener más información sobre la instalación del sitio Web y la solución a algunos problemas, vea Instalación de certificados de ejemplo de CardSpace.

Compilar el escritor de la tarjeta

El código fuente para el escritor de la tarjeta se encuentra en la carpeta CardWriter (en C#).

ManagedCardWriter.cs

El código fuente para el escritor de la tarjeta se encuentra en la carpeta CardWriter (en VB.NET):

ManagedCardWriter.vb

Cargue el archivo de proyecto (CardWriter.csproj) en Visual Studio 2005 y compílelo o utilice msbuild de la línea de comandos (donde desempaquetó el ejemplo).

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

Esto compila el escritor de la tarjeta en la carpeta \bin, que ahora se puede ejecutar desde la línea de comandos.

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

Utilizar el escritor de la tarjeta

El escritor de la tarjeta utiliza un archivo .INI como la entrada para generar un archivo .CRD.

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

Nota

La tarjeta de salida se coloca en el mismo directorio como el archivo .INI de origen.

Entender los datos en una tarjeta CardSpace

Dentro del archivo .INI de origen hay varias secciones que contienen datos que se pueden modificar para generar las tarjetas para un propósito concreto.

Tipo de ejemplo de la tarjeta

[CARD]
TYPE=UserNamePassword

Con el creador de la tarjeta, cada tarjeta puede utilizar un tipo de autenticación para autenticar con el STS del proveedor de identidad. El tipo de tarjeta puede ser UserNamePassword, KerberosAuth, SelfIssuedAuth, o SmartCard.

Ejemplo de detalles de tarjeta

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

En la sección de detalles, hay cuatro campos obligatorios.

Name

El nombre de visualización de la tarjeta que el usuario ve. El usuario puede modificar el nombre una vez importado en su selector de identidad.

ID

Éste es el id. de la tarjeta. Importar tarjetas con el mismo id. invita al usuario a reemplazar la tarjeta más antigua con la más nueva. Las tarjetas deberían mantener el id. coherente entre las revisiones de su esquema.

Version

Cada nueva versión de la misma tarjeta debería obtener un número de versión incrementado.

Image

La imagen que el usuario ve en la tarjeta cuando se importa en su selector de identidad. El usuario no puede cambiarlo.

Ejemplo de detalles de emisor

[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

En la sección de emisor, hay cuatro campos obligatorios.

Address

La dirección URL del extremo del STS de proveedor de identidad.

MexAddress

El extremo MEX para STS. En CardSpace, HTTPS es necesario para el extremo MEX.

PrivacyPolicy

La URL para la ubicación de la directiva de privacidad del proveedor de identidad.

Certificate

La ubicación del certificado cuya la clave pública se utiliza para firmar el archivo de la tarjeta. Esto debería estar en el formato ubicación/nombre de almacén/nombre común (por ejemplo, localmachine/My/www.fabrikam.com) o una ruta de acceso a un archivo .PFX que contiene el certificado y clave privada. Si el archivo .PFX está protegido mediante contraseña, también debe colocar CertificatePassword= campo en el archivo .INI.

Ejemplo de detalles de notificaciones

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

En la sección de notificaciones, se hace una lista de los URI de notificaciones individuales que el proveedor de identidad admite. El uso del conjunto estándar de URI de notificación no requiere ninguna información adicional, mientras que al utilizar los URI de notificación personalizada se requiere una sección para cada notificación personalizada.

Ejemplo de detalles de URI de notificación personalizada

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

Cada URI de notificación personalizada debe detallar el nombre de visualización y la descripción de cada notificación creada. Todo esto se muestra al usuario en el selector de identidad CardSpace.

Ejemplo de tipos de token admitidos

[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

El proveedor de identidad declara los tipos de token que STS admite. Se hace una lista de éstos como URN en la sección de tipos de token. Cada URN se coloca en una línea independiente, con un número de índice como el nombre de campo (como, 1,2,3...).

Ejemplo de detalles del token

[Token Details]
RequiresAppliesTo=false

El proveedor de identidad puede decidir si emitir los tokens a cualquier usuario de confianza o exigir al usuario de confianza que diga quién es al solicitar la identidad.

Credenciales

En esta sección, cualquier información de sugerencia de credencial se puede enumerar y codificar en la tarjeta. Para los tipos de autenticación diferentes, hay posibles requisitos diferentes:

  • Para la autenticación de la tarjeta autoemitida, el valor es la notificación PPID de la tarjeta, tal como se entrega al proveedor de identidad, utilizando su certificado.

    [Credentials]
         value=eiavryEeugtsZibaD0moDOiIE+106HbYhYIbst73x5A=
         Hint=Enter your username and password
    
  • Para la autenticación mediante nNombre de usuario/contraseña, el valor es el nombre de usuario (y es opcional), que se muestra para el usuario.

    [Credentials]
         value=FrankLee
         Hint=Enter your username and password
    
  • Para la autenticación del certificado, debe identificar el certificado mediante uno de estos tres métodos:

    • Huella digital del certificado.

    • Una referencia al certificado en su almacén en el formato ubicación/nombre de almacén/nombre común (currentUser/Mi/FrankLee)

    • El hash del propio certificado.

Ejemplo de certificado

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

Ver la tarjeta generada

El formato .CRD es un documento XML que contiene la información anterior. El proveedor de identidad lo utiliza para expresar todo esto de forma concisa y el usuario lo utiliza para importar la tarjeta en su colección.

En este ejemplo suponga que un proveedor de identidad está emitiendo una tarjeta que certifica la pertenencia en un club automovilístico, y eso proporciona acceso a servicios o descuentos en una variedad de sitios Web.

La firma

El elemento raíz del archivo .CRD es una firma de envoltura.

<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>

Esto garantiza que una vez se ha emitido la tarjeta, debería estar protegida contra manipulación. Esto se logra con el uso de la firma. Además, proporciona la certeza criptográfica que realmente está emitida por el club automovilístico, cuando exhibe el uso de la clave privada.

Los dos elementos X509Certificate contienen el certificado del proveedor de identidad (el club automovilístico) y el certificado de la entidad de certificación que emitió el certificado al club automovilístico.

Después de la firma, hay un elemento llamado InformationCard, que contiene los metadatos actuales de la tarjeta. En el siguiente ejemplo muestra los elementos XML de la tarjeta.

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

<InformationCardReference> contiene el id. de la tarjeta y la versión; se utiliza en operaciones de importación subsiguientes para que las tarjetas se puedan actualizar o sobrescribir.

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

<CardName> contiene el nombre de la tarjeta cosmética, que el usuario puede modificar después de la importación.

<CardName>My Card</CardName>

<CardImage> contiene una imagen codificada por base64 donde el proveedor de identidad puede seleccionar el aspecto que prefiera. Esto está codificado dentro de la tarjeta y no está referenciado en una dirección URL para garantizar coherencia al proveedor de la marca sin depender de la capacidad del cliente de resolver los vínculos.

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

<Issuer> representa el URI de STS –la dirección a la que se envían los mensajes del Token de seguridad de solicitud (RST) cada vez que se utiliza la tarjeta administrada. <IssuerName> es el nombre cosmético asociado.

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

<TimeIssued> y <TimeExpires> contienen la hora de la operación de emisión y la fecha de caducidad de la tarjeta, respectivamente. La fecha de caducidad se debería considerar como una fecha 'este-contrato-metadatos-admitido-hasta' y no como una fecha de caducidad de la cuenta, que se debería administrar como datos de la cuenta en STS.

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

<TokenServiceList> contiene una lista de elementos <TokenService> que son los datos para obtener los metadatos de STS, estableciendo contacto de manera segura y para autenticar las solicitudes entrantes

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

<EndpointReference> es una referencia del extremo WS-Addressing, que contiene de nuevo el extremo de STS; la sección de metadatos contiene la dirección del extremo WS-MetadataExchange.

<EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
        <Address>http://www.fabrikam.com:3074/sts</Address>
        <Metadata>
          <Metadata xmlns="https://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="https://schemas.xmlsoap.org/ws/2004/09/mex">
           <wsx:MetadataSection >
               <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> contiene el certificado asociado a STS, normalmente el mismo que el utilizado en la firma inicial.

    <Identity xmlns="https://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>

El elemento <UserCredential> cambia dependiendo del tipo de autenticación:

  • Para tarjetas de información respaldadas por una tarjeta personal, el elemento <PrivatePersonalIdentifier> se utiliza para almacenar el PPID.

    <UserCredential>
                <SelfIssuedCredential>
                  <PersonalPrivateIdentifier>
                     eiavryEeugtsZibaD0moDOiIE+106HbYhYIbst73x5A=
                   </PersonalPrivateIdentifier> 
                </ SelfIssuedCredential >
              </UserCredential>
    
  • Para una tarjeta respaldada con un certificado, tarjeta administrada utiliza el elemento <X509V3Credential>; el elemento <KeyIdentifier> contiene el hash del certificado de la tarjeta inteligente. El elemento <DisplayCredentialHint> es el indicador que el usuario recibe antes de mostrar la tarjeta inteligente.

    <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>
    
  • <UsernamePasswordCredential> contiene el nombre de usuario predeterminado para la tarjeta para tarjetas respaldadas mediante nombre de usuario/contraseña.

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

<SupportedTokenTypeList> contiene una lista de elementos <TokenType> que detallan la lista de tipos de token que STS admite.

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

<SupportedClaimTypeList> contiene la lista de notificaciones admitidas por la tarjeta. El elemento <SupportedClaimType>, cuyos elementos son autoexplicativos (DisplayTag y Description) describe las notificaciones individuales. El ejemplo utiliza los URI de notificación predefinidos disponibles en el conjunto autoemitido, así como los URI de notificación personalizados, como https://www.contoso.com/myuritest.

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

La dirección URL de la directiva de privacidad se encuentra en el elemento <PrivacyNotice>:

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

Glosario

  • Tarjeta administrada – Una tarjeta de información emitida por un proveedor de identidad. La tarjeta de información contiene metadatos sobre el servidor de seguridad del token y las notificaciones que admite el proveedor de identidad.

  • Proveedor de identidad - El proveedor de identidad emite las identidades digitales para los usuarios, que contienen notificaciones de datos sobre el usuario.

  • Servicio de token de seguridad (STS) - El Servicio de token de seguridad intercambia un token por otro. El STS concede un token con notificaciones basadas en la autenticación de los usuarios con el servidor. Esencialmente, el servidor que entrega información de identidad digital al usuario.

Consulte también

Otros recursos

Instalación de certificados de ejemplo de CardSpace

Footer image

Enviar comentarios sobre este tema a Microsoft.

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.