SlideShare a Scribd company logo
1 of 11
Firebase Authenticationと
独自Keycloakサーバーとを
連携できないか頑張ってみた
執筆者:トビウオ
Google Firebaseが提供する認証システム
ユーザー認証機構を簡単に実装できる
メール/パスワード、電話番号、Googleアカ
ウント、Twitter、Facebook等と連携可能
あらゆる形式……というわけにはいかない
Instagram、LINE等のプリセットがない
じゃあカスタムすればいいじゃない!
⇒カスタム認証を使おう!
クライアント 認証サーバー
1. 認証操作
2. トークン要求・返却
Firebase
3. IDトークン
を送信
6. 認証情報
を要求・返却
検証サーバー
4. IDトークンを検証
5. カスタム
トークンを返却
5. カスタムトークンを作成
画像出典:
各公式サイト、いらすとや
Firebaseを「目的の認証」、それ以外の認証
を「事前の認証」と呼ぶことにする
「事前の認証」は、ユーザーさえ識別・検証
できればどんな手段でも問題ない
「事前の検証」において、ユーザーを一意に
識別できる文字列(uid)を検証サーバーで作成
し、カスタムトークン作成に利用する
例えばOIDCだからってIDトークンをそのま
まFirebaseに投げつけても駄目
クライアントはJavaScript、検証サーバーは
Pythonで実装
IDトークンからユーザー名を取得後、「
keycloak:<ユーザー名>」をuidとする
まずKeycloakで認証し、IDトー
クンを取得する
IDトークンを検証サーバーに渡
して検証してもらい、カスタム
トークンを返してもらう
カスタムトークンを更に
firebaseに渡して認証する
事前にfirebaseライブラ
リを初期化しておく
JWTを一部デコードし
、検証用の公開鍵も別
途取得する
検証しつつJWT全体を
デコードし、ユーザー
名を取り出して新たな
UIDとする
カスタム認証だと、UIDが
自前で生成したものになる
JavaScript でカスタム認証システムを使用して Firebase 認証を行
う
FirebaseのLINEカスタム認証をAWSのサーバーレスで実装してみ
た
Securing Applications and Services Guide 2.2. JavaScriptアダプタ
ー
[Python] PyJWT で Google OAuth 2.0 API の ID Token を検証

More Related Content

More from iPride Co., Ltd.

AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。iPride Co., Ltd.
 
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。iPride Co., Ltd.
 
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものですAWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものですiPride Co., Ltd.
 
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門  2024/01/26の勉強会で発表されたものです【アイ・プライド】AWS SAM入門  2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】iPride Co., Ltd.
 
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。iPride Co., Ltd.
 
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強iPride Co., Ltd.
 
OpenID Connectについて
OpenID ConnectについてOpenID Connectについて
OpenID ConnectについてiPride Co., Ltd.
 
画像生成AIの問題点
画像生成AIの問題点画像生成AIの問題点
画像生成AIの問題点iPride Co., Ltd.
 
MVCになぞらえて理解するReact
MVCになぞらえて理解するReactMVCになぞらえて理解するReact
MVCになぞらえて理解するReactiPride Co., Ltd.
 
AIについて学んだこと ~ 生成AIとは? ~
AIについて学んだこと ~ 生成AIとは? ~AIについて学んだこと ~ 生成AIとは? ~
AIについて学んだこと ~ 生成AIとは? ~iPride Co., Ltd.
 
ゼロトラストについて学んだこと
ゼロトラストについて学んだことゼロトラストについて学んだこと
ゼロトラストについて学んだことiPride Co., Ltd.
 
Recoilライブラリを 触ってみる
Recoilライブラリを 触ってみるRecoilライブラリを 触ってみる
Recoilライブラリを 触ってみるiPride Co., Ltd.
 
ReactでuseEffect()を減らしたい話
ReactでuseEffect()を減らしたい話ReactでuseEffect()を減らしたい話
ReactでuseEffect()を減らしたい話iPride Co., Ltd.
 
AIについて学んだこと ~ AIとは? ~
AIについて学んだこと ~ AIとは? ~AIについて学んだこと ~ AIとは? ~
AIについて学んだこと ~ AIとは? ~iPride Co., Ltd.
 
単一責任の原則について
単一責任の原則について単一責任の原則について
単一責任の原則についてiPride Co., Ltd.
 
AWS CloudFormationを触ってみた
AWS CloudFormationを触ってみたAWS CloudFormationを触ってみた
AWS CloudFormationを触ってみたiPride Co., Ltd.
 
XSSについて調べたこと
XSSについて調べたことXSSについて調べたこと
XSSについて調べたことiPride Co., Ltd.
 
Bootstrapを使用した画面設計 〜Bootstrapの基本(グリッドシステム・ブレークポイント)〜
Bootstrapを使用した画面設計 〜Bootstrapの基本(グリッドシステム・ブレークポイント)〜Bootstrapを使用した画面設計 〜Bootstrapの基本(グリッドシステム・ブレークポイント)〜
Bootstrapを使用した画面設計 〜Bootstrapの基本(グリッドシステム・ブレークポイント)〜iPride Co., Ltd.
 

More from iPride Co., Ltd. (20)

AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
 
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
 
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものですAWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
 
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門  2024/01/26の勉強会で発表されたものです【アイ・プライド】AWS SAM入門  2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
 
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
 
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強
 
OpenID Connectについて
OpenID ConnectについてOpenID Connectについて
OpenID Connectについて
 
画像生成AIの問題点
画像生成AIの問題点画像生成AIの問題点
画像生成AIの問題点
 
AI入門
AI入門AI入門
AI入門
 
MVCになぞらえて理解するReact
MVCになぞらえて理解するReactMVCになぞらえて理解するReact
MVCになぞらえて理解するReact
 
AIについて学んだこと ~ 生成AIとは? ~
AIについて学んだこと ~ 生成AIとは? ~AIについて学んだこと ~ 生成AIとは? ~
AIについて学んだこと ~ 生成AIとは? ~
 
OAuth2.0について
OAuth2.0についてOAuth2.0について
OAuth2.0について
 
ゼロトラストについて学んだこと
ゼロトラストについて学んだことゼロトラストについて学んだこと
ゼロトラストについて学んだこと
 
Recoilライブラリを 触ってみる
Recoilライブラリを 触ってみるRecoilライブラリを 触ってみる
Recoilライブラリを 触ってみる
 
ReactでuseEffect()を減らしたい話
ReactでuseEffect()を減らしたい話ReactでuseEffect()を減らしたい話
ReactでuseEffect()を減らしたい話
 
AIについて学んだこと ~ AIとは? ~
AIについて学んだこと ~ AIとは? ~AIについて学んだこと ~ AIとは? ~
AIについて学んだこと ~ AIとは? ~
 
単一責任の原則について
単一責任の原則について単一責任の原則について
単一責任の原則について
 
AWS CloudFormationを触ってみた
AWS CloudFormationを触ってみたAWS CloudFormationを触ってみた
AWS CloudFormationを触ってみた
 
XSSについて調べたこと
XSSについて調べたことXSSについて調べたこと
XSSについて調べたこと
 
Bootstrapを使用した画面設計 〜Bootstrapの基本(グリッドシステム・ブレークポイント)〜
Bootstrapを使用した画面設計 〜Bootstrapの基本(グリッドシステム・ブレークポイント)〜Bootstrapを使用した画面設計 〜Bootstrapの基本(グリッドシステム・ブレークポイント)〜
Bootstrapを使用した画面設計 〜Bootstrapの基本(グリッドシステム・ブレークポイント)〜
 

Firebase Authenticationと独自Keycloakサーバーとを連携できないか頑張ってみた