1

複数のセキュリティトークンサービス(STS)でWindows Identity Foundation(WIF)を使用する場合、ユーザーが最初にアプリケーションにアクセスする前にプロビジョニングすることはできますか?

たとえば、ユーザーがログインして質問に答えることができるBufferOverrunというWebサイトがあり、外部のGoogleアカウントでの認証をサポートしたいとします。ユーザーが最初にページにアクセスするときは、Googleアカウントで認証する必要があります。その後、ユーザーはWebアプリケーションにアクセスできます。このシナリオでは、Google(ID認証用)とアプリケーション用(承認用)の2つのSTSがあります。

ユーザーがシステムにアクセスする前に、クレームをユーザーに割り当てるにはどうすればよいですか?

IDはアプリケーションの外部で所有されているため、そのIDに直接クレームを割り当てることはできません(アプリケーション固有であるため、とにかく割り当てたくありません)。しかし、ユーザーがシステムにアクセスしていないため、クレームを割り当てるための内部IDがありません。私は2つの可能な解決策を見ます:

  1. ユーザーがシステムにアクセスするのを待ってから(デフォルトのアプリケーション固有のクレームを作成します)、内部プロビジョニングツールを使用して、必要に応じてそれらのクレームを変更します。
  2. プロビジョニングツールを使用して、ユーザーがデフォルトのIDクレーム(電子メールアドレスなど)を手動でマッピングしてから、IDを手動で入力して認証できるようにします。これにより、最初のアクセス時にIDがそのクレームを表明した場合に、特定のアプリケーションクレームのセットが付与されます。 。

1と2の両方にいくつかの問題があります。1の場合、デフォルトのアプリケーションクレームで機能が許可されていない場合でも、すべてのユーザーがシステムに暗黙的にアクセスできます。これは、最初のアカウントに特定の権限が設定されているstackoverflowのようなものに適しているようで、ユーザーがシステムを使用すると、新しいクレームが付与されます。ただし、これはすべてのアプリケーションにとって望ましいとは限りません。2は、管理者が手動でクレームを指定する必要があるため、エラーが発生しやすくなります。

上記のどちらの場合も、プロビジョニングツール(つまり、管理者アカウント)を実際に使用するためのアクセス権を持つIDをプロビジョニングするにはどうすればよいですか?

このため、アプリケーションのインストール時に、ユーザーが認証を行い、そのIDのアプリケーションクレームを「管理」特権を持つように設定する必要があると思います。これは良い実装ですか?

歴史的に(私は現在、既存のアプリケーションを参照しています)、アプリケーションは特にActiveDirectoryとのみインターフェイスしていました。これを処理する方法は、管理者ユーザーが最初にログインできるようにする組み込みの管理者アカウント(ADとは関係ありません)があったことでした。管理アプリケーションで認証した後、そのユーザーはADでユーザー/グループを検索し、それらを個別にプロビジョニングできます。管理者によってプロビジョニングされていないユーザー/グループは、システムにまったくアクセスできません。このパラダイムがGoogleなどの外部STSの使用に適用できるとは思わないので、外部STSシステムを有効にするアーキテクチャを考えようとしています。必須ではありませんが、STSを検索する機能を保持することが望まれます。実際には、関係する2つのSTSは、両方ともフェデレーションサービスを使用するActiveDirectoryである可能性があります。

注:これは、この質問この質問に似ています。

4

1 に答える 1

2

Windows Identity Foundation (WIF) を複数のセキュリティ トークン サービス (STS) と共に使用する場合、ユーザーが最初にアプリケーションにアクセスする前にユーザーをプロビジョニングすることはできますか?

ユーザーを特定する方法 (たとえば、電子メール) があれば、答えは「はい」です。

このシナリオでは、Google (ID 認証用) とアプリケーション用のカスタム (承認用) の 2 つの STS があります。

これは頻繁に使用されますが、常にそうであるとは限りません。Google だけに頼る場合は、アプリ自体に認証コードを含めるだけで済みます (「AuthorizationManager」クラスなど)。別の STS の価値は、複数の ID (Google、LiveID、Yahoo! など) のブローカーになり、承認関連の変換実行できることです。

ID はアプリケーションの外部で所有されているため、クレームをその ID に直接割り当てることはできません (アプリケーション固有であるため、いずれにしてもそうしたくありません)。

なぜだめですか?次のルールを定義できます。

「Google で認証された人は誰でも、App BufferOverrun の「リーダー」です」. 次のように言うこともできます。

誰かがアプリにアクセスする前に、「someone@gmail.com は BufferOverrun の「リーダー」です。

元のアプローチ (セットアップ用の帯域外管理者アカウント) を引き続き使用できます。または、プロビジョニング中に構成を「ブートストラップ」して、管理者ユーザーを識別するクレームを定義することもできます。

http://claimsid.codeplex.comのサンプル「Federation with Multiple Partners and ACS」(サンプル 7) を参照してください 。

于 2011-05-10T16:32:17.773 に答える