3

私はMVC用のOAuth2.0を使用しています。これは次の場所にあります。

http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for-mvc-two-legged-implementation.aspx#comments(これはいくつかへのリンクですプロジェクトのダウンロードへのリンクがある簡単なドキュメント)。

フローがどのように機能するかを理解しようとしています。次のようになります。

  1. RequestTokenコントローラーメソッドからRequestTokenを取得します
  2. 次に、コントローラーは要求トークンをOAuthServiceBase.Instance.AccessTokenに渡します。これは、抽象OAuthServiceBaseクラスを継承するDemoServiceクラスに移動することになります。このメソッドは、ソルトのRequestTokenを使用してユーザー名をハッシュし、それをパスワードと比較します(これも、RequestTokenでハッシュおよびソルトされています)。それらが一致する場合、AccessTokenを発行します。これはサンプルロジックです。実際のアプリケーションでは、ユーザーの資格情報を取得することになっているというメモがここにあります。

これにより、次の点でかなり混乱したように感じます。

  1. RequestTokenの目的がわかりません。RequestTokenは5分後に期限切れになります。そのため、サンプルロジックでは、ユーザー名とパスワードのハッシュをソルトしていますが、ユーザーのハッシュされたパスワードをソルトする方法はわかりません。
  2. 上記にかかわらず、このアプリにはパスワードハッシュをソルトするメカニズムはありません。私は何かが足りないのですか?ソルトをクライアント側に永続的に保存したくないので、暗号化されていないパスワードをデータベースに保存する必要はありませんか?永続的なソルトがある場合は、ハッシュ化されたソルト化されたパスワードをデータベースに保存し、ソルトをクライアント側に保存してから、ハッシュ化されたパスワードを認証に渡すことができます。

おそらくお分かりのように、私は一般的に認証コードを書くのは初めてです。私はここで何かが欠けていることを知っています、私はそれが何であるかを知らないだけです:)

4

1 に答える 1

3

Oauthは、プログラムにサードパーティのアクセス権を与えるために使用されます。主にで使用されapi'sます。

RequestTokenは、ユーザー名やパスワードなどをソルトするために使用しないでください。Webサービスと通信するときに使用するOauthからRequestTokenを取得します。リクエストトークンの期間は5分で、その後は新しいトークンをリクエストする必要があります。

RequestTokenを使用することの主な利点は、関心の分離です。写真では、OAuth2認証サーバーのみがユーザー名とパスワードを知っている必要があります。Google UserInfo Serviceは、特定のアクションの有効なトークンのセットを認識しています。この場合、アカウント情報を要求します。

Googleのoauth実装からこの画像を確認してください。これですべてが明らかになることを願っています。

ここに画像の説明を入力してください

于 2012-10-25T10:24:14.997 に答える