at Laravel x Vue.js 勉強会 in 札幌 vol.1 https://larasap.connpass.com/event/130842/
Laravel x nuxt.js~認証難しい問題~山岸 “あかいいぬ” Masaru2019/06/07
View Slide
山岸 “あかいいぬ” Masaru- ㈱インフィニットループで 5 年ほど- PHP, golang, JavaScript, TypeScript, GLSL- Laravel, Slim, nuxt.js, babylon.js- AWS, GCPhttps://il-m-yamagishi.github.io
https://github.com/virtual-cast/babylon-vrm-loader
https://virtualcast.jp/blog/2019/04/ux-dx-friendly-with-nuxt-js/nuxt.js?
THE SEED ONLINE
THE SEED ONLINExR 時代のアセット流通プラットフォーム1. ブラウザで 3D モデルをアップロード2. プレビュー3. Unity SDK でダウンロードバーチャルキャスト、Vタビで使える(今後もっと増える)
ただのGoogle Driveじゃね説
わかる
THE SEED ONLINE の未来- 3D モデルだけでなく、音や画像なども対象に- アップロードしたものを販売出来るように(as UGC)- 今バーチャルマーケットでやっていることをうちでもやりたい- THE SEED ONLINE ID で様々な VR 世界を渡り歩ける(as OAuth Provider)- 他にも色々考え中!
二段構成Unity SDKhttps://seed.onlinehttps://api.seed.onlineWebViewJSON APIフロントエンドユーザバックエンド
with OAuth Login
as OAuth ID Provider
Laravel SocialiteTwitter, Facebook などの OAuth Provider ID を使って Laravel ユーザ認証するniconico Provider を実装した(OAuth 周りの仕様つらい)あれ、でもフロントエンドは nuxt.js …?
認証難しい問題
認証難しい問題ユーザは nuxt.js(node.js) サーバにアクセスする https://seed.onlineデータは Laravel サーバから取得する https://api.seed.onlineどうやって nuxt 上で Laravel 認証するか
認証難しい問題Laravel デフォルトは Cookie でステートフル(セッション)認証を行うLaravel Passport は別途 SDK 向けに使うから使えないLaravel Socialite で別サービスでログイン出来る必要もある
認証難しい問題SDK+ mailhttps://seed.onlinehttps://api.seed.online https://oauth.seed.onlineセッション情報を保持(localStorage)ログインコールバックWebView Authorizeusers DBAPI Request
tymon/jwt-authNo v1.0 in 3+ years, 400+ issues, only 1 project member #1810実用にはちょっと...という状態
ステートレス化nuxt <-> Laravel は json API でステートレスにしたい-> `Authorization: Bearer token` のトークンをクッキーに入れる Middlewarehttps:://carbon.now.sh 画像生成良い
ステートレス化ログイン完了時にセッションIDを暗号化して json responseEncryptCookies Middleware も入れておく
ステートレス化nuxt 側はヘッダーに jwt ぽく入れるだけ
Socialite 対応OAuth の仕様で、 Cookie ステートフルでなければならないCookie に `;domain=seed.online` と明示して共有出来るようにしたサブドメインの異なるサービス間で cookie を共有する
Passport 対応ログインと連携確認の描画は nuxt 側Passport で `return view();` する場所を全て nuxt にリダイレクトする形に変更Cookie も Socialite 同様共有OAuth 仕様つらい
リダイレクトバック対応ログインしたらログインする前にいたページに戻りたいログインを求める前に `window.sessionStorage` に今のパス情報を保存ログイン後に復元してリダイレクト※セキュリティ的に問題ないかチェックが必要
OAuthチュライ
fin.