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
Auth0を使った認証基盤導入の取り組みとシングルログアウトの話 / ginzarails_v...
Search
リンクアンドモチベーション
July 30, 2021
Technology
1
1.8k
Auth0を使った認証基盤導入の取り組みとシングルログアウトの話 / ginzarails_vol35_presentation
銀座Rails#35 登壇資料
リンクアンドモチベーション
July 30, 2021
Tweet
Share
More Decks by リンクアンドモチベーション
See All by リンクアンドモチベーション
EMの仕事=余白のデザイン! / EM-Oasis-9-LMI
lmi
1
280
新卒エンジニアが挑んだ Cursor × FigmaMCPでの高速UI実装/Canly Tech Hub
lmi
1
440
EKSでManifestまでTerraformで管理するのが意外とよかった/SRE_NEXT_After_2025
lmi
0
230
PRから改善していくAI開発 / Beyond-the-Backend-Link-and-Motivation
lmi
0
360
改善できないのは評価していないから? 〜LLM出力評価のススメ〜 / generative-ai-x-meetup-vol1-link-and-motivation
lmi
0
90
100% AI コード生成開発!AI Agent 時代の信頼性と開発効率のためのガードレール/sre-next-2025-link-and-motivation
lmi
4
2.2k
影響力タイプ診断(EM編) / EMOasis-08-link-and-motivation
lmi
2
170
「アカウントください」はPRで —IaC化によるユーザー管理の改善 / Engineering-Productivity-Meetup-04-link-and-motivation
lmi
0
190
AIが悪いんじゃないよ、君が悪いんだよ / AI-engineering-summit-link-and-motivation
lmi
1
160
Other Decks in Technology
See All in Technology
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
3
450
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
420
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.3k
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
210
スマートファクトリーの第一歩 〜AWSマネージドサービスで 実現する予知保全と生成AI活用まで
ganota
2
300
Apache Spark もくもく会
taka_aki
0
120
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
130
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
470
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
900
プラットフォーム転換期におけるGitHub Copilot活用〜Coding agentがそれを加速するか〜 / Leveraging GitHub Copilot During Platform Transition Periods
aeonpeople
1
220
Agile PBL at New Grads Trainings
kawaguti
PRO
1
450
新規プロダクトでプロトタイプから正式リリースまでNext.jsで開発したリアル
kawanoriku0
1
180
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
A Tale of Four Properties
chriscoyier
160
23k
Embracing the Ebb and Flow
colly
87
4.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
530
Building Adaptive Systems
keathley
43
2.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
A better future with KSS
kneath
239
17k
Six Lessons from altMBA
skipperchong
28
4k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Transcript
Auth0を使った認証基盤導入の取り組みと シングルログアウトの話 株式会社リンクアンドモチベーション 菊池 修平
自己紹介 菊池 修平 株式会社リンクアンドモチベーション ソフトウェアエンジニア # 普段の業務 ・フロントエンド設計・開発 ・認証まわりの組み込み #
最近ハマってること ・ポケモンユナイト Link and Motivation Inc. 2
1. 認証基盤を開発して導入した話 2. シングルログアウト問題の話
1. 認証基盤を開発して導入した話
認証基盤開発の背景 Link and Motivation Inc. 5
認証基盤開発の背景 認証にdeviseを使用 認証にAuth0を使用 Link and Motivation Inc. 6
認証基盤開発の背景 認証にdeviseを使用 認証にAuth0を使用 Link and Motivation Inc. 7 各プロダクトでログイン・認証処理を実装
ログイン 参照 Link and Motivation Inc. 8 ログイン 参照 ユーザーA
ユーザーA プロダクトごとにユーザー・認証情報を管理
Link and Motivation Inc. 9 ユーザーは各プロダクトでパスワード設定しないといけない システムは同じユーザーとして紐づけられず、データ連携できない プロダクトごとにユーザー・認証情報を管理 ユーザーA ユーザーA
ログイン 参照 ログイン 参照
似たような画面を毎回作成 Link and Motivation Inc. 10
似たような画面を毎回作成 プロダクト立ち上げる度に、画面の開発工数がかかる Link and Motivation Inc. 11
共通して使える 認証の基盤を作ろう!
どうやって作る? 認証基盤クラウド(IDaaS):Okta, Azure AD, Auth0, … 認証を統一するだけであれば、各プロダクトに直接組み込むことで対応できる Link and Motivation
Inc. 13
どうやって作る? 認証基盤クラウド(IDaaS):Okta, Azure AD, Auth0, … 認証を統一するだけであれば、各プロダクトに直接組み込むことで対応できる Link and Motivation
Inc. 14 => 認証だけでなく、 認証まわりの機能(パスワード変更、再発行など)やその画面の共通化、 独自のユーザー処理を挟むため、別途ユーザー管理アプリケーションを開発
そんなこんなで出来上がったのがこちら Link and Motivation Inc. 15 依存 認証・認可
そんなこんなで出来上がったのがこちら Link and Motivation Inc. 16 認証システム 主な役割 ・認証データ(ID /
Pass・IdP)管理 ・ログイン処理(ID / Pass・SSO...) ・ログイン画面UI管理 ・Access Token、ID Tokenの発行
そんなこんなで出来上がったのがこちら Link and Motivation Inc. 17 ユーザー管理システム 主な役割 ・ユーザーのマスタデータ管理 ・パスワード設定/再発行UI管理
・Auth0、各サービスにユーザーデータ を同期
認証基盤の導入によって Link and Motivation Inc. 18 (将来的に) ・プロダクトの認証周りの工数削減 ・認証周りの保守・改善の一元化 ・シングルサインオンによるログイン体験の向上
認証基盤の開発で困ったこと Link and Motivation Inc. 19 ・認証の仕組み自体はAuth0を使ったが、組み込み等で難しいことはほとんどな かった ・Auth0はRailsはもちろんさまざまな言語・フレームワーク用のSDKが用意 されており、ドキュメントも豊富にある
・そんな中、一番困ったのがシングルログアウトへの対応
2. シングルログアウト問題の話
シングルログアウト
シングルログアウト(SLO) ユーザが 1 つのアプリケーションからログアウトすると、 すべてのアプリケーションから自動的にログアウトする機能 ⇔ シングルサインオン(SSO) Link and Motivation
Inc. 22
シングルログアウト(SLO) ユーザが 1 つのアプリケーションからログアウトすると、 すべてのアプリケーションから自動的にログアウトする機能 ⇔ シングルサインオン(SSO) Link and Motivation
Inc. 23 SSOより目立たないが実は結構難しい・・
シングルサインオンの流れ Link and Motivation Inc. 24 service1.mydomain.com service2.mydomain.com ②ログイン ③アクセストークン
④アクセストークンをローカルストレージに保存 ⑤別サービスに移動 ⑥既にAuth0でログインしているため すぐアクセストークンが返される ⑦アクセストークンをローカルストレージに保存 ①アクセス
シングルサインオンの流れ Link and Motivation Inc. 33 service1.mydomain.com service2.mydomain.com ②ログイン ③アクセストークン
④アクセストークンをローカルストレージに保存 ⑤別サービスに移動 ⑥既にAuth0でログインしているため すぐアクセストークンが返される ⑦アクセストークンをローカルストレージに保存 ①アクセス アクセストークンを毎回取得しないようにクライアントにキャッシュしている点がポイント
ログアウトの流れ Link and Motivation Inc. 34 service1.mydomain.com service2.mydomain.com ①ログアウト ②アクセストークンをローカルストレージから削除
③別サービスに移動 ④アクセストークンがローカルストレージに保存されたまま
ログアウトの流れ Link and Motivation Inc. 39 service1.mydomain.com service2.mydomain.com ①ログアウト ②アクセストークンをローカルストレージから削除
③別サービスに移動 ④アクセストークンがローカルストレージに保存されたまま それを使ってAPIにアクセス出来てしまう あるサービスからログアウトした タイミングで、 別サービスのドメインに保存されて いるアクセストークンを削除するす べがない
他のサービスはどうやって対応しているのか Link and Motivation Inc. 40 ・サービスからログアウトされたら、クライアントに「ログアウトされた」とい うことを通知するような仕組みを作っていそう(AWSとかそんな挙動っぽい) ・Auth0公式も、ログアウトを追跡するサービスを作って対応する方法を提示し ている
https://auth0.com/docs/architecture-scenarios/b2b/logout#build-a- logout-service
他のサービスはどうやって対応しているのか Link and Motivation Inc. 41 ・サービスからログアウトされたら、クライアントに「ログアウトされた」とい うことを通知するような仕組みを作っていそう(AWSとかそんな挙動っぽい) ・Auth0公式も、ログアウトを追跡するサービスを作って対応する方法を提示し ている
https://auth0.com/docs/architecture-scenarios/b2b/logout#build-a- logout-service => 相当コストと時間がかかるため、別の方法を検討
どうやって対応したか Link and Motivation Inc. 42 色々試した末、最終的にCookieの値の有無でログアウトを判別する方法で対応 1. ログイン後、CookieにログインしたユーザーのIDを保持 (Cookieは同じドメインを跨いで共有できるようなスコープにしておく
e.g. ‘mydomain.com’) 2. 各サービスではログアウトしたときにCookieのユーザーIDを削除する処理を入れる 3. 各サービスにアクセスしたとき、CookieのユーザーIDがなければ、 いずれかのサービスでログアウトされたと見なし、自身からもログアウトする (ローカルストレージからアクセストークンを削除する)
どうやって対応したか Link and Motivation Inc. 43 色々試した末、最終的にCookieの値の有無でログアウトを判別する方法で対応 1. ログイン後、CookieにログインしたユーザーのIDを保持 (Cookieは同じドメインを跨いで共有できるようなスコープにしておく
e.g. ‘mydomain.com’) 2. 各サービスではログアウトしたときにCookieのユーザーIDを削除する処理を入れる 3. 各サービスにアクセスしたとき、CookieのユーザーIDがなければ、 いずれかのサービスでログアウトされたと見なし、自身からもログアウトする (ローカルストレージからアクセストークンを削除する) => ドメインが完全に異なると対応できないため万能ではないが、 現状では問題なく動作している
まとめ Link and Motivation Inc. 44 ・複数プロダクトを抱える弊社の認証基盤導入の事例を紹介しました ・基盤として共通化することで、コスト削減だけでなく、ユーザー体験向上やデ ータ連携などサービス価値を向上する取り組みが出来た ・シングルログアウトという意外に難しい機能があるのでお気をつけを
以上です。 ありがとうございました。