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

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

ただいまの
回答率

87.37%

laravel passportはwebとapiのサーバーが分離してても使えるのか?経験談、失敗談など求む。

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,141
退会済みユーザー

退会済みユーザー

laravel passportはwebとapiが同じサーバー内でしか使えないと思うのですが、
webとapiが別サーバーの場合、独自で機構を作るしかないでしょうか?

パスワードの概念をなくしたシステムを作ろうとしているの場合、尚更でしょうか?

nuxt.jsとkaravelで開発しています。
独自機構の場合、流れは以下を想定しています。


ユーザーの登録をする(パスワードはない)

  • api側でユーザーの登録
  • トークン自体が暗号だが、更に暗号化してユーザーのメールアドレスに登録完了メールを送信する(メール内にリンクを設置)

またはログイン認証リクエストの要求

  • メールアドレスを送信して、api側で諸々精査後、メールアドレスに登録完了メールを送信する(メール内にリンクを設置)

受信メールからログインをする

  • メール内のリンク押下によりnuxt側に遷移
  • nuxt側は指定パラメーターをapi側にリクエスト(パラメーターは1つだけじゃない&暗号化してるのでセキュリティー的には大丈夫だと思っている)

ログイン処理実行

  • トークンの解析と照会により該当ユーザーを突き止める
  • json形式で返す

ログイン済みの状態確保

  • vuexでログインユーザーの情報を保持する(ブラウザを閉じない限りは認証ページ間で行き来ができる想定)

ログイン状態の保持(次回から入力を省略する)

  • localstorageなどに諸々保持(有効期限内であればブラウザを閉じても認証ページ間で行き来ができる想定)

端折ってるところは多々ありますが、大まかな流れは以上を想定しています。
結局token生成して二段階認証みたいな形になるので、laravelpassportと同じ形式ではあるのですが、独自機構はなるべく避けたく、より多く世に認知されているもので実装したいところがあります。

apiとwebを別サーバーにする場合、やはりlaravel passportは使えないでしょうか?
サーバー分離しなければ普通にlaravelのauth機能(多分内部でセッション動いてたような記憶がある)が使えると思うのですが、apiとwebを分離した場合のログインのベストプラクティスといいますか、経験談をお尋ねしたいです。

色々調べててtokenをクッキーに保存とかいう方法も拝見しましたが、個人的にはあり得ないだろーとか思っていましたが、更に色々組み合わせて暗号化すればそこまで怖くないと思ったりしています。
(というかそうする以外にないような気がします。)

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2019/10/04 00:02

    複数のユーザーから「問題・課題が含まれていない質問」という意見がありました
    teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
    「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。

回答 1

0

PassportはOAuthサーバーなので普通に分離して使える。
JSからAPI呼び出しで引っかかるとしたらCORSなのでそれだけ設定。

それより独自のユーザー登録をやめたほうがいいとは思う。
大丈夫と思ってても必ず漏れがある。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/03 23:44

    回答ありがとうございます。

    CORSはlaravel側で設定しているのでその制約は大丈夫ですが、laravel passportでもサーバー間でsession保持できないと多いますので、web側で認証ページにアクセスす度に毎回、認証APIにアクセスしないといけないと思いますが、、、。

    「使える。」というのはどういう運用や仕組みを想定して使えるに至ったのかが知りたいです。

    例えば、tokenをブラウザや端末側に保存して、以降認証ページではtokenで認証API叩いたらユーザー情報引き出せるから、そういった意味で使えるなのかとか。。。

    まず、「laravel passportでもサーバー間でsession保持できない」これがyesなのかnoなのかを先に解決したいです。

    キャンセル

  • 2019/10/04 19:45

    > 例えば、tokenをブラウザや端末側に保存して、以降認証ページではtokenで認証API叩いたらユーザー情報引き出せるから、そういった意味で使える

    こういう意味で使える、だと思われます
    OAuthにはsessionなしにtokenで認証します

    キャンセル

  • 2019/10/04 20:33

    サーバー分離型で認証のところは実装したことがなかったので推測で話していましたが、やはり毎回ajaxでユーザー情報とってこないといけないのですね。。。

    ありがとうございます!

    キャンセル

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

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • APIに関する質問
  • laravel passportはwebとapiのサーバーが分離してても使えるのか?経験談、失敗談など求む。