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
Okta × OpenID Connect × FIDO2
Search
kg0r0
April 13, 2021
2
1.7k
Okta × OpenID Connect × FIDO2
第1回 Okta勉強会 #jougでの登壇資料です。
OktaでのOIDCおよびFIDOの設定方法について説明しています。
資料作成時点で無料アカウントの範囲内で利用できる機能のみでやっています。
kg0r0
April 13, 2021
Tweet
Share
More Decks by kg0r0
See All by kg0r0
Twitter OAuth2.0 Beta
kg0r0
0
930
RPで受け入れる認証器を選択する~Idance lesson 2~
kg0r0
0
47
ChromeからMacBookのTouchIDでWebAuthenticationする
kg0r0
0
22
Credential Handler API
kg0r0
0
1.1k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Art, The Web, and Tiny UX
lynnandtonic
296
20k
Side Projects
sachag
452
42k
The Cult of Friendly URLs
andyhume
78
6k
Git: the NoSQL Database
bkeepers
PRO
425
64k
Into the Great Unknown - MozCon
thekraken
31
1.5k
Agile that works and the tools we love
rasmusluckow
327
21k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Fontdeck: Realign not Redesign
paulrobertlloyd
81
5.2k
GraphQLの誤解/rethinking-graphql
sonatard
66
9.9k
Transcript
Okta × OpenID Connect × FIDO2 第1回 Okta勉強会 #joug
自己紹介 • 合路健人 (@kg0r0) • 社会人5年目 • 認証/認可基盤の開発や脆弱性診断などに従事 • 技術同人サークル「Secure旅団」で不定期活動
https://secure-brigade.booth.pm/ • 趣味でOktaなどのIdPを触っている
全体処理フロー User Agent RP OP スタート OPへリダイレクト (302) Authentication Request
RPへリダイレクト (302) Authentication Response Token Request Token Response OpenID Connect ユーザー認証および同意 FIDO2
もくじ • OpenID Connect (OIDC) とは • Okta – OIDC設定
• FIDO2とは • Okta – FIDO2設定 • デモ • おわりに
OpenID Connect (OIDC) とは
OpenID Connect (OIDC) とは • IdP (OP) が管理するアカウント情報でサード パーティーアプリケーションにログイン 可能
にする ◦ 例えばconnpassにGithubアカウントでログインなど ◦ アプリケーション・ユーザーともにID・パスワードの 管理する手間が省くことができる • アプリケーション (RP) はIdPが提供するユー ザーの属性情報を利用できる
OpenID Connect 2つのClient Type • Confidential Client クライアントシークレットの機密性を維持することができるクライアント (Webアプリケーションなど) •
Public Client クライアントシークレットの機密性を維持することができないクライアン ト (JavaScriptアプリやNativeアプリなど)
OpenID Connect 3つのフロー • Authorization Code Flow • Implicit Flow
• Hybrid Flow ※ アプリケーションの種類 (Client Type) が利用するフローに影響
(参考) OAuth 2.0 Playground • OAuth/OpenID Connectのフロ ーを実際に手を動かしながら解 説付きで学ぶことが可能 •
Sponsored By Okta • URL: https://www.oauth.com/playgr ound/ https://www.oauth.com/playground/
Okta – OIDC設定 ※ 2021年3月時点のUIをもとに説明しています。 UIは変わることが想定されるため設定時点のガイドをもとに設定してください。
OIDC設定の進め方 • 自分のアプリケーションがどの タイプに分類されるか確認する • 開発言語、ライブラリの選定が 完了したらガイドに沿って設定 する https://developer.okta.com/code/ 主に
Confidential Client 主にPublic Client
OIDC設定の進め方 • 自分のアプリケーションがどの タイプに分類されるか確認する • 開発言語、ライブラリの選定が 完了したらガイドに沿って設定 する
OIDC設定 • [Applications] からApplication の追加 • アプリケーションのタイプをも とにPlatformを選択 • ユーザー認証後のリダイレクト
先を登録 • 設定に必要な値を確認 • ユーザーやグループを作成 • アプリケーションにユーザーや グループをアサイン
OIDC設定 • [Applications] からApplication の追加 • アプリケーションのタイプをも とにPlatformを選択 • ユーザー認証後のリダイレクト
先を登録 • 設定に必要な値を確認 • ユーザーやグループを作成 • アプリケーションにユーザーや グループをアサイン
OIDC設定 • [Applications] からApplication の追加 • アプリケーションのタイプをも とにPlatformを選択 • ユーザー認証後のリダイレクト
先を登録 • 設定に必要な値を確認 • ユーザーやグループを作成 • アプリケーションにユーザーや グループをアサイン
OIDC設定 • [Applications] からApplication の追加 • アプリケーションのタイプをも とにPlatformを選択 • ユーザー認証後のリダイレクト
先を登録 • 設定に必要な値を確認 • ユーザーやグループを作成 • アプリケーションにユーザーや グループをアサイン
OIDC設定 • [Applications] からApplication の追加 • アプリケーションのタイプをも とにPlatformを選択 • ユーザー認証後のリダイレクト
先を登録 • 設定に必要な値を確認 • ユーザーやグループを作成 • アプリケーションにユーザーや グループをアサイン
OIDC設定 • [Applications] からApplication の追加 • アプリケーションのタイプをも とにPlatformを選択 • ユーザー認証後のリダイレクト
先を登録 • 設定に必要な値を確認 • ユーザーやグループを作成 • アプリケーションにユーザーや グループをアサイン
FIDO2 (WebAuthn)とは
FIDOとは • 公開鍵暗号方式による認証 • パスワードへの依存度を減らし、利便性と安全性を向上する 引用元) https://www.slideshare.net/FIDOAlliance/introduction-to-fido-alliance-66730790
FIDO 3つの仕様 引用元) https://www.slideshare.net/FIDOAlliance/2020-0218-fidofido
FIDO2認証モデル (概略) クライアント (ブラウザ) 認証器 (Yubikeyなど) FIDOサーバー / RP (Oktaなど)
1. 認証要求 (チャレンジなど) 4. ローカル認証 2.WebAuthentication API 呼び出し 5. 認証結果 (署名など) 6. 認証結果 (署名など) 3. 認証要求 (チャレンジなど) 7. 署名などの検証
Okta – FIDO設定 ※ 2021年3月時点のUIをもとに説明しています。 UIは変わることが想定されるため設定時点のガイドをもとに設定してください。
FIDO2設定 • [Security] > [Multifactor]から FIDO2(WebAuthn)を有効化 • Factor Enrollmentからアサイン するグループを指定
• 認証器の登録タイミングを指定 • [Security] > [Authentication] で 要求するタイミングを指定
FIDO2設定 • [Security] > [Multifactor]から FIDO2(WebAuthn)を有効化 • Factor Enrollmentからアサイン するグループを指定
• 認証器の登録タイミングを指定 • [Security] > [Authentication] で 要求するタイミングを指定
FIDO2設定 • [Security] > [Multifactor]から FIDO2(WebAuthn)を有効化 • Factor Enrollmentからアサイン するグループを指定
• 認証器の登録タイミングを指定 • [Security] > [Authentication] で 要求するタイミングを指定
FIDO2設定 • [Security] > [Multifactor]から FIDO2(WebAuthn)を有効化 • Factor Enrollmentからアサイン するグループを指定
• 認証器の登録タイミングを指定 • [Security] > [Authentication] で 要求するタイミングを指定
デモ
サンプルアプリケーションの起動 $ git clone https://github.com/okta/samples-nodejs-express-4.git $ cd samples-nodejs-express-4/ $ npm
install $ npm run okta-hosted-login-server 参考) https://github.com/okta/samples-nodejs-express-4/tree/master/okta-hosted-login 事前に環境変数ISSUER、CLIENT_ID、CLIENT_SECRETをそれぞれ設定
ログイン画面 User Agent RP OP スタート OPへリダイレクト (302) Authentication Request
RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意
ID / PW 認証画面 User Agent RP OP スタート OPへリダイレクト
(302) Authentication Request RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意
FIDO2 登録画面 (初回) User Agent RP OP スタート OPへリダイレクト (302)
Authentication Request RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意
FIDO2 認証画面 User Agent RP OP スタート OPへリダイレクト (302) Authentication
Request RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意
ログイン完了画面 User Agent RP OP スタート OPへリダイレクト (302) Authentication Request
RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意
おわりに
おわりに • OIDCおよびFIDO2の概要を説明 • OktaのOIDCおよびFIDO2の基本的な設定方法を紹介 • OIDCの導入でアプリケーション・ユーザーともにID・パスワードの管理 する手間が省くことができる • FIDO2など比較的新しい技術の恩恵を受けることができる
• 個人的にはFIDO2のパスワードレスログインでの利用の状況などに注目
(参考) Okta GitHub • 便利なライブラリが複数存在 • 今回のデモアプリに組み込まれ ているライブラリもここで開発 されている •
Okta NodeJS OIDC Middleware (https://github.com/okta/okta- oidc- js/tree/master/packages/oidc- middleware) https://github.com/okta
参考 • Add User Authentication to Your Node.js App https://developer.okta.com/code/nodejs/
• okta Help Center WebAuthn (MFA) https://help.okta.com/en/prod/Content/Topics/Security/mfa-webauthn.htm • How FIDO2 + WebAuthn Offer a Seamless Secure Login https://www.okta.com/blog/2019/04/how-fido2-webauthn-offer-a-seamless- secure-login/ • パスワードのいらない世界へ : FIDOアライアンスとFIDO認証の最新状況 https://www.slideshare.net/FIDOAlliance/2020-0218-fidofido