2017-10-13 5 views
0

私はアプリケーションでAWS Cognitoを使用してユーザーを認証しています。 AWSはJWTトークンを提供します。私の質問は、セッション管理のためにexpress-sessionを使用する必要があるか、AWS Cognitoが提供するJWTトークンが認証されたユーザーのセッション管理を担当するかどうかです。セッション管理のためのExpress-Session上のAWS Cognitoの使用

+0

「認証されたユーザーのセッション管理」とはどういう意味ですか?後続のリクエストを高速化するために、認証されたアイデンティティを一時的にキャッシュしますか?または、あなたはステートフルなJWTを指していますか? – Asanka

答えて

-1

Cognito JWTトークンを使用する場合、明示的なセッションハンドラは必要ありません。

JWTトークンをクライアント側に送信し、状態の永続性を提供するWebブラウザ(ローカルストレージ、セッションストレージまたはCookie)に格納することができます(セッションはActsをセッションとして有効にし、トークン期間)。

その後のすべてのリクエストについては、承認ヘッダのJWTをエクスプレスサーバに送り返す必要があります。

これは、統合された状態管理を実装できるモバイルアプリケーションなどのWebブラウザ以外のクライアントがAPIを使用する場合のセッションよりも利点があります。

高度なセキュリティが必要なアプリケーションの場合、LocalStorageにIDトークンを格納するリスクを最小限に抑えるには、更新トークンを使用してトークン期間を小さくし、新しいトークンを生成します。

注:Cognito Hosted UIを使用する場合は、Cognito Autorization code grant flowを使用してリフレッシュトークンを取得する必要があります。

+0

私は、JWTをWebブラウザに公開してセッションに使用すると、セッションのハイジャックのために物事を開くので危険であると主張します。私は認証とセッション管理を混同しないことを勧めます。 – galaxy

+0

@galaxyこれは基本的に主観的な意見を追加する終わりのない話題です。私は答える前に小切手をしました。私は、私が提供した答えに向けて、そして反対に、2つの異なる参考文献(25以上を読むこと)を指摘することができます。今後の方向 - https://auth0.com/blog/cookies-vs-tokens-definitive-guide/およびhttp://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt- for-sessions /エンタープライズクライアントのアプローチを評価しなければならなかったので、セキュリティ専門家にもこのトピックに相談しました。必要に応じて私はさらに詳しい情報を共有することができます。詳細については、更新された回答を確認してください。 – Ashan

+0

あなたのセカンドリンクは実際にはトピック上の唯一のものであり、*認証*とセッションのメンテナンスの区別を実際に理解している誰かによって書かれたものです。 Auth0のものは、認証プロセスをセッション管理と混同し、すべての問題がその混乱から来ているのが奇妙です。セッションでは、認証されているかどうかは気にしません。定義済みの状態(実際にはエンティティが認証された属性を格納できる)を継承することになっています。 – galaxy

関連する問題