2017-09-23 4 views
3

私は角のアプリケーションを持っていると私は、彼らがサイトを離れて戻ってきたとき、彼らは自動的に自分のホームページにログインしているように、ブラウザにユーザーの資格情報を保存する機能を追加したいです。私はユーザー名とapitokenをクッキーとして保存することを考えています。そして誰かがホームページにアクセスするたびにそれらを取得します(存在する場合)。そしてそれらをサーバーに送り、ユーザーに自動的にログインします。しかし、私はこれを行うには良い方法ですか?これは安全ですか?そうでない場合、誰かがそれを行うためのよりよい方法を説明したり、私にそれを行う方法を読むためのいくつかのリソースを提供することができますか?ありがとう!角度アプリに自動署名できるようにユーザーデータを保存するにはどうすればよいですか?

+2

'JWT'を使用し、' localStorage'にトークンを格納することができます:http://jasonwatmore.com/post/2016/08/16/angular-2-jwt-authentication-example-tutorial –

+0

ありがとう、私は持っていますリンクを見て、私は既にJWTの例に似て、APIトークンで認証手順を使用しているので、localStorageについてもっと興味があります。 localStorageにユーザー名とAPIトークンを格納するのは安全ですか?別のアプリケーションがこれらのデータポイントを取得できるようです。 – Dan

+1

私は 'JWT'トークンが、彼らはあなたがバックend''で –

答えて

0

あなたはコメントで述べたように、あなたは認証のために(JWTに似)APIトークンを使用しています。

のlocalStorageの利点があり、それは扱いやすいですし、あなたのアプリケーションができることを、:ローカルトークン(=セッション)を永続化することで、あなたは基本的に2つのオプションがあります常にJWTのペイロードにアクセスします。有効期限が切れたとき、またはどのルートにアクセス可能であるべきかを示す。問題は、LocalStorageがXSS(クロスサイトスクリプティング)攻撃に対して脆弱であることです。つまり、他の誰かがそのコンテンツにアクセスしてセッションを盗むことになります。

より安全な代替は、(設定フラグ安全でHttpOnlyの)HTTPのみクッキーです。これらのクッキーはJavaScript経由でアクセスできないため、XSS攻撃によって盗まれることはありません。欠点は明らかです:アプリケーションからトークンのコンテンツにアクセスすることはできません。一般的に

、あなたのAPIトークンは非常に短い時間のために有効にする必要があります。ユーザーにログイン状態を維持したい場合は、リフレッシュトークンを使用する必要があります。これらは長い期間有効で、ログインせずに新しいapiトークンを取得することができます。ここでの利点は、リフレッシュトークンがステートレスでなく、取り消すことができることです。最高のあなたに合ったソリューション

セキュリティ要件に依存します。

+0

ありがとう、私はJWTソリューションのための私の古いapitokenソリューションを変更することにしました。私のapiトークンはHS512アルゴリズムで暗号化されています。とにかく4時間有効ですので、これは完全に安全だと思います。しかし、JWTがXSSなどの手段を使ってローカルストレージから取得されたというと、それが生成されたサーバの原点やそのデータをローカルストレージに保存したウェブサイトを見ることができるのだろうか、 JWT? – Dan

関連する問題