web-dev-qa-db-ja.com

トークンによる認証

私はjwt.ioと認証に比較的慣れていないため、次の方法でJWT.ioを使用しています。

サーバー側

ユーザーがログインしたら、useridが埋め込まれたトークンを生成し、メッセージ本文でユーザーに返します

クライアント側ブラウザ/ JSトークンをlocalStorageに保存し、後続のリクエストごとに、トークンをヘッダーに渡します。

Authorization: Basic someEncryptedValue

私も使用しました

X-Auth-Token: someEncryptedValue

これをクッキーに入れてもいいですか?

次に、サーバー側で、トークンをシークレットに対して検証し、有効期限を確認し、トークンからIDを取得して、リクエストを処理します。

このワークフローはすべて正しいですか?

8
user2727195

ワークフローは正しく(HTTPSを使用していると想定しています)、はい、トークンを認証ヘッダーに渡すのではなく、Cookieに格納するだけで済みます。

OAuth2の使用はお勧めしません。最も単純なフローを適切に実装すると、ログインプロセスがかなり複雑になります。また、「サーバー側」のパーツはすべて同じドメインに存在するため、必要がないように見えます。

もし私だったらクッキーを使います。よく理解されたスキームに固執することで、混乱の可能性が減り、ブラウザがCookieの送信と更新を処理することを意味します(たとえば、アイドルタイムアウトでセッションを処理する方法を検討します)

1
Justin

良い読み物。トークンをローカルストレージに保存し、javascriptを介してhttpリクエストで送り返すことについて話します。

https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage

0
user2727195

すべてのブラウザーが、HTTP経由でも安全なダイジェスト認証をサポートするようになりました。正確な要件によっては、これで十分な場合があります。

0
Hugh Morris