アクセス制御機構
Windows Communication Foundation (WCF) では、複数の方法でアクセスを制御できます。ここでは、正しい機構を選択して使用できるように、さまざまな機構について簡単に説明し、各機構を使用するタイミングに関するヒントを提供します。ここでは、アクセス テクノロジを単純なものから順に示します。最も単純なのは PrincipalPermissionAttribute で、最も複雑なのは ID モデルです。
これらの機構とは別に、WCF での委任と偽装については、「WCF の委任と偽装」を参照してください。
PrincipalPermissionAttribute
PrincipalPermissionAttribute は、サービス メソッドへのアクセスを制限するために使用します。この属性をメソッドに適用して使用すると、特定の呼び出し元の ID や Windows グループまたは ASP.NET ロールでのメンバシップを要求できます。クライアントが、X.509 証明書を使用して認証された場合は、サブジェクト名と証明書のサムプリントで構成されるプライマリ ID がクライアントに割り当てられています。
サービスのユーザーが常に、サービスが実行されているものと同じ Windows ドメインのメンバである場合、サービスが実行されているコンピュータ上のリソースへのアクセスを制御するには、PrincipalPermissionAttribute を使用します。指定したアクセス レベル (なし、読み取り専用、または読み取りと書き込みなど) を持つ Windows グループを簡単に作成できます。
属性の使用詳細については、 、「方法 : PrincipalPermissionAttribute クラスでアクセスを制限する」を参照してください。ID 詳細については、 、「サービス ID と認証」を参照してください。
ASP.NET メンバシップ プロバイダ
ASP.NET の機能の 1 つに、メンバシップ プロバイダがあります。メンバシップ プロバイダは、厳密にはアクセス制御機構ではありませんが、これを使用すると、サービスのエンドポイントにアクセスできる ID のセットを制限することで、サービスへのアクセスを制御できます。メンバシップ機能には、ユーザー名/パスワードの組み合わせを設定できるデータベースが含まれています。この組み合わせによって、Web サイトのユーザーはサイトのアカウントを確立できます。ユーザーがメンバシップ プロバイダを使用するサービスにアクセスするには、自分の名前とパスワードを使用してログオンする必要があります。
![]() |
---|
WCF サービスが認証のために使用できるように、最初にこの ASP.NET 機能を使用してデータベースを設定しておく必要があります。 |
また、このメンバシップ機能を使用すると、既存の ASP.NET Web サイトにメンバシップ データベースが既にある場合に、同じユーザー名とパスワードで承認された同じユーザーがサービスを使用できるようになります。
WCF サービスでのメンバシップ プロバイダの使用詳細については、 、「方法 : ASP.NET メンバシップ プロバイダを使用する」を参照してください。
ASP.NET ロール プロバイダ
ASP.NET には、ロールを使用して承認を管理する機能もあります。ASP.NET ロール プロバイダを使用すると、開発者は、ユーザーのロールを作成し、各ユーザーを 1 つまたは複数のロールに割り当てることができます。メンバシップ プロバイダと同様に、ロールと割り当てはデータベースに格納され、ASP.NET ロール プロバイダの特定の実装によって提供されるツールを使用して設定できます。また、メンバシップ機能と同様に、WCF 開発者は、データベースの情報を使用してサービス ユーザーをロール別に承認できます。たとえば、上記の PrincipalPermissionAttribute アクセス制御機構と組み合わせてロール プロバイダを使用できます。
ASP.NET ロール プロバイダは、ASP.NET ロール プロバイダ データベースが既に存在し、同じルールとユーザー割り当てのセットを WCF サービスで利用する場合にも使用できます。
ロール プロバイダ機能の使用詳細については、 、「方法 : ASP.NET のロール プロバイダとサービスを使用する」を参照してください。
承認マネージャ
さらに、承認マネージャ (AzMan) と ASP.NET ロール プロバイダを組み合わせてクライアントを承認する機能もあります。Web サービスを ASP.NET によってホストする場合は、サービスの承認が AzMan 経由で行われるように AzMan をアプリケーションに統合できます。ASP.NET ロール マネージャは、アプリケーション ロールの管理、ロールへのユーザーの追加と削除、およびロール メンバシップのチェックを実行できるようにする API を提供しますが、指定されたタスクまたは操作の実行がユーザーに許可されているかどうかを照会する機能は提供しません。AzMan を使用すると、個々の操作を定義してタスクに結合できます。AZMan では、ロールのチェックだけでなく、ユーザーがタスクを実行できるかどうかをチェックすることもできます。ロールの割り当てとタスクの承認は、アプリケーションの外部で構成することも、アプリケーション内でプログラムによって実行することもできます。AzMan 管理 Microsoft 管理コンソール (MMC: Microsoft Management Console) スナップインにより、管理者は、ロールが実行時に実行できるタスクを変更したり、ユーザーのロール メンバシップを管理したりできます。
また、AzMan と ASP.NET ロール プロバイダは、既存の AzMan インストールに既にアクセスでき、AzMan とロール プロバイダの組み合わせの機能を使用してサービス ユーザーを承認する場合にも使用できます。
AzMan と ASP.NET ロール プロバイダ詳細については、 、https://go.microsoft.com/fwlink/?LinkId=88951 を参照してください。WCF サービスでの AzMan とロール プロバイダの使用方法詳細については、 、「方法 : ASP.NET の承認マネージャ ロール プロバイダとサービスを使用する」を参照してください。
ID モデル
ID モデルは、クライアントを承認するためのクレームとポリシーを管理できるようにする API のセットです。ID モデルを使用すると、呼び出し元がサービスに対するそれ自体の認証に使用した資格情報に含まれるすべてのクレームを調べ、それらをサービスのポリシー セットと比較し、この比較に基づいてアクセスを許可または拒否できます。
アクセスを許可する前に、微調整と、特定の条件を設定する機能が必要な場合は、ID モデルを使用します。たとえば、PrincipalPermissionAttribute を使用した場合、条件は、ユーザー ID が認証され、それが特定のロールに属するということだけになります。これに対し、ID モデルを使用すると、ドキュメントの参照を許可されるにはユーザーが 18 才以上であり、有効な運転免許証を所有している必要があることを明確に示すポリシーを作成できます。
ID モデルのクレームに基づくアクセス制御の恩恵を受けることができる例として、発行済みトークンのシナリオでフェデレーション資格情報を使用する場合が挙げられます。フェデレーションと発行済みトークン詳細については、 、「フェデレーションと発行済みトークン」を参照してください。
ID モデル詳細については、 、「ID モデルを使用したクレームと承認の管理」を参照してください。
関連項目
タスク
方法 : PrincipalPermissionAttribute クラスでアクセスを制限する
方法 : ASP.NET のロール プロバイダとサービスを使用する
方法 : ASP.NET のロール プロバイダとサービスを使用する
リファレンス
概念
方法 : ASP.NET の承認マネージャ ロール プロバイダとサービスを使用する
ID モデルを使用したクレームと承認の管理
WCF の委任と偽装