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

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

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

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

Q&A

解決済

2回答

3556閲覧

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

yamayamak

総合スコア131

Laravel 5

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

1グッド

2クリップ

投稿2017/12/23 09:41

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

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

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

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

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

よろしくお願いします。

YoosamKang👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

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 09:03

kawax

総合スコア10377

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

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

yamayamak

2017/12/24 09: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”しか使えないので、分岐ができないように見えます。 ご存知でしたらご教授をお願いします。
guest

0

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

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

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

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

投稿2017/12/23 09:47

編集2017/12/24 02:54
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yamayamak

2017/12/23 10:24

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

退会済みユーザー

2017/12/23 10:48

Web に関しても、アプリに関しても、セキュリティポリシー(セキュリティ設計)に関する公開資料は非常に少ないです。 外部に出てくることはマレかと。 yamayamak さんはアプリケーションのセキュリティポリシーとかセキュリティ設計とかそういったものへの理解が無いようなので、まずはそこから学習されてはいかがでしょうか? 以下は、IPA の提供する「IoT開発におけるセキュリティ設計の手引き」の抜粋資料です。 https://www.ipa.go.jp/files/000052459.pdf Step1 サービスのシステム全体構成を明確化する。 Step2 システムにおいて、保護すべき情報・機能・資産を明確化する。 【脅威分析】 Step3 保護すべき情報・機能・資産に対して、想定される脅威を明確化する。 【対策検討】 Step4 脅威に対抗する対策の候補(ベストプラクティス)を明確化する。 Step5 どの対策を実装するか、脅威レベルや被害レベル、コスト等を考慮して選定する。 この step を踏むことで、アプリの実装すべきセキュリティポリシーが決まりそれに対しての設計が可能となるので、まずそこを明確にしないと、どのような認証の実装が良いかは論じることが出来ないです。 Web とアプリで、想定しなければならない脅威に差があるのは当然なので、似た機能を持つアプリがどういった脅威を想定しているかの分析は非常に役に立つと思います。 また、場合によっては、同じような機能を持つアプリを開発したことのある会社に相談に乗ってもらうのが適切であると考えます。
yamayamak

2017/12/23 11:05 編集

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

退会済みユーザー

2017/12/23 11:09

回答に書いた通り、具体的な回答はポリシー(どういった考え方で認証を捉えているか)を開示しなければ無理ではないかと。 アプリによっては、マルチファクター認証を前提としているものもあれば、そもそも認証しないものもあります。それは「一般的な」でくくられるものではなく、そのアプリがどのように使用され、どういった脅威があるかによって決定すべきものです。 って、ことなんですけど、伝わりますかね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問