10

ネットワーク共有からファイルを読み取る (場合によっては書き込む) 必要がある Web アプリケーションがあります。これを行うための最良の方法は何だろうと思っていましたか?

ネットワーク サービスまたは aspnet アカウントにネットワーク共有へのアクセス権を付与できません。なりすましが使えるかもしれません。

ネットワーク共有と Web アプリケーションは両方とも同じドメインでホストされており、特にこの目的のためにドメインに新しいユーザーを作成できますが、ファイルストリームの作成と使用する資格情報の指定の間のドットを結合する方法がよくわかりませんウェブアプリケーションで。


残念ながら、ドライブはマシン上のネットワーク ドライブとしてマップされていません。ネットワーク共有としてのみ使用できるため、透過的な呼び出しを行うことができません。

なりすましについて考えられる問題が 1 つあります。アプリケーション ドメインごとに 1 人のユーザーしか偽装できないと思いますが、修正されてうれしいです。このファイルをいくつかの異なる共有に書き込む必要があるかもしれません。つまり、複数のユーザーになりすます必要があるかもしれません。

トークンを作成するというアイデアが気に入っています...それができれば、事前にユーザーに資格情報を要求し、セキュリティを動的に適用して、アクセスが拒否された場合に意味のあるエラーメッセージを表示できます...私は遊びに行っていますが、アップデートで戻ってきます。

4

5 に答える 5

3

誰もがすでにドメイン アカウントを持っているとします。IIS 統合認証を試してください。ネットワークから見苦しいログオン ボックスが表示されますが、資格情報はファイル共有に渡されるはずです。

@lomaxx
あなただけが共有に権限を持っていると言っていますか、それとも手動でドライブ文字にマップしたと言っていますか。後者の場合、ac:\shared_folder を使用するのと同じ方法で ucn \host\share を使用できます。

ランダム 共有をホスト上のローカル フォルダにミラーリングするのは負担になりますか? ROBOCOPYはかなり便利だと聞きました。

別のアイデア。ターゲット共有で IIS を実行します。http 経由で読み取ることができます。書き込む必要がある場合は、webdav を調査します。

于 2008-08-27T01:59:39.010 に答える
0

あなたにはいくつかのオプションがあり、そのうちの 1 つは、あなたが述べたようになりすましです。ただし、私が好んで使用したことがあるもう 1 つの方法は、信頼できるサービス コールです。少しの間、IIS を介したアクセスを制限して、可能な限り穴がないようにする方が常に安全であると仮定しましょう。ということで、この道を進みましょう。

いくつかのエントリ ポイントを持つ WCF サービスを構築すると、インターフェイスは次のようになります。

public interface IDocumentService
{
    public string BuildTrustedRelationship(string privateKey);

    public byte[] ReadFile(string token, string fileName);

    public void WriteFile(string token, string fileName, byte[] file);
}

これで、Windows サービスを介してこのサービスを非常に簡単にホストできるようになりApplication_startました。サービスとの関係を構築してトークンを取得するだけで、レースに参加できます。ここでのもう 1 つの良い点は、このサービスは内部で信頼できるものであり、以前にファイル サーバーでホストしたこともあるということです。そのため、この操作にアクセス許可を付与するのははるかに簡単です。

于 2012-08-10T11:10:20.553 に答える
0

あたかもローカル ドライブであるかのように、ネットワーク共有に透過的に接続することに問題はありませんでした。唯一の問題は、あなたが言及したことですaspnet。アカウントが共有にアクセスできるようにすることです。なりすましはおそらくこれを行うための最良の方法です。

サーバー マシンにドライブ文字がある限り、任意のファイル ストリーム オブジェクトを使用してネットワーク共有にアクセスできるはずです。

于 2008-08-27T01:54:13.033 に答える
0

このシナリオでは、なりすましがうまく機能しました。Web サイトから zip ファイルをアップロードするウィザードがありましたが、サイトの負荷分散を行いました。したがって、すべてのマシンでファイルを保存する方法をセットアップする必要がありました。

それにはさまざまな方法があります。セットアップしたユーザーの下ですべての要求を実行することに決め、web.config エントリを追加して、ユーザーのフォルダーに対するセキュリティ アクセス許可をセットアップしました。このKB記事では、セットアップについて非常によく説明されています。

于 2008-08-27T01:56:45.337 に答える
0

新しい AD ユーザーを作成できる場合、最も簡単な解決策は、アプリケーション プールをその AD アカウントの権限で実行することです。これは、アプリケーションが AD ユーザーとして実行されていることを意味します。アプリケーションを実行しているマシンの IIS ワーカー プロセス グループに AD ユーザーを追加する必要があります。次に、AD ユーザーがネットワーク共有に対する書き込み権限を持っている限り、ファイル操作で UNC パスを使用できるはずです。

于 2012-08-10T12:29:41.407 に答える