2017-09-18 1 views
0

私はAngularシングルページアプリケーションを作成しています.OAUTH 2.0でJWT(JSON Webトークン)を使用したいと考えています。私はベストプラクティスを読んでいて、OAuth 0の記事を見つけました。それはそれを助けるべきですhttps://auth0.com/docs/api-auth/which-oauth-flow-to-useSPAとリフレッシュトークン

私のアプリは、ユーザーにログインして60日間ログオンできるようにする必要があります。ブラウザに60日間アクセストークンを保存することはあまり安全ではなく、短命にすることをお勧めします。だから私はRefresh Tokenを使って、HttpOnly Secure Cookieに保存してクライアントサイドのJavascriptからの読み込みを許可しないようにしていましたが、このauth0の記事では、これは非常に安全ではないとSPAはリフレッシュトークンを使用すべきではないと言います。方法?私のauth APIコード交換エンドポイントがJSONレスポンスでaccess_tokenを返すが、HttpOnlyクッキーでrefresh_tokenを返すとどうなるでしょうか?この方法では、認証バックエンドAPIに格納されるため、システムの秘密鍵を公開する必要はありません。

誰かがさらに情報を提供して、HttpOnly Secure Cookieに更新トークンを保存するのが安全かどうかを伝えることができますか?

答えて

2

SPAアプリケーションはOAuth2暗黙フローを使用し、パブリッククライアントアプリケーションはシステムパスワードを安全に保存できないため、このフローのリフレッシュトークンはありません。 OpenID Connectの暗黙のフローを実装し、JWTトークンをローカルストレージに格納することをお勧めします。このトークンはより安全で他のアプリケーションでは使用できません。機密情報を保護するためにトークンを暗号化することもできます。詳細については、https://www.linkedin.com/pulse/microservices-security-openid-connect-manish-singh

+0

しかし、私のコード交換エンドポイントがJSONレスポンスでアクセストークンを返しても、HttpOnlyクッキーのトークンを更新するとどうなりますか?バックエンド認証APIに格納されているので、システムパスワードを公開する必要はありません。 –

+0

安全なCookieレスポンスにリフレッシュトークンを設定するために、APIゲートウェイなどを使用しているようです。 httpのみのクッキーにRTを格納することは、セキュリティの観点から安全です。しかし、RTを使用してJSONレスポンスでATを取得し、他のセキュリティを使用していない場合は、実装がCSRF攻撃を受けやすいと思う。 – ManishSingh

+0

私はあなたのOpenIDについての記事を読んでいます。はい、いくつかのプロキシAPIを使用して、バックエンドにすべての秘密鍵を保存しています。 –

1

OpenID Connectを使用した回答フォーム@ManishSinghと一緒に、PKCEを使用する必要があります。

関連する問題