2012-02-21 11 views
0

私はこれについて非常に混乱しており、texts/docs/SOの質問のどれも私にとって問題を解明していません。asp.net user permissions

私のasp.net MVCアプリケーションが、サーバー上のフォルダにXML文書を保存できるようにします。しかし、私は例外が発生しています...

Access to the path 'D:\blah\blah\folder\xml_data.xml' is denied. 

私のアプリケーションは、書き込み権限を持たないユーザーアカウントで実行されていることを理解しています。

私は前にこの問題があったと思うし、私の解決策は私のウェブホストに連絡して、私のサイトのアクセス許可を与えるように頼んでいた。

しかし、独自のカスタムロールセットを作成して、それに対応する権限を設定したいのですが?これらはIISに追加する必要がありますか?リストを作成してウェブホストに渡す必要がありますか?そのようなリストはどのように見えるでしょうか?私が理解しているように、web.configでロールとアクセス許可を設定することはできませんが、それは正しいのですか?

私は、ロールとその権限を設定して、アプリケーションのデフォルトロールをどのように設定するのか、そしてアプリケーションが実行されているロールをプログラム的にどのように変更するのですか?

ps。私はasp.netメンバーシップを使用したくない。これを自分で設定する方法を知りたい。

答えて

1

asp.netメンバーシップを使用してください。あなたがそれを気に入らないのであれば気にしません。これを使って。それは簡単です、それは簡単です、そして、それはセキュリティ権を得ます。あなたがそれを自分で行い、あなたが何をしているのか分からなければ、あなたはセキュリティを混乱させるでしょう。

人々はメンバーシップに悪いラップを与えます、それは良いツールです。ほとんどの人は間違った仮定をしています。

メンバーシップ/ロールAPIでロールを定義します。これはデータベースに保存されます。ユーザーがいなくてもロールを適用することはできません。メンバーシップシステムが必要です。

編集:

ここでは2種類のユーザーがあります。 1つは、ASP.NETワーカープロセスがIISで実行されるユーザーです。これは、ホストが定義しなければならないユーザーで、さまざまなフォルダーにアクセスしてファイルにアクセスできるようにします。

2番目はasp.netのIIdentityユーザーです。これはasp.netがログインしているWebユーザーのために定義したユーザーであり、これはWorkerプロセスユーザーから完全に分離されています。 IIdentityユーザーには、ワーカープロセスIDに割り当てられたもの以外の、固有のオペレーティングシステムの権利または特権がありません。

つまり、IIDentityベースのユーザーは、IISで同じワーカープロセスIDとして実行されます。

例外は、web.configで "impersonate = true"を定義する場合です。これにより、ワーカープロセスは問題のユーザーとしてOSに「ログオン」できます。つまり、ワーカープロセスはWebユーザーの資格情報として実行されます。このためには、WebユーザーもOSに資格情報を持っている必要があります。

web.configで偽装する特定のOSユーザーを指定することができます。しかし、もう一度、偽装するオペレーティングシステムのユーザーがいる必要があります。また、偽装は非常に高価な操作であり、多くのシステムリソースを必要とします。

http://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx

+0

を参照してください提案いただきありがとうございますが、私はasp.netメンバーシップなしでこれを行う方法を知るために、具体的に尋ねました。プリンシパル、アイデンティティ、役割をプログラムに設定できることはわかっています。カスタムロールと権限を作成する方法を知る必要があります。私はそれらを定義し、ホストにそれらを設定するよう依頼する必要がありますか、または自分自身を設定することはできますか?これは私が興味を持っているすべてのものです。ありがとう。 –

+0

@ FunkyFresh84 - プリンシパル、アイデンティティ、ロールは、プロセスが実行されるWindowsユーザーとは関係ありません(これは、ファイルへのアクセスで説明した問題です)。ホストにそれらのことを知らせる必要はありません。コードとデータベースに完全に定義されています。あなたのIPrincipalオブジェクトとIIDentityオブジェクトはすべてを制御します。ユーザーがファイルにアクセスする必要がある場合、WebプロセスをWindowsが許可するIDとして実行する必要があります。偽装として知られている概念がありますが、ユーザーがサーバーにアカウントを持っている場合にのみ適用されます。 –

+0

@ FunkyFresh84 - IPrincipalとIIDentityがどのように機能するかを完全に理解していない場合(あなたの質問が私にあなたを信じないように導くか、質問に対する答えを知っている)、Membership APIを使用することをお勧めします。私はこれを読むことをお勧めしますhttp://msdn.microsoft.com/en-us/library/ff649100.aspx –