マネージ カードの作成

Download sample

マネージ カードとは、ID プロバイダによって発行される情報カードのことです。これには、以下の項目が含まれます。

  • カードを発行するエンティティに関する詳細 :

  • カード名。

  • 証明書。

  • STS (セキュリティ トークン サービス) と MEX (Metadata Exchange) のエンドポイント。

  • カードに表示されるイメージ。

  • ID プロバイダが確認する、ユーザーに関するクレームのリスト。

  • ユーザーが ID プロバイダの STS で認証を行い、情報カードに必要なクレーム値を設定する方法の詳細。この認証要因は、証明書、Kerberos トークン、自己発行カード、または場合によってユーザー名とパスワードの組み合わせという形式で設定できます。

    Noteメモ :

    CardSpace で使用するカードを作成するには、ID プロバイダで、カード データを格納する署名付きの XML ファイルを生成する必要があります。この情報カードの名前には、.CRD ファイル拡張子が付きます。

このサンプルを実行するには、Web サイトの構成が必要です。構成は、サンプル フォルダに格納されている次のインストール バッチ ファイルを使用して行います。

Setup.bat

Web サイトのインストールの詳細およびトラブルシューティングのヒントについては、「CardSpace サンプル証明書のインストール」を参照してください。

カード ライタのコンパイル

カード ライタのソース コードは、CardWriter フォルダの次のファイルにあります (C# の場合)。

ManagedCardWriter.cs

カード ライタのソース コードは、CardWriter フォルダの次のファイルにあります (VB.NET の場合)。

ManagedCardWriter.vb

Visual Studio 2005 でプロジェクト ファイル (CardWriter.csproj) を読み込んでコンパイルするか、またはサンプルを解凍した場所でコマンド ラインから msbuild を使用します。

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

これにより、カード ライタが \bin フォルダにコンパイルされ、コマンド ラインから実行できるようになります。

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

カード ライタの使用

カード ライタは .INI ファイルを入力ファイルとして使用し、.CRD ファイルを生成します。

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

出力カードは、ソースの .INI ファイルと同じディレクトリに配置されます。

CardSpace カード内のデータの理解

ソースの .INI ファイル内には複数のセクションがあり、ここに格納するデータを変更すると特定の目的のカードを生成できます。

カードの種類のサンプル

[CARD]
TYPE=UserNamePassword

カード作成ツールを使用する際、各カードで ID プロバイダの STS への認証を行うために使用できる認証の種類は 1 つです。カードの種類は、UserNamePasswordKerberosAuthSelfIssuedAuthSmartCard のいずれかになります。

カードの詳細サンプル

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

詳細セクションには 4 つの必須項目があります。

Name

ユーザーに表示されるカードの表示名。カードが ID セレクタにインポートされた後は、この名前を変更できます。

ID

カードの ID。複数のカードを同じ ID でインポートすると、古いカードを新しいカードに置き換えるかどうかを確認するメッセージが表示されます。カードは、スキーマのリビジョン間で ID の整合性を保持する必要があります。

Version

同一カードのバージョン番号は、バージョンが新しくなるたびにインクリメントされる必要があります。

Image

カードが ID セレクタにインポートされるときに、カード上に表示されるイメージ。ユーザーはこれを変更できません。

発行者の詳細サンプル

[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

発行者セクションには 4 つの必須項目があります。

Address

ID プロバイダ STS のエンドポイント URL。

MexAddress

STS の MEX エンドポイント。CardSpace では、MEX エンドポイントには HTTPS が必要です。

PrivacyPolicy

ID プロバイダのプライバシー ポリシーの場所を表す URL。

Certificate

証明書の場所。この証明書の公開キーがカード ファイルの署名に使用されます。この場所は、場所/ストアの名前/共通名 (localmachine/My/www.fabrikam.com など) という形式をとるか、または証明書と秘密キーを格納する .PFX ファイルへのパスである必要があります。.PFX ファイルがパスワードで保護されている場合、.INI ファイルにさらに CertificatePassword= 項目を追加する必要があります。

クレームの詳細サンプル

[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

クレーム セクションでは、ID プロバイダがサポートする個別のクレーム URI が示されます。標準のクレーム URI セットを使用する場合は、情報を追加する必要はありません。これに対してカスタムのクレーム URI を使用する場合は、各カスタム クレーム用のセクションが必要です。

カスタム クレーム URI の詳細サンプル

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

各カスタム クレーム URI の詳細には、作成される各クレームの表示名と説明が含まれている必要があります。これらは CardSpace ID セレクタに表示されます。

サポートされるトークンの種類のサンプル

[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

ID プロバイダは、STS によってサポートされるトークンの種類を宣言します。これらは、トークンの種類のセクションで URN として示されます。各 URN は個別の行に分けられ、フィールド名としてインデックス番号 (1、2、3 など) が付けられます。

トークンの詳細サンプル

[Token Details]
RequiresAppliesTo=false

ID プロバイダは、証明書利用者にトークンを発行するか、または証明書利用者が IDを要求する際に利用者に関する情報を求めるかを決定することができます。

資格情報

このセクションでは、資格情報のヒントとなる情報が表示され、これをカードにエンコードすることができます。認証の種類が異なると、考えられる要件も次のように異なります。

  • 自己発行カードによる認証の場合、この値はカードからの PPID クレームです。PPID クレームは、ID プロバイダに渡されるとその証明書を使用します。

    [Credentials]
         value=eiavryEeugtsZibaD0moDOiIE+106HbYhYIbst73x5A=
         Hint=Enter your username and password
    
  • ユーザー名とパスワードによる認証の場合、この値はユーザー名でユーザーに表示されます (省略可能)。

    [Credentials]
         value=FrankLee
         Hint=Enter your username and password
    
  • 証明書による認証の場合、次の 3 つの方法のいずれかで証明書を識別する必要があります。

    • 証明書のサムプリント。

    • ストア内の証明書への参照。場所/ストアの名前/共通名 (currentUser/My/FrankLee など) という形式をとります。

    • 証明書自体のハッシュ。

証明書のサンプル

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

生成されたカードの表示

.CRD 形式は、上記の情報を含む XML ドキュメントです。この形式は ID プロバイダによって使用され、格納されているすべての情報が簡潔に表現されます。さらに、カードをコレクションにインポートする場合に使用されます。

このサンプルでは、ID プロバイダが自動車クラブの会員を証明するカードを発行しており、このカードを使用すると、各種 Web サイトのサービスにアクセスしたり割引を受けられることを想定しています。

署名

.CRD ファイルのルート要素は、エンベロープ署名です。

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

これにより、一度発行されたカードは改ざんされないように保護されます。これは、署名を使用することによって実現されます。さらに、秘密キーの使用が明示されるため、カードが確実に暗号化され、本当にこの自動車クラブから発行されたことが保証されます。

2 つの X509Certificate 要素には、ID プロバイダ (自動車クラブ) の証明書と、その証明書を自動車クラブに発行した証明機関の証明書が含まれます。

署名の後ろには InformationCard という要素が付けられます。この要素にはカードの実際のメタデータが含まれます。カードの XML 要素の例を次に示します。

<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> にはカードの ID とバージョンが含まれます。これらは後続のインポート操作で使用され、カードは更新または上書きできます。

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

<CardName> には表示用のカード名が含まれます。この名前はカードのインポート後に変更できます。

<CardName>My Card</CardName>

<CardImage> には、ID プロバイダが希望の表示を実現するために選択した、base-64 エンコードのイメージが含まれます。このイメージはカード内部でエンコードされ、URL では参照されません。クライアントのリンク解決能力に依存せず、ブランドの一貫性を保つためです。

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

<Issuer> は STS の URI、つまり、マネージ カードが使用されるたびにセキュリティ トークン要求 (RST) メッセージが送信されるアドレスを表します。<IssuerName> はこれに関連付けられた表示名です。

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

<TimeIssued><TimeExpires> には、それぞれ発行操作の時刻とカードの有効期限が含まれます。カードの有効期限は、アカウントの有効期限ではなく、"このメタデータのコントラクトのサポートが終了する" 日付と見なし、STS でアカウント データとして処理する必要があります。

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

<TokenServiceList> には <TokenService> 要素のリストが含まれます。この要素は、STS メタデータを取得して安全に接続し、受信要求を認証するために使用されるデータです。

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

<EndpointReference> は、WS-Addressing エンドポイント参照です。これには STS エンドポイントも含まれます。このメタデータ セクションには、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> には、STS に関連付けられた証明書が含まれます。通常は、最初の署名で使用された証明書と同じです。

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

<UserCredential> 要素は、認証の種類によって次のように変わります。

  • 個人用カードによって認証される情報カードについては、<PrivatePersonalIdentifier> 要素が、PPID の保存に使用されます。

    <UserCredential>
                <SelfIssuedCredential>
                  <PersonalPrivateIdentifier>
                     eiavryEeugtsZibaD0moDOiIE+106HbYhYIbst73x5A=
                   </PersonalPrivateIdentifier> 
                </ SelfIssuedCredential >
              </UserCredential>
    
  • 証明書によって認証されるカードについては、要素 <X509V3Credential> がマネージ カードによって使用されます。<KeyIdentifier> 要素には、スマートカードの証明書のハッシュが含まれます。<DisplayCredentialHint> 要素は、スマートカードが表示される前にユーザーが受信するプロンプトです。

    <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> は、カードの既定のユーザー名を保持します。

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

<SupportedTokenTypeList> には、STS がサポートするトークンの種類のリストを詳細に示す、<TokenType> 要素のリストが含まれます。

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

<SupportedClaimTypeList> には、カードがサポートするクレームのリストが含まれます。単一クレームは、<SupportedClaimType> 要素によって示されます。これに含まれる要素 DisplayTagDescription の機能は、その名が示すとおりです。次の例は、自己発行セットで使用可能な定義済みのクレーム URI とカスタム クレーム URI (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>

プライバシー ポリシー URL は、<PrivacyNotice> 要素にあります。

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

用語集

  • マネージ カード - ID プロバイダによって発行される情報カードです。この情報カードには、セキュリティ トークン サーバーに関するメタデータと、ID プロバイダがサポートするクレームが含まれます。

  • ID プロバイダ - ID プロバイダはデジタル ID をユーザーに発行します。デジタル ID にはユーザーに関するデータのクレームが含まれます。

  • セキュリティ トークン サービス (STS) - セキュリティ トークン サービスは、あるトークンを別のトークンと交換します。STS は、ユーザーのサーバー認証に基づくクレーム付きのトークンを付与します。基本的には、デジタル ID 情報をユーザーに渡すサーバーです。

関連項目

その他の技術情報

CardSpace サンプル証明書のインストール

Footer image

このトピックに関するコメントを Microsoft に送信する。

Copyright © 2007 by Microsoft Corporation.All rights reserved.