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
2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LIFFで認証しようとしたら意外と奥が深かった話
捧隆二
December 16, 2021
More Decks by 捧隆二
See All by 捧隆二
LIFF API のセキュリティ的な話
arahabica
0
710
LINEミニアプリ/LIFFアプリを サクッと作りたいならFirebase
arahabica
3
2.3k
Firebase x LINE / Ruby on Rails x LINEでログイン画面を無くそう
arahabica
0
2.5k
公式管理画面 vs 非公式管理画面
arahabica
0
610
Share Target Pickerを使ってLIFFアプリを拡散しよう
arahabica
0
1.1k
Share Target Pickerを使って消えるメッセージを作ってみた
arahabica
0
8.1k
非公式LINE管理画面を作ってみた
arahabica
0
490
Clovaで他とは違うスマートスピーカー体験
arahabica
0
160
LINEグループであそぼ
arahabica
1
420
Other Decks in Programming
See All in Programming
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
4.4k
どこまでゆるくて許されるのか
tk3fftk
0
500
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.8k
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
550
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
440
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
910
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
330
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
130
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
1B+ /day規模のログを管理する技術
broadleaf
0
140
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
Un-Boring Meetings
codingconduct
0
350
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
730
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
540
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
180
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
450
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