2

これを理解するために何ヶ月も費やした後、私はついにあなたの助けを求めなければなりません.

シナリオ: ユーザー名とパスワードを渡す webapi メソッドへの Ajax 呼び出し。ユーザーが有効な場合、セッション ID / トークンがクライアントに返されます。このトークンは、後続のすべてのリクエストで渡されます。メソッドをさらに保護するためにタイムスタンプを使用することもできます。

私は理論を理解しています。必要なのはサンプルコードです。ユーザー名とパスワードのフィールドを含む HTML ページ。[ログイン] ボタンをクリックすると、asp.net WebAPI の rest メソッドへの Ajax 呼び出しが行われ、カスタム メンバー テーブルに対して認証されます。

すべて問題なければ、トークンをクライアントに送信します (トークンはユーザーのデバイスに保存されます)。

どんなガイダンスでも大歓迎です。

4

1 に答える 1

3

ユーザー名とパスワードのエンドポイントを開いている場合は、4.4.3で説明されているいくつかの脅威について読む必要があります。Resource Owner Password Credentials (ユーザー名とパスワードを使用する OAuth2 フロー) - これが OAuth ソリューションでなくても、アドバイスに従うことは依然として非常に重要です。これは、トランスポート レベルのセキュリティに SSL を使用するなどの基本をカバーしていますが、多くのその他の脅威と対策...

JavaScript 内でユーザーの資格情報を使用すること自体が脅威です。OAuth 2 仕様では、JavaScript を使用してセッション (access_token) を取得するための推奨されるアプローチとして、暗黙的な許可フローが説明されています。暗黙的なフローは、資格情報を JavaScript から遠ざけることを目的としています。ここにそのアプローチのウォークスルーの例があります。ただし、これには、承認サーバーをインストールするか、サードパーティのプロバイダーを使用するか、DotNetOpenAuthのようなものを使用して独自のサーバーを実装する必要があります(ここでは、いくつかの適切なシナリオはそれほど難しくありません)

しかし、OAuth 2 や暗黙的な付与フローなどを除外したと仮定すると、...

ここでは、AJAX 経由で Basic 認証を使用して Json Web Token JWTセッション トークンを返し、後続のすべてのリクエストで使用する例をオンラインに掲載しました。

私の例は基本的なものなので、トークンはメモリに保存されます。ただし、Cookie やローカル ストレージなどを使用して、トークンを Web 環境に長期間保存することができます。

私の例では、ThinktectureのIdentityModelパッケージを使用しています。

以下に他の例と詳細なウォークスルーがあります。これらは、さらなる参照とガイダンスとして確実に使用する必要があります...

私の例は、上記とこの質問から借用しています jQuery と AJAX で Basic Auth を使用するには?

ログイン フォームと API が異なるドメインにある場合は、 CORSまたは JSONP も調査する必要があります。サーバー上に安全に格納され、非表示になっているセッション署名キーをサーバーで使用してください。キーは現在、WebApiConfig.cs でハードコードされています。また、[SSL 経由である必要がある] オプションを再度有効にしてください。

PhoneGapなら

サーバーはおそらく同じですが、PhoneGap フレームワークを使用して JavaScript の一部を置き換えることができる場合があります...

于 2013-02-23T11:27:54.740 に答える