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
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Music & Morning Musume
bryan
46
6.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
GitHub's CSS Performance
jonrohan
1030
460k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Scaling GitHub
holman
458
140k
Rails Girls Zürich Keynote
gr2m
93
13k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
9
680
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
790
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
1.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