0

Web アプリケーションと ASP に関しては、私は非常に初心者です。

最近、Microsoft Sync Toolkit を使用して、OData Web サービスを介してデータベースを同期する実験を行っています。

ここでの明らかな問題は、サービスがセットアップされて公開されたら (つまり、URL を知っている人なら誰でも利用できるようになる)、許可されていないユーザーがこのサービスにアクセスするのをどのように防ぐかということです。

注意: フォーム認証の基本認証 - 私の小さな Web 開発の知識が及ぶ限り - クライアントが到達しようとしている Web ページではないため、このタスクには適切ではないようです - ページが表示できる場所/またはログオン要求をリダイレクトします。これは、ここでアクセスしているサービスです。

事態をさらに難しくするために、クライアント側の同期のために、サービスの URL のみを受け入れるサードパーティのライブラリ/同期プロバイダーを使用しています。したがって、ログイン資格情報をリクエストヘッダーなどに組み込むことを試すことはできません(私はそう思います)。

最善の策は、URL 内にログイン資格情報を埋め込み、それをサード パーティのライブラリに使用することだと思います。

サーバー上でそのようなものをセットアップする方法を教えてもらえますか? サーバー側のコードのどこかに、資格情報を確認し、それに基づいてサービス要求を続行または中止 (401 を返す) できる場所を配置したいと考えています。

そのようなコードを同期サービスにフックする場所が見つかりませんでした。MSDN の誰かが _OnBeginSyncRequest イベントを処理することを提案しましたが、そのメソッド内から Web 要求ヘッダーにアクセスする方法はありません。

リクエストヘッダーにアクセスできるどこからでもアクセスできるグローバルオブジェクトが偶然ありますか? 誰でもこれを手伝ってもらえますか?

そして最後に、単純な User / Password 文字列のペアを好みます。Windows やディレクトリ アカウントとは必ずしも関係があるとは限りません (むしろ関係ありません)。私のコードでは、if(userStr == "Authenticated user" && passwordStr == "Correct Password") などの単純な文字列に対して単純なチェックを行うことをお勧めします。

4

1 に答える 1

0

SOAP Web サービスを使用している場合は、ユーザー名とパスワードを要求ヘッダーに追加する WS-Security usernametoken を使用できます。それ以外の場合は、ユーザー名とパスワードを Web サービスのパラメーターとして追加し、サーバー側で単純に検証することができます。すなわち

それ以外の

bool SyncData(datatable)

あれは。。。になる

bool SyncData(datatable, username, password)

Web サービスについては、呼び出しごとに認証することに注意してください。セッションごとに認証する場合は、最初にユーザー名パスワードでログインする必要があり、トークンを使用してサービスを呼び出すたびにトークンを取得します。

また、SSL を使用してチャネルを保護し、ユーザー名とパスワードがプレーン テキストとして送信されないようにします。

于 2013-02-11T23:05:49.787 に答える