2011-12-08 5 views
1

私はイントラネットアプリケーションを持っています。これはインターネットからもクライアントからアクセスできます。私がする必要があるのは、クレデンシャルを入力してADに対して検証するためのログインフォームをインターネットからアクセスするユーザーに提供することです。イントラネットからこのアプリにアクセスするユーザーは、自動的にログインする必要があります。ASP.NET MVCとWCF認証/認証(SQLサーバー内のプロファイルを持つActive Directoryに対する)

私は、ASP.NETプロジェクトで2つの認証タイプを混在させることはできません。ですから、私はActiveDirectoryMembershipProviderでFormsAuthenticationを使用してユーザーを認証する必要があります。しかし、プロフィールはどうですか?ユーザーのグループに基づいてプロファイルを選択する必要があります(マネージャーテーブルのマネージャーの負荷プロファイル、顧客の場合は顧客表のマネージャーの場合)。

第2の問題は、認証された人の資格情報を使用してWCFサービスにアクセスする必要があることです。グループメンバーシップに基づいて、彼らができること/できないことを決定します。

これを行うには正しいFormsAuthenticationを使用していますか、別の場所を探す必要がありますか?

私はEFコードファーストアプローチを使用してデータベースを作成します。サービスはWCFサービスとして実装されています。アプリケーション自体はASP.NET MVCサイトです。しかし、これまでのところ私はWP7クライアントが必要になります。

答えて

1

私たちには同様の要件があり、私たちがアプローチした方法は、認証とプロファイル管理を自分で実装し、ユーザーが認証されるとFormsAuthenticationをサイトセキュリティに使用することでした。

ユーザー名とパスワードが提供されるシナリオ(ログインフォーム、wcfクライアント)では、LogonUserメソッドを呼び出すことができます。ユーザーが認証されると、FormsAuthenticationで認証されたユーザー名を使用できます。

手動ログインをサポートするには、メインサイトで匿名認証を利用できるようにする必要があるため、ユーザーが自動的にサインオンするシナリオはやや複雑になります。

これを解決する方法は、別のWebアプリケーションをメインアプリケーションのサブディレクトリとして追加し、このサブアプリケーションをWindows認証のみをサポートするように構成することでした。このポータルが内部ユーザーにヒットすると、Request.ServerVariables( "logon_user")からADログインが取得され、5秒間良好なトークンで暗号化された後、Response.Redirect暗号化されたネットワークを使用してメインアプリケーションにリダイレクトされますクエリ文字列にログインします。

メインアプリケーションがこのパラメータをクエリ文字列内に表示すると、そのアプリケーションは復号化され、許容される時間間隔内であることを確認した後、この資格情報を使用してFormsAuthenticationを使用してユーザーを記録します実際にはコードよりも多くの領域が必要です)。

うまくいけば、これはあなたにいくつかのアイデアを与えるでしょう。

関連する問題