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

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

ただいまの
回答率

90.83%

  • Laravel 5

    1619questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Laravel5.5でスマホアプリのサーバ開発時の認証

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 391

yamayamak

score 72

Laravel5.5でWebでもスマホアプリでもアクセスできるサーバを開発しています。

通常スマホアプリの認証はどのようにすべきなのか一般的な考え方を教えてください。
Passportを入れてPasswordタイプでTokenを払い出すのが一般的なのかとも考えていましたがご意見をお願いします。

また、WebではScoialiteを用いてGoogleアカウント認証を構築したのですが、スマホでも同様に構築できるのでしょうか?
Passportを用いたTokenで認証している場合に処理がうまく併用して利用できるのでしょうか?

要約すると
(1)スマホアプリの認証は普通どのように行うのが良いでしょうか?
(2)また、その場合にスマホアプリでGoogleアカウント認証を利用する場合はどのようになるのでしょうか?

というのが質問になります。
全体的な感覚がよくわかっていません。意見やアドバイスをお願いします。

よろしくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+1

SocialiteはOAuthクライアント。
PassportはOAuthサーバー。

LaravelからGoogle認証する場合
Laravel:クライアント
Google:サーバー
の関係。
Socialiteを使う。

スマホアプリからLaravelの認証
スマホアプリ:クライアント
Laravel:サーバー
Passportを使う。

スマホアプリからGoogle認証
スマホアプリ:クライアント
Google:サーバー
Laravelは関係ない。

Laravelのユーザー情報とGoogleのユーザー情報を関連付けるのは自分で作る所。

スマホアプリからがGoogle認証だけならPassport使わずにもっとシンプルに api_token でもいい。
ドキュメントのどこにも書いてないはずだけどLaravelデフォルトはTokenGuardを使う設定。
https://github.com/laravel/framework/blob/5.5/src/Illuminate/Auth/TokenGuard.php

  1. Laravelでユーザー登録した時点でランダムな api_token を生成、usersテーブルに保存。
  2. Google認証して google_id みたいなものを保存。
  3. スマホアプリからGoogle認証して取得した google_id を使って api_token を取得するAPIを作っておく。(セキュリティ考えるとここはもう少し厳密に)
    後はこの api_token を使えばいい。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/24 18:51

    ありがとうございます。概ね理解できました。
    Passportは他の用途でサーバとして機能していてすでに利用しているので、スマホアプリ向けにも、Passswordタイプ(ID,Password)で既に作り込んで利用しています。

    Socialiteは今回、Googleアカウント連携で新たに利用しています。
    スマホアプリから取得したIDもしくはE-mailでPassportでTokenを払い出す予定です。(ここはPasportでもなんでも良いと思っています。)

    以下が質問ですが、
    ・ここら辺がこんがらがっていたのですが、Googleから取得したTokenはスマホアプリには特に使用しないんですね。Passportを用いてサーバでTokenを発行しようとしています。
    ・SocialiteはGoogleしかDriverで選択できないんですが、スマホアプリの場合だけ、スマホアプリにIDなどをResponseすることは可能でしょうか?
    個別の作り込みが必要なんでしょうか?
    Laravelは、ほぼ以下のまま作っています。
    https://www.webprofessional.jp/easily-add-social-logins-to-your-app-with-socialite/

    WebもAPIもProviderが”Google”しか使えないので、分岐ができないように見えます。
    ご存知でしたらご教授をお願いします。

    キャンセル

-2

どちらの質問もセキュリティポリシーによるので、回答は難しいと思いますよ。
セキュリティポリシーはアプリの性質で決定されるべきなので、まずは同じような性質を持つアプリがどのようなセキュリティ設計になっているか研究してみてはいかがでしょうか?

追記
Laravel、認証、スマホアプリと興味のあるキーワードだらけな質問なので、回答をもらえるような質問に修正してもらいたいのですが、以下の点を整理しないと回答しにくいと思います。
以下のどの話なのでしょうか?

・スマホアプリの認証はどのようにすべきなのか?というポリシーに近いところの話
・Scoialite を用いて Token を発行/検証する実装の話
・Scoialite を使用した認証システムと Passport を併用する話
・そもそもサーバ側の話ではなく、端末側の実装の話

私はポリシーの話と捉えましたが、どうもセキュリティポリシーとかセキュリティ設計とかそういったものへの理解は無いようなので、そちら方面の話ではないように思います。
実装の話なのであれば、どのような機能要件があり、既存がどのような形で実装されているか提示すれば、回答を得られると思います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/23 19:24

    Webは資料が多いですがアプリは実装の参考があまり見当たらないので質問してみました。
    Webとアプリでセキュリティと公開に差があるんですか???
    セキュリティ設計に参考いなるサイトなど紹介してもらえれば助かります。

    キャンセル

  • 2017/12/23 19:48

    Web に関しても、アプリに関しても、セキュリティポリシー(セキュリティ設計)に関する公開資料は非常に少ないです。
    外部に出てくることはマレかと。

    yamayamak さんはアプリケーションのセキュリティポリシーとかセキュリティ設計とかそういったものへの理解が無いようなので、まずはそこから学習されてはいかがでしょうか?

    以下は、IPA の提供する「IoT開発におけるセキュリティ設計の手引き」の抜粋資料です。
    https://www.ipa.go.jp/files/000052459.pdf

    Step1 サービスのシステム全体構成を明確化する。
    Step2 システムにおいて、保護すべき情報・機能・資産を明確化する。
    【脅威分析】
    Step3 保護すべき情報・機能・資産に対して、想定される脅威を明確化する。
    【対策検討】
    Step4 脅威に対抗する対策の候補(ベストプラクティス)を明確化する。
    Step5 どの対策を実装するか、脅威レベルや被害レベル、コスト等を考慮して選定する。

    この step を踏むことで、アプリの実装すべきセキュリティポリシーが決まりそれに対しての設計が可能となるので、まずそこを明確にしないと、どのような認証の実装が良いかは論じることが出来ないです。

    Web とアプリで、想定しなければならない脅威に差があるのは当然なので、似た機能を持つアプリがどういった脅威を想定しているかの分析は非常に役に立つと思います。

    また、場合によっては、同じような機能を持つアプリを開発したことのある会社に相談に乗ってもらうのが適切であると考えます。

    キャンセル

  • 2017/12/23 20:02 編集

    Webなら色々資料がありますよ。Socialiteもそうですし実装の仕方は色々サイトに載っています。
    知ってるなら、すみませんが具体的に理解できる回答をお願いします。
    みんなが理解しやすくするようにするサイトだと思いますので。。。

    キャンセル

  • 2017/12/23 20:09

    回答に書いた通り、具体的な回答はポリシー(どういった考え方で認証を捉えているか)を開示しなければ無理ではないかと。

    アプリによっては、マルチファクター認証を前提としているものもあれば、そもそも認証しないものもあります。それは「一般的な」でくくられるものではなく、そのアプリがどのように使用され、どういった脅威があるかによって決定すべきものです。
    って、ことなんですけど、伝わりますかね?

    キャンセル

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

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

関連した質問

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

  • Laravel 5

    1619questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。