Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
バイトルにOAuth 2.0を導入
Search
Shoei Watanabe
November 26, 2018
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
バイトルにOAuth 2.0を導入
Shoei Watanabe
November 26, 2018
More Decks by Shoei Watanabe
See All by Shoei Watanabe
全国300店舗フィットネスジムでの ClickHouse x LibreChat の活用事例
sh0e1
0
110
SNKRDUNKでGo+gRPCで すすめるモジュラモノリス
sh0e1
5
4.1k
About blockchain full managed node service backend built with Azure
sh0e1
1
470
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
25k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
For a Future-Friendly Web
brad_frost
183
10k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
The Curse of the Amulet
leimatthew05
2
14k
Automating Front-end Workflow
addyosmani
1369
210k
Optimizing for Happiness
mojombo
378
71k
Transcript
バイトルにOAuth 2.0を導入 2018/11/26 dip × istyle 合同勉強会
アウトライン 1. 自己紹介 2. アプリが抱えていた課題 3. 何故OAuth 2.0? 4. OAuth
2.0とは 5. システム構成 6. 導入時に注意したこと / 導入後の不具合 7. OAuth 2.0を導入した結果 8. まとめ
渡邊 翔永(Shoei Watanabe) @sh0e12uatanal3e @sh0e1 @sh0e1 ▪ 経歴 • SIer
• フリーランス • ディップ - 2018/06 ▪ スキル • Golang / PHP / JavaScript • GCP • Blockchain ▪ 業務 • サーバサイド • アプリ用API • OAuth 2.0サーバ • 外部のB向けAPI 自己紹介
• 一定期間アプリを起動しないとログア ウト状態になる • 認証トークンの有効期限がいつ切れ るかアプリ側では判定できない • 認証トークンが有効化どうかがAPIへ リクエストを投げてから判断している アプリが抱えていた課題
抱えていた課題の解決 • アクセストークンの有効期限あり ▶ アプリ側で認証のハンドリングが可能 • RFCで仕様が決められている ▶ 独自認証より安全 今後に向けて
• マイクロサービス化 • バイトルでログイン機能の展開 何故OAuth 2.0?
• サードパーティーアプリケーションによるHTTPサービスへの限定的なアク セスを可能にする認可フレームワーク • RFC6749 - https://openid-foundation-japan.github.io/rfc6749.ja.html • Facebook /
Twitter / Googleアカウントでログイン • アクセストークンを使ってリソースを取得 • リフレッシュトークンでアクセストークンを更新 OAuth 2.0とは
• 認可コード • インプリシット • リソースオーナーパスワードクレデンシャル • クライアントクレデンシャル OAuth 2.0の認可グラント
認可コード
インプリシット
リソースオーナーパスワードクレデンシャル
クライアントクレデンシャル
システム構成 - 導入後
フレームワーク • なし、標準のhttpパッケージ OAuth Server • github.com/openshift/osin Storage • 自作パッケージ
▶ 今後OSSで公開していきたい GoのLibrary
• リソースオーナーパスワードクレデンシャル • アクセストークンの有効期限は1時間 • リフレッシュトークンの有効期限は半年 • アクセストークンはJSON Web Token
• スコープはなし バイトルでのOAuth 2.0の仕様
• 総当たり攻撃対策 • パスワード変更はトークンを全削除 • KVSの排他制御 導入時に注意したこと
総当たり攻撃対策 一定期間内に一定回数パスワードを間違える ▼ 強制パスワードリセット
アクセストークン / リフレッシュトークンが漏洩 ▼ パスワード変更 ▼ トークンが有効なままだと、リソースにアクセス可能 パスワード変更時のトークン全削除
KVSの排他制御 - 問題点 1つのリフレッシュトークンで複数のアクセストークンが発行される
KVSの排他制御 - 対策 RedisのSETNXを使ってLock機能を実装して対応
• 再認証時のAPIリクエストが減った • マイクロサービス化の第一歩 • バイトルでログインはこれから OAuth 2.0を導入した結果
• OAuth2.0を導入してアプリの課題を解決できた • 導入するにあたり、セキュリティは特に注意しないといけない • マイクロサービス化の第一歩を踏み出せた 今後について • Webの認証もOAuth 2.0に
• 更にマイクロサービス化を進めていく • バイトルでログインを含む外部向けのAPIの公開 まとめ
ありがとうございました