Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LIFFで認証しようとしたら意外と奥が深かった話
Search
捧隆二
December 16, 2021
Programming
0
1.7k
LIFFで認証しようとしたら意外と奥が深かった話
捧隆二
December 16, 2021
Tweet
Share
More Decks by 捧隆二
See All by 捧隆二
LIFF API のセキュリティ的な話
arahabica
0
440
LINEミニアプリ/LIFFアプリを サクッと作りたいならFirebase
arahabica
3
1.7k
Firebase x LINE / Ruby on Rails x LINEでログイン画面を無くそう
arahabica
0
2k
公式管理画面 vs 非公式管理画面
arahabica
0
520
Share Target Pickerを使ってLIFFアプリを拡散しよう
arahabica
0
950
Share Target Pickerを使って消えるメッセージを作ってみた
arahabica
0
7.4k
非公式LINE管理画面を作ってみた
arahabica
0
400
Clovaで他とは違うスマートスピーカー体験
arahabica
0
130
LINEグループであそぼ
arahabica
1
360
Other Decks in Programming
See All in Programming
14 Years of iOS: Lessons and Key Points
seyfoyun
1
770
useSyncExternalStoreを使いまくる
ssssota
6
1k
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
290
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
310
テスト自動化失敗から再挑戦しチームにオーナーシップを委譲した話/STAC2024 macho
ma_cho29
1
1.3k
良いユニットテストを書こう
mototakatsu
5
2k
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
1
440
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
あれやってみてー駆動から成長を加速させる / areyattemite-driven
nashiusagi
1
200
コンテナをたくさん詰め込んだシステムとランタイムの変化
makihiro
1
120
DevFest Tokyo 2025 - Flutter のアプリアーキテクチャ現在地点
wasabeef
5
900
Criando Commits Incríveis no Git
marcelgsantos
2
170
Featured
See All Featured
Designing for humans not robots
tammielis
250
25k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Visualization
eitanlees
146
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Designing Experiences People Love
moore
138
23k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
YesSQL, Process and Tooling at Scale
rocio
169
14k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Done Done
chrislema
181
16k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Transcript
LIFFで認証しようとしたら 意外と奥が深かった話 2021/12/26 ボイスアップラボ 捧隆⼆ 1
Ø ⾃⼰紹介 Ø LIFFアプリっていいよね Ø サーバでの認証⽅法(基本) Ø サーバでの認証⽅法(発展) ⽬次 2
Ø ⾃⼰紹介 Ø LIFFアプリっていいよね Ø サーバでの認証⽅法(基本) Ø サーバでの認証⽅法(発展) ⽬次 3
⾃⼰紹介 u 名前: 捧隆⼆ u 2021年よりLINE API Expert u 所属:
ボイスアップラボ所属 u LINEアプリ制作 u 趣味: 温泉めぐり 4
Ø ⾃⼰紹介 Ø LIFFアプリっていいよね Ø サーバでの認証⽅法(基本) Ø サーバでの認証⽅法(発展) ⽬次 5
LIFFアプリっていいよね 6
こちらに参加されてる皆さんなら、 そもそも「LIFFアプリとは」の説明は ⼤丈夫ですよね︖ 7
LINE上で動くLIFFアプリなら、 インストール要らずだし通知もできるよ 8
LINE上で動くLIFFアプリなら、 インストール要らずだし通知もできるよ ええやん 9
ユーザのアクションなしで クライアントJSで認証情報が取得できるよ︕ 10
ユーザのアクションなしで クライアントJSで認証情報が取得できるよ︕ 楽やん 11
サーバ側でも認証したければ、 セキュリティのためにクライアントから アクセストークンだけ送ってね︕ 12
サーバ側でも認証したければ、 セキュリティのためにクライアントから アクセストークンだけ送ってね︕ はーい 13
Ø ⾃⼰紹介 Ø LIFFアプリっていいよね Ø サーバでの認証⽅法(基本) Ø サーバでの認証⽅法(発展) ⽬次 14
サーバでの認証⽅法(基本) 15
16 サーバでの認証⽅法(基本) Ø 公式のドキュメントに詳細載ってます
17
18 認証成功︕︕ 😀
19 サーバ認証の実装(基本) Ø liff.getAccessToken()をサーバに送信 Ø サーバで確認
なんとなく分かったから 早速アプリ作っていくかー 20
...あれ、認証した後ってどうするんだっけ︖ 💦 21
リクエストのたびにLINE API叩いてアクセス トークン検証するわけにもいかないし、、、 💦 ...あれ、認証した後ってどうするんだっけ︖ 💦 22
リクエストのたびにLINE API叩いてアクセス トークン検証するわけにもいかないし、、、 💦 ...あれ、認証した後ってどうするんだっけ︖ 💦 できれば、いつも使ってる認証ライブラリ に繋ぎ込みたい... 💦 23
24 リクエストのたびにアクセストークン検証 するわけにもいかないし、、、 💦 ...あれ、認証した後ってどうするんだっけ︖ 💦 できれば、いつも使ってる認証ライブラリ に繋ぎ込みたい... 💦 実はちゃんと認証するには
もうひと⼿間必要だった︕︕
Ø ⾃⼰紹介 Ø LIFFアプリっていいよね Ø サーバでの認証⽅法(基本) Ø サーバでの認証⽅法(発展) ⽬次 25
サーバでの認証⽅法(発展) 26
27 サーバ認証の⽅法(発展系)
28 独⾃のアクセストークンを返す 独⾃のアクセストークン を⽣成し保存
29 認証 2回⽬以降のリクエスト OK 独⾃のアクセストークン
実際どうやるの︖ 30
31 実際どうやるの︖ Ø Firebaseの場合 Ø Ruby on Railsの場合
32 Firebaseの場合 Ø 使⽤技術 Ø Firebase Authentication Ø Firebaseの認証機能を⼀⼿に担う Ø
通常はEmail認証やGoogle認証などに対応 Ø カスタムトークン作成機能 Ø Firebase Authenticationの1機能 Ø カスタム認証システムとの統合のための機能
33 Firebaseの場合 Ø 処理の流れ Ø LIFFでアクセストークンを取得 Ø アクセストークンをCloud Functions for
Firebaseに送信 Ø Cloud Functions for FirebaseでLINEの認証処理 Ø userIdに対応するカスタムトークン作成 Ø クライアントでカスタムトークンを使⽤し、Firebaseにログイン
34 Ruby on Railsの場合 Ø 使⽤技術 Ø Devise Ø Railsのデファクトの認証ライブラリ(gem)
Ø 認証関連は⾃作する部分はできるだけ減らして、 デファクトを活⽤ Ø devise_token_auth Ø Deviseを利⽤しつつ、APIによる認証を可能にする ライブラリ(gem)
35 Ø 処理の流れ Ø LIFFでアクセストークンを取得 Ø アクセストークンをサーバに送信 Ø サーバでLINEの認証処理 Ø
userIdに対応するトークン作成(devise_token_auth) Ø クライアントからサーバにアクセスする時にトークンを ヘッダにつける Ruby on Railsの場合
36 Ø 処理の流れ Ø LIFFでアクセストークンを取得 Ø アクセストークンをサーバに送信 Ø サーバでLINEの認証処理 Ø
userIdに対応するトークン作成(devise_token_auth) Ø クライアントからサーバにアクセスする時にトークンを ヘッダにつける Ruby on Railsの場合 1⽉19⽇にハンズオンで Ruby on Railsでの実装⽅法を 解説予定です︕ 宣伝
ご静聴ありがとうございました 37