2012-02-22 8 views
0

私は、セッション配列変数にユーザー名を設定するシングルサインオンモジュールを介して、ほとんどのページにすべての認証済みユーザーがアクセスできるASP.NETアプリケーションを用意しています。今、私は1つのページB.aspxとこのページB.aspxにアクセスすることが許可されているユーザー名のリストを含む1つのフォルダを持っています。ASP.NETシングルページ認証

私の質問:この1つのページ以上で、この1つのフォルダに対してこれらのユーザーだけをうまく認証するにはどうすればよいですか。フォルダA内のWeb.configファイル内のlocationタグを使って行うことはできますか?もしそうなら、セッション変数に保存されているユーザー名がそのフォルダまたはページに対して許可されているかどうかを確認するために、その設定をカスタムコードにどのように接続すればよいですか?カスタムメンバーシップ提供者を使用できますか?

ありがとうございます!

答えて

0

最初に、セッションクッキーのユーザー名はこれを処理するための良い方法ではないので、kludgedセキュリティ方法を廃止します。さて、あなたには安全性が低いかもしれないので、あまりにも船外に出るかもしれません。その場合は、ユーザー名を調べて更新可能なリストと比較するページ用のカスタムハンドラーを作成できます。

NEW:セッショントークンが送信され、名前がセッションで保持されるため、セッションオブジェクトを使用するとセキュリティが少し強化されますが、メンバシップビット(下記)は、あなたのカスタム "このユーザーはこのセッションを使用しています"方法論を使用しています。ええ、究極的には、マイクロソフトがあなたのソフトウェアに似た何かをしていると主張することはできますが、メンテナンスはそれらに任せています。

私の本来の方向性に戻ると、ASP.NETに組み込まれている役割とメンバーシップという概念があります。これらのビットを使用する場合は、セキュリティ制約のある新しいweb.configを設定することで、特定のユーザー(良好ではない)またはロール(より良い)にページをセキュリティで保護することができます。

ビルドされたものについてのクールなことは、宣言的にセキュリティを設定し、ユーザーが重大な持ち上げをせずに有効かどうかをパイプラインで判断できることです。

さまざまなASP.NET指向のサイトのメンバシップとロールに関する多くの情報があります。

+0

申し訳ありませんが、私はセッションクッキーを意味するのではなく、サーバー側のセッションオブジェクトです。また、私が見つけたすべてのオンラインドキュメントは、認証のためにフォームを使用していました。私の認証はすでに外部モジュールによって処理されているので、このサイトの私のポストはソリューションを探しています... – Chris

+0

それは私の悪かったです。ビットを追加しました。 「価格」が.NETのように$ 0であっても、買物とビルドのコアコンセプトはまだ残っています(ビールのように自由であるか、スピーチのようにフリーであるかを後で判断することができます;-))。セッション変数の問題は、セキュリティビットを自分で制御する必要があることです。正しく行われていないと、あなたはハードコーディングに終わります。もう一つは、メンバーシップに組み込まれている間に、ページフォルダの特定の設定を自分で処理することは難しくなります。サイトマップを使用するとメニューをトリミングできるため、権限のないユーザーはメニューにオプションが表示されません。そして、あなたはそのコードを書く必要はありません。 –

0

これは、カンマで区切ってディレクトリにアクセスできるユーザーの名前を指定することで実現できます。

+1

<ロケーションパス= "パス名"> <承認>

+0

おかげNudier <ユーザーは= "マタイ、サラ" 許可/>。私はすでにそれを得ていた。私は、この情報がサーバーのセッションオブジェクトに格納されているので、現在のユーザーがリスト内の名前の1つであるかどうかを判断する仕組みを制御する方法を検討しています。 – Chris

0

ユーザー名が解除されていないといくつかのセッション変数で定義されているweb.configで罰金を科せられます。これにはフォーム認証チケットを作成する必要があります。

FormsAuthenticationSupport formsAuthenticationSupport = new FormsAuthenticationSupport(); 
formsAuthenticationSupport.SignIn(UsernameInSession, RoleName, true); 

ここで、UsernameInSessionのweb.configに認証ルールとロケーションタグを設定できます。