IIdentity および IPrincipal との統合

IIdentity と IPrincipal

ASP.NET と Windows Communication Foundation (WCF) の開発者は、ユーザーの ID 情報を操作するために、通常は IIdentity インターフェイスと IPrincipal インターフェイスを使用します。WIF では、次の図に示すように、これらのインターフェイスが拡張されます。

f602ca2a-2c34-4e0a-9009-f97dca70f278

開発者は、ユーザーの名前に従来どおりの方法でアクセスできます。 また、電子メール アドレス、年齢、住所など、ユーザーについて作成されたその他の要求にもアクセス可能です。

WIF はこの機能を Thread.CurrentPrincipal などの既存のメソッドを通じて提供します。 開発者は Thread.CurrentPrincipal を呼び出し、返された IPrincipalIClaimsPrincipal にキャストします。 前の図に示したように、IClaimsPrincipal は ID のコレクションを公開します。そのそれぞれに、サブジェクト (通常は現在のユーザー) について作成された要求のコレクションが含まれます。

要求は、Claim クラスで表されます。 このクラスの重要なプロパティを以下に示します。

  • ClaimType は要求の種類を表します。通常は URI です。 たとえば、電子メール アドレス要求は https://schemas.microsoft.com/ws/2008/06/identity/claims/email として表されます。

  • Value には要求の値が含まれ、文字列として表されます。 たとえば、電子メール アドレスは "someone@contoso.com" のように表すことができます。

  • ValueType は要求の値の型を表します。通常は URI です。 たとえば、文字列型は http://www.w3.org/2001/XMLSchema#string として表されます。

  • 値の型は、XML スキーマに準拠した QName である必要があります。 WIF が有効な QName 値を出力できるように、値は namespace#format の形式で指定する必要があります。

  • 名前空間が適切に定義されていない場合、その名前空間の XSD ファイルが公開されていないことが原因で、生成される XML をスキーマ検証できない可能性があります。

  • 既定の値の型は http://www.w3.org/2001/XMLSchema#string です。

  • 安全に使用できる一般的な値の型については、http://www.w3.org/2001/XMLSchema を参照してください。

  • Issuer は、要求を発行したセキュリティ トークン サービス (STS) の識別子です。 この識別子は、https://sts1.contoso.com/sts のように、STS の URL か、STS を示す名前で表すことができます。 詳細については、「IssuerNameRegistry」を参照してください。

  • OriginalIssuer は、要求を最初に発行した STS の識別子です。チェーンに含まれる STS の数は関係ありません。 これは Issuer と同様に表されます。

  • Subject は、調べる対象の ID を持つサブジェクトです。 これには IClaimsIdentity が含まれます。

  • Properties は、接続時に他のプロパティと共に転送されるアプリケーション固有のデータを開発者が提供できるようにするディクショナリであり、カスタム検証に使用できます。

ID の委任

IClaimsIdentity には、Actor という重要なプロパティがあります。 このプロパティにより、多層システムにおける資格情報の委任が実現されます。このシステムでは中間層がクライアントとして機能し、バックエンド サービスに対して要求を行います。 詳細については、「ID 委任のシナリオ」を参照してください。