インターネット経由でダウンロードした Silverlight アプリによって消費される wcf サービスを作成する必要があります。基本的に、ユーザーは Windows ドメインの一部ではありませんが、資格情報とロールはデータベースに保持されます。
- wcf サービスはインターネット対応である必要がありますが、匿名でメソッドにアクセスすることはできません。
- 承認もサポートする必要があります\
- ユーザー テーブルとロール テーブルが ASP.NET メンバーシップ スキーマに従っていない
- 開発者は、IIS をインストールして証明書を構成する必要はありません。
- 許可されたユーザーは、関連する情報のみにアクセスできる必要があります。関連会社は削除または更新できますが、他の会社は削除できません。
1と2を達成するために、以下のリンクをたどりました。
ポイント 3 をカバーするために、MembershipProvider クラスと RoleProvider クラスのカスタム実装を提供し、ValidateUser メソッドと IsUserInRole メソッドをそれぞれオーバーライドして、独自のスキーマ ユーザーとロール テーブルから取得しました。
これまでのところ、優れた認証と承認はうまく機能しています。
問題は、開発者が IIS をインストールして証明書を構成できないため、開発モードでこれを無効にする必要があることです。したがって、開発モードまたは運用をチェックし、カスタム IPermission または PrincipalPermission を使用するカスタム CodeAccessSecurityAttribute クラスを実装しました。
[質問 1] 私の質問は、人々がこのアプローチを推奨している場所はどこにもないということです。そのため、これが正しいアプローチなのか、それともこの状況を処理するためのより良いアプローチなのかを少し心配しています。
[質問 2] 最後にポイント 5 に関連して、何らかのトークンを送信する必要がありますか? これに最適なアプローチは何ですか?
[質問 3] Robbin Cremers メソッドのパフォーマンスへの影響。サービス呼び出しごとに、認証と承認のために "ValidateUser" と "IsUserInRole" で 2 つの追加のデータベース呼び出しが行われるためです。より良い方法はありますか?
大きな質問で申し訳ありません。