1

私はいくつかの単純な REST Web サービスを作成して、他のアプリケーション (インターネットに面していない内部のすべて) で使用することを計画しています。特定の理由により、アプリケーションは SSO (Windows、NTLM など) で動作する必要があります。私が抱えている問題は、Web サービスで認証を行う方法です。

Web サービスを呼び出すアプリケーションはユーザーのパスワードを認識していないため、ユーザーがログインせずに REST に対して認証する方法がわかりません。例えば。基本認証を避ける

ユーザーにとってシンプルで、アプリケーションでパスワードを処理する必要がないため、ログインを避けたいと思います。私のオプションは何ですか?明らかな何かが欠けていますか?

これは解決策でしょうか: トークンを作成し、それをサービスに渡し、データベースに保存します。Web サービスは、トークンがデータベースに存在するかどうかをチェックします。(期限切れ扱い?)

4

1 に答える 1

1

この問題に対する最も一般的な解決策は、あなたが述べたように、単純なキーまたはトークン ベースの認証です。これは、多くの Google サービス (地図など) がどのように機能するかです。サービス プロバイダーでコンシューマごとにキーを生成し、それをデータベースに保存して、すべての呼び出しが有効なキーを渡すことを検証するだけです。

より高度なオプションは、HMACまたはOAuth認証です。あなたの状況、つまりイントラネット内でのみサービスを提供することを考えると、シンプルに保ち、単一のキー認証を使用することをお勧めします。

上記のシナリオでは、有効期限を処理する必要はありません。それにもかかわらず、それを実装したい場合は、

  • クライアント要求ごとに、サーバーでタイムスタンプ ベースのトークンを生成します。
  • リクエストへの返信には、このトークンも含めてください
  • クライアントは、後続のリクエストで静的 API キーと動的トークンの両方を使用する必要があります
  • サーバーはトークンの有効期間を確認し、必要に応じてリクエストを受け入れ/拒否する必要があります。
于 2012-04-25T06:48:17.080 に答える