質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

13231閲覧

サーバサイドをAPIにした時のログインクッキーの保存

iwato_s

総合スコア15

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2019/04/06 12:53

railsAPI + Vueで会員登録機能のあるwebサービスを作成中です。

ログインしているという状態を判別する際
APIの時には以下のような処理をするという認識であっているのでしょうか

  1. ブラウザからログインをする。
  2. APIでユーザDBにクッキー様文字列を保存し、ブラウザに同様の文字を送信する。
  3. ブラウザで受け取った文字列をクッキーに保存する。
  4. 以降のページ遷移時にはブラウザのクッキー値とDBのクッキー値を比較し、一致する場合にログインしている状態と判断する。

上記のやり方以外の方法、セキュリティ面等でよりよい方法があれば教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

urbainleverrier

2019/04/06 16:24

セキュリティや暗号については素人ですが、クッキーが違います。 クッキーはhttpヘッダに付随されており、暗号化されたセッション情報を保持しています。もしユーザー側が認証サーバーに認証して欲しいのであればhttp通信時にその都度クッキーをhttpヘッダに含める必要があります。一方サーバー側は、ユーザーが送りつけてくるクッキー情報をその都度自前の鍵で復号化します。okならそのユーザーを認証します。 余談ですが、cookieにはサイズに上限があるので、通常ユーザーidを入れてあげます。それ以外に、ユーザーから送られてくる通信を重ねるにつれ、ユーザーの状態の変化を表現したいのであれば、セッション情報としてデータベースに保管します。
iwato_s

2019/04/07 01:53

回答ありがとうございます! ブラウザからクッキー情報をAPIに渡す際はhttpヘッダにクッキーを含めるということはわかったんですが、 > 一方サーバー側は、ユーザーが送りつけてくるクッキー情報をその都度自前の鍵で復号化します。okならそのユーザーを認証します。 がの具体的な方法がよくわかりません。DBにクッキー情報を保存しておくというのは間違いなのでしょうか。
urbainleverrier

2019/04/07 05:54 編集

cookieとはhttpを使用した通信の中に存在するものです。dbにはcookieに保存しきれない、セッション情報を保存する場合があります。 cookieの情報を記憶するのは、ユーザーが操作するブラウザの役目です。サーバーから送られてきたhttpレスポンスのうち、cookieは別途大切に保管し、同じサーバーにアクセスする場合のみ、自動的にcookieを添付してくれます。これについて考える必要はありません。 remenber me機能についてはうる覚えです。 https://github.com/plataformatec/devise/blob/v4.6.2/lib/devise/strategies/rememberable.rb#L7 これは復号化できるcookieが送られてくる場合のみ通用します。通常、cookieには有効期限があります。 ユーザーが熱心で、cookieの有効期限とは異なる、独自に設定した期限までに定期的にアクセスしてくれる場合は、cookieの有効期限を都度引き伸ばすというものだったと思います。ただ、cookieは盗まれるとその時点でなりすましになりますので、普通はやりません。大企業でなければ、cookieの有効期限を2週間程度に設定し、万が一盗まれた場合はその期限までは、仕方がないよね、でもその期限以降はダメですよ、じゃないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問