Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
バイトルにOAuth 2.0を導入 2018/11/26 dip × istyle 合同勉強会
Slide 2
Slide 2 text
アウトライン 1. 自己紹介 2. アプリが抱えていた課題 3. 何故OAuth 2.0? 4. OAuth 2.0とは 5. システム構成 6. 導入時に注意したこと / 導入後の不具合 7. OAuth 2.0を導入した結果 8. まとめ
Slide 3
Slide 3 text
渡邊 翔永(Shoei Watanabe) @sh0e12uatanal3e @sh0e1 @sh0e1 ■ 経歴 ● SIer ● フリーランス ● ディップ - 2018/06 ■ スキル ● Golang / PHP / JavaScript ● GCP ● Blockchain ■ 業務 ● サーバサイド ● アプリ用API ● OAuth 2.0サーバ ● 外部のB向けAPI 自己紹介
Slide 4
Slide 4 text
● 一定期間アプリを起動しないとログア ウト状態になる ● 認証トークンの有効期限がいつ切れ るかアプリ側では判定できない ● 認証トークンが有効化どうかがAPIへ リクエストを投げてから判断している アプリが抱えていた課題
Slide 5
Slide 5 text
抱えていた課題の解決 ● アクセストークンの有効期限あり ▶ アプリ側で認証のハンドリングが可能 ● RFCで仕様が決められている ▶ 独自認証より安全 今後に向けて ● マイクロサービス化 ● バイトルでログイン機能の展開 何故OAuth 2.0?
Slide 6
Slide 6 text
● サードパーティーアプリケーションによるHTTPサービスへの限定的なアク セスを可能にする認可フレームワーク ● RFC6749 - https://openid-foundation-japan.github.io/rfc6749.ja.html ● Facebook / Twitter / Googleアカウントでログイン ● アクセストークンを使ってリソースを取得 ● リフレッシュトークンでアクセストークンを更新 OAuth 2.0とは
Slide 7
Slide 7 text
● 認可コード ● インプリシット ● リソースオーナーパスワードクレデンシャル ● クライアントクレデンシャル OAuth 2.0の認可グラント
Slide 8
Slide 8 text
認可コード
Slide 9
Slide 9 text
インプリシット
Slide 10
Slide 10 text
リソースオーナーパスワードクレデンシャル
Slide 11
Slide 11 text
クライアントクレデンシャル
Slide 12
Slide 12 text
システム構成 - 導入後
Slide 13
Slide 13 text
フレームワーク ● なし、標準のhttpパッケージ OAuth Server ● github.com/openshift/osin Storage ● 自作パッケージ ▶ 今後OSSで公開していきたい GoのLibrary
Slide 14
Slide 14 text
● リソースオーナーパスワードクレデンシャル ● アクセストークンの有効期限は1時間 ● リフレッシュトークンの有効期限は半年 ● アクセストークンはJSON Web Token ● スコープはなし バイトルでのOAuth 2.0の仕様
Slide 15
Slide 15 text
● 総当たり攻撃対策 ● パスワード変更はトークンを全削除 ● KVSの排他制御 導入時に注意したこと
Slide 16
Slide 16 text
総当たり攻撃対策 一定期間内に一定回数パスワードを間違える ▼ 強制パスワードリセット
Slide 17
Slide 17 text
アクセストークン / リフレッシュトークンが漏洩 ▼ パスワード変更 ▼ トークンが有効なままだと、リソースにアクセス可能 パスワード変更時のトークン全削除
Slide 18
Slide 18 text
KVSの排他制御 - 問題点 1つのリフレッシュトークンで複数のアクセストークンが発行される
Slide 19
Slide 19 text
KVSの排他制御 - 対策 RedisのSETNXを使ってLock機能を実装して対応
Slide 20
Slide 20 text
● 再認証時のAPIリクエストが減った ● マイクロサービス化の第一歩 ● バイトルでログインはこれから OAuth 2.0を導入した結果
Slide 21
Slide 21 text
● OAuth2.0を導入してアプリの課題を解決できた ● 導入するにあたり、セキュリティは特に注意しないといけない ● マイクロサービス化の第一歩を踏み出せた 今後について ● Webの認証もOAuth 2.0に ● 更にマイクロサービス化を進めていく ● バイトルでログインを含む外部向けのAPIの公開 まとめ
Slide 22
Slide 22 text
ありがとうございました