複数のセキュリティトークンサービス(STS)でWindows Identity Foundation(WIF)を使用する場合、ユーザーが最初にアプリケーションにアクセスする前にプロビジョニングすることはできますか?
たとえば、ユーザーがログインして質問に答えることができるBufferOverrunというWebサイトがあり、外部のGoogleアカウントでの認証をサポートしたいとします。ユーザーが最初にページにアクセスするときは、Googleアカウントで認証する必要があります。その後、ユーザーはWebアプリケーションにアクセスできます。このシナリオでは、Google(ID認証用)とアプリケーション用(承認用)の2つのSTSがあります。
ユーザーがシステムにアクセスする前に、クレームをユーザーに割り当てるにはどうすればよいですか?
IDはアプリケーションの外部で所有されているため、そのIDに直接クレームを割り当てることはできません(アプリケーション固有であるため、とにかく割り当てたくありません)。しかし、ユーザーがシステムにアクセスしていないため、クレームを割り当てるための内部IDがありません。私は2つの可能な解決策を見ます:
- ユーザーがシステムにアクセスするのを待ってから(デフォルトのアプリケーション固有のクレームを作成します)、内部プロビジョニングツールを使用して、必要に応じてそれらのクレームを変更します。
- プロビジョニングツールを使用して、ユーザーがデフォルトのIDクレーム(電子メールアドレスなど)を手動でマッピングしてから、IDを手動で入力して認証できるようにします。これにより、最初のアクセス時にIDがそのクレームを表明した場合に、特定のアプリケーションクレームのセットが付与されます。 。
1と2の両方にいくつかの問題があります。1の場合、デフォルトのアプリケーションクレームで機能が許可されていない場合でも、すべてのユーザーがシステムに暗黙的にアクセスできます。これは、最初のアカウントに特定の権限が設定されているstackoverflowのようなものに適しているようで、ユーザーがシステムを使用すると、新しいクレームが付与されます。ただし、これはすべてのアプリケーションにとって望ましいとは限りません。2は、管理者が手動でクレームを指定する必要があるため、エラーが発生しやすくなります。
上記のどちらの場合も、プロビジョニングツール(つまり、管理者アカウント)を実際に使用するためのアクセス権を持つIDをプロビジョニングするにはどうすればよいですか?
このため、アプリケーションのインストール時に、ユーザーが認証を行い、そのIDのアプリケーションクレームを「管理」特権を持つように設定する必要があると思います。これは良い実装ですか?
歴史的に(私は現在、既存のアプリケーションを参照しています)、アプリケーションは特にActiveDirectoryとのみインターフェイスしていました。これを処理する方法は、管理者ユーザーが最初にログインできるようにする組み込みの管理者アカウント(ADとは関係ありません)があったことでした。管理アプリケーションで認証した後、そのユーザーはADでユーザー/グループを検索し、それらを個別にプロビジョニングできます。管理者によってプロビジョニングされていないユーザー/グループは、システムにまったくアクセスできません。このパラダイムがGoogleなどの外部STSの使用に適用できるとは思わないので、外部STSシステムを有効にするアーキテクチャを考えようとしています。必須ではありませんが、STSを検索する機能を保持することが望まれます。実際には、関係する2つのSTSは、両方ともフェデレーションサービスを使用するActiveDirectoryである可能性があります。
注:これは、この質問とこの質問に似ています。