11

ClickOnce でデプロイされたアプリケーションをパスワードで保護するにはどうすればよいですか? Web の IIS 設定を変更する必要がありますか、またはプログラムで変更する方法はありますか? Visual Studio 2005 (.NET 2.0) を使用しています。

Web 認証情報を使用する必要がある場合でも、アプリケーションの自動更新は可能ですか?

IIS を管理するためのサンプル コードまたは詳細な手順を提供していただければ幸いです。

ありがとうございました!

4

4 に答える 4

12

このMSDNの記事で自分で考えられる解決策を見つけました:ClickOnceの展開とセキュリティ

ASP.NETフォームベースの認証

各ユーザーがアクセスできる配置を制御する場合は、Webサーバーに配置されたClickOnceアプリケーションへの匿名アクセスを有効にしないでください。むしろ、ユーザーのIDに基づいて(Windows NT認証を使用して)インストールした展開にユーザーがアクセスできるようにします。

Windows NT認証のない環境に展開する場合、解決策は、ASP.NETフォームベースの認証を使用してユーザーを認証することです。ただし、ClickOnceは永続的なCookieを使用するため、フォームベースの認証をサポートしていません。これらはInternetExplorerのキャッシュに存在し、ハッキングされる可能性があるため、セキュリティ上のリスクがあります。したがって、ClickOnceアプリケーションを展開している場合、WindowsNT認証以外の認証シナリオはサポートされていません。

引数の受け渡し

ClickOnceアプリケーションに引数を渡す必要がある場合は、セキュリティに関する追加の考慮事項が発生します。ClickOnceを使用すると、開発者はWeb上に展開されたアプリケーションにクエリ文字列を提供できます。クエリ文字列は、アプリケーションの起動に使用されるURLの最後にある一連の名前と値のペアの形式を取ります。

http://servername.adatum.com/WindowsApp1.application?username=joeuser

デフォルトでは、クエリ文字列引数は無効になっています。それらを有効にするには、属性trustUrlParametersをアプリケーションのデプロイメントマニフェストで設定する必要があります。この値は、VisualStudioおよびMageUI.exeから設定できます。クエリ文字列の受け渡しを有効にする方法の詳細な手順については、「方法:ClickOnceアプリケーションでクエリ文字列情報を取得する」を参照してください。

クエリ文字列を介して取得した引数を、安全であることを確認するために引数をチェックせずに、データベースまたはコマンドラインに渡さないでください。安全でない引数とは、悪意のあるユーザーがアプリケーションを操作して任意のコマンドを実行できるようにするデータベースまたはコマンドラインのエスケープ文字を含む引数です。

注:クエリ文字列引数は、起動時にClickOnceアプリケーションに引数を渡す唯一の方法です。コマンドラインからClickOnceアプリケーションに引数を渡すことはできません。

于 2008-10-18T14:26:12.833 に答える
1

それができるかどうかはわかりません。私は間違っているかもしれませんが、それがうまくいくとは思いませんでした。ユーザーが .application を取得するために資格情報を入力したとしても、ランタイムは別のダウンロードを実行しますが、これには匿名アクセスが必要です。

クライアントを非常に保護したい場合は、別の展開方法を考え出す必要があるかもしれません。

于 2008-10-12T13:05:16.103 に答える
1

私が今まで見た唯一の解決策はここにあります: Click Once Forms Auth

アプリケーションを保護しようとしているときに、同じ問題に遭遇しました。上記のソリューションの問題点の 1 つは、Cookie 情報が URL に含まれていることです。つまり、誰かが理論的に URL を傍受した場合、その URL を使用してアプリケーションをダウンロードすることもできます。それ以外は、実行可能なソリューションのようです。

于 2010-05-26T20:06:41.933 に答える
0

ClickOnceインストーラーは、Webサーバー上にあるいくつかのインストーラーファイルですよね?したがって、これらのファイルにある種のディレクトリセキュリティを実装することができます。あなたは私が信じるいくつかの異なるレベルでこれを行うことができます。たとえば、IISアクセス許可または(ユーザーがドメインにいる場合)NTFSアクセス許可。

また、IISのアクセス許可(実際にはすべて?)をプログラムで設定できる必要があります。

于 2008-10-13T06:30:13.063 に答える