2013-04-14 11 views
7

私はCSVファイルを使用して会社の構造をアップロードすることができるasp.net mvcアプリケーションを持っています。 PowerShellでCSVを作成するのは簡単ですが、asp.netにアップロードする方法はわかりません。ファイル形式powershellをasp.netにアップロード

私の最初の選択はWebClientを使用することでしたが、私は認証に問題があります - mvcではフォーム認証を使用しています。hereは可能ですが、ログインフォームが変更された場合は、 。私はクライアント側でmangeコードを省略したいと思います。

2番目のオプションは、別のコントローラをクレートして認証トークンを使用することですが、認証を担当するすべてのコードを記述する必要があるため、「ホイールを再度作成する」のように見えます。

上記のいずれかのオプションを改善することはできますか?それとももっと良い選択肢がありますか?

+0

企業のどの人物がファイルをアップロードしたのか知る必要がありますか?そうでない場合は、単にhttps Web APIを作成し、単純な「apikey」を使用しないでください。それぞれの会社に、「apikey」と残りのAPIリンクを持つスクリプトを提供してください。 –

+0

セキュリティ上の理由から私は「はい」と考えています。私は誰のためにもキーを考えていましたが、良いアイデアかどうかはわかりません –

答えて

0

サイドチャネルの使用はどうですか?

2つのアプローチがあります。毎回顧客のWebサーバーに送信するか、Webサーバーがユーザーからデータをダウンロードします。

データを送信するために、FTP over SSLは十分なセキュリティが必要です。 PowershellでFTPにコマンドを出す方法についてはexampleです。 IIS用に構成するFTP/SSLはeasy enoughです。

データを受信するには、自分のWebサイトにCSVを公開してください。 CSVを毎回ダウンロードするスクリプトを顧客のWebサーバーに設定します。 CSVに顧客以外の誰もアクセスできないようにするには、client certificateが必要です。

+0

しかし、私はこれ以外の方法が必要です。クライアントは会社の構造でCSVを生成し、それを自分のサーバーにアップロードします。 –

+0

?役割を逆転させるだけですか? – vonPryz

+0

その会社がファイルをFTPにアップロードしたことをどのようにして知ることができますか? Morover私はすべての会社の証明書を作成し、会社ごとにフォルダを作成するなど、管理が難しいでしょう。 –

0

私はおそらく、このようにそれを行うだろう:

  • ステップ1:CSV
  • ステップ2受信するasp.netサーバー上のHTTPS Webページを作成します。カールを呼び出すPowerShellスクリプトを作成し-Fオプションを使用してファイルを投稿し、必要なすべてのメタデータを電話に追加する
  • ステップ3:ファイルを受信すると、フォームに提供されたメタデータを使用して保存し、clientid/date/etcをファイル
  • に追加します
+0

問題は認証にあります。 HTTPは唯一のプロトコルです –

+0

私はそれを読んでいない悪い、あなたはいつでもログインフォームに提出し、後でリクエストに追加することができますので、揮発性のvar名が必要な場合は、クライアントは事前に設定ファイルをダウンロードします。 – RuntimeError

1

Invoke-RestMethodコマンドレットを使用して既存のWebサービスを使用することはできますが、別々の呼び出しを2回実行する可能性があります。どちらの呼び出しでも、おそらく-Method Postと言う必要があります。これをWebClientですべて行うことは可能ですが、コマンドレットを記述する方が簡単かもしれません。私は実際にこれを試していないが、それはこのようなものになります:最初の呼び出しのために

Invoke-RestMethod -Method Post $loginPage -SessionVariable webSession -Body "..." 
Invoke-RestMethod -Method Post $uploadPage -WebSession $webSession -Body "..." 

を、あなたは、ログインページのURLを指定して、ユーザ名とパスワードを入力してログインし、Webフォームをシミュレートします-Bodyパーメーターで、-SessionVariableを使用して、次の要求が認証されるためのコンテキストを取得して格納します。

2番目のリクエストでは、データアップロードURL、-WebSessionパラメータを使用して最初のリクエストで確立されたコンテキストを提供し、-Bodyを使用してCSVをアップロードします。 2番目の変数にはwebSession変数にドル記号が必要ですが、1番目の変数は必要ではありません。

もちろん、オートメーションがどこかで使用するためのユーザー名とパスワードを保存する必要がありますが、これは常に無人自動化に必要です。これを軽減するための可能な滑らかなアプローチは、Webフォーム認証ではなく、クライアント証明書ベースの認証情報を使用することです。

+0

私はこの解決策を試みます。アイデア+1 –

関連する問題