Slide 1

Slide 1 text

Okta × OpenID Connect × FIDO2 第1回 Okta勉強会 #joug

Slide 2

Slide 2 text

自己紹介 ● 合路健人 (@kg0r0) ● 社会人5年目 ● 認証/認可基盤の開発や脆弱性診断などに従事 ● 技術同人サークル「Secure旅団」で不定期活動 https://secure-brigade.booth.pm/ ● 趣味でOktaなどのIdPを触っている

Slide 3

Slide 3 text

全体処理フロー User Agent RP OP スタート OPへリダイレクト (302) Authentication Request RPへリダイレクト (302) Authentication Response Token Request Token Response OpenID Connect ユーザー認証および同意 FIDO2

Slide 4

Slide 4 text

もくじ ● OpenID Connect (OIDC) とは ● Okta – OIDC設定 ● FIDO2とは ● Okta – FIDO2設定 ● デモ ● おわりに

Slide 5

Slide 5 text

OpenID Connect (OIDC) とは

Slide 6

Slide 6 text

OpenID Connect (OIDC) とは ● IdP (OP) が管理するアカウント情報でサード パーティーアプリケーションにログイン 可能 にする ○ 例えばconnpassにGithubアカウントでログインなど ○ アプリケーション・ユーザーともにID・パスワードの 管理する手間が省くことができる ● アプリケーション (RP) はIdPが提供するユー ザーの属性情報を利用できる

Slide 7

Slide 7 text

OpenID Connect 2つのClient Type ● Confidential Client クライアントシークレットの機密性を維持することができるクライアント (Webアプリケーションなど) ● Public Client クライアントシークレットの機密性を維持することができないクライアン ト (JavaScriptアプリやNativeアプリなど)

Slide 8

Slide 8 text

OpenID Connect 3つのフロー ● Authorization Code Flow ● Implicit Flow ● Hybrid Flow ※ アプリケーションの種類 (Client Type) が利用するフローに影響

Slide 9

Slide 9 text

(参考) OAuth 2.0 Playground ● OAuth/OpenID Connectのフロ ーを実際に手を動かしながら解 説付きで学ぶことが可能 ● Sponsored By Okta ● URL: https://www.oauth.com/playgr ound/ https://www.oauth.com/playground/

Slide 10

Slide 10 text

Okta – OIDC設定 ※ 2021年3月時点のUIをもとに説明しています。 UIは変わることが想定されるため設定時点のガイドをもとに設定してください。

Slide 11

Slide 11 text

OIDC設定の進め方 ● 自分のアプリケーションがどの タイプに分類されるか確認する ● 開発言語、ライブラリの選定が 完了したらガイドに沿って設定 する https://developer.okta.com/code/ 主に Confidential Client 主にPublic Client

Slide 12

Slide 12 text

OIDC設定の進め方 ● 自分のアプリケーションがどの タイプに分類されるか確認する ● 開発言語、ライブラリの選定が 完了したらガイドに沿って設定 する

Slide 13

Slide 13 text

OIDC設定 ● [Applications] からApplication の追加 ● アプリケーションのタイプをも とにPlatformを選択 ● ユーザー認証後のリダイレクト 先を登録 ● 設定に必要な値を確認 ● ユーザーやグループを作成 ● アプリケーションにユーザーや グループをアサイン

Slide 14

Slide 14 text

OIDC設定 ● [Applications] からApplication の追加 ● アプリケーションのタイプをも とにPlatformを選択 ● ユーザー認証後のリダイレクト 先を登録 ● 設定に必要な値を確認 ● ユーザーやグループを作成 ● アプリケーションにユーザーや グループをアサイン

Slide 15

Slide 15 text

OIDC設定 ● [Applications] からApplication の追加 ● アプリケーションのタイプをも とにPlatformを選択 ● ユーザー認証後のリダイレクト 先を登録 ● 設定に必要な値を確認 ● ユーザーやグループを作成 ● アプリケーションにユーザーや グループをアサイン

Slide 16

Slide 16 text

OIDC設定 ● [Applications] からApplication の追加 ● アプリケーションのタイプをも とにPlatformを選択 ● ユーザー認証後のリダイレクト 先を登録 ● 設定に必要な値を確認 ● ユーザーやグループを作成 ● アプリケーションにユーザーや グループをアサイン

Slide 17

Slide 17 text

OIDC設定 ● [Applications] からApplication の追加 ● アプリケーションのタイプをも とにPlatformを選択 ● ユーザー認証後のリダイレクト 先を登録 ● 設定に必要な値を確認 ● ユーザーやグループを作成 ● アプリケーションにユーザーや グループをアサイン

Slide 18

Slide 18 text

OIDC設定 ● [Applications] からApplication の追加 ● アプリケーションのタイプをも とにPlatformを選択 ● ユーザー認証後のリダイレクト 先を登録 ● 設定に必要な値を確認 ● ユーザーやグループを作成 ● アプリケーションにユーザーや グループをアサイン

Slide 19

Slide 19 text

FIDO2 (WebAuthn)とは

Slide 20

Slide 20 text

FIDOとは ● 公開鍵暗号方式による認証 ● パスワードへの依存度を減らし、利便性と安全性を向上する 引用元) https://www.slideshare.net/FIDOAlliance/introduction-to-fido-alliance-66730790

Slide 21

Slide 21 text

FIDO 3つの仕様 引用元) https://www.slideshare.net/FIDOAlliance/2020-0218-fidofido

Slide 22

Slide 22 text

FIDO2認証モデル (概略) クライアント (ブラウザ) 認証器 (Yubikeyなど) FIDOサーバー / RP (Oktaなど) 1. 認証要求 (チャレンジなど) 4. ローカル認証 2.WebAuthentication API 呼び出し 5. 認証結果 (署名など) 6. 認証結果 (署名など) 3. 認証要求 (チャレンジなど) 7. 署名などの検証

Slide 23

Slide 23 text

Okta – FIDO設定 ※ 2021年3月時点のUIをもとに説明しています。 UIは変わることが想定されるため設定時点のガイドをもとに設定してください。

Slide 24

Slide 24 text

FIDO2設定 ● [Security] > [Multifactor]から FIDO2(WebAuthn)を有効化 ● Factor Enrollmentからアサイン するグループを指定 ● 認証器の登録タイミングを指定 ● [Security] > [Authentication] で 要求するタイミングを指定

Slide 25

Slide 25 text

FIDO2設定 ● [Security] > [Multifactor]から FIDO2(WebAuthn)を有効化 ● Factor Enrollmentからアサイン するグループを指定 ● 認証器の登録タイミングを指定 ● [Security] > [Authentication] で 要求するタイミングを指定

Slide 26

Slide 26 text

FIDO2設定 ● [Security] > [Multifactor]から FIDO2(WebAuthn)を有効化 ● Factor Enrollmentからアサイン するグループを指定 ● 認証器の登録タイミングを指定 ● [Security] > [Authentication] で 要求するタイミングを指定

Slide 27

Slide 27 text

FIDO2設定 ● [Security] > [Multifactor]から FIDO2(WebAuthn)を有効化 ● Factor Enrollmentからアサイン するグループを指定 ● 認証器の登録タイミングを指定 ● [Security] > [Authentication] で 要求するタイミングを指定

Slide 28

Slide 28 text

デモ

Slide 29

Slide 29 text

サンプルアプリケーションの起動 $ 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をそれぞれ設定

Slide 30

Slide 30 text

ログイン画面 User Agent RP OP スタート OPへリダイレクト (302) Authentication Request RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意

Slide 31

Slide 31 text

ID / PW 認証画面 User Agent RP OP スタート OPへリダイレクト (302) Authentication Request RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意

Slide 32

Slide 32 text

FIDO2 登録画面 (初回) User Agent RP OP スタート OPへリダイレクト (302) Authentication Request RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意

Slide 33

Slide 33 text

FIDO2 認証画面 User Agent RP OP スタート OPへリダイレクト (302) Authentication Request RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意

Slide 34

Slide 34 text

ログイン完了画面 User Agent RP OP スタート OPへリダイレクト (302) Authentication Request RPへリダイレクト (302) Authentication Response Token Request Token Response ユーザー認証および同意

Slide 35

Slide 35 text

おわりに

Slide 36

Slide 36 text

おわりに ● OIDCおよびFIDO2の概要を説明 ● OktaのOIDCおよびFIDO2の基本的な設定方法を紹介 ● OIDCの導入でアプリケーション・ユーザーともにID・パスワードの管理 する手間が省くことができる ● FIDO2など比較的新しい技術の恩恵を受けることができる ● 個人的にはFIDO2のパスワードレスログインでの利用の状況などに注目

Slide 37

Slide 37 text

(参考) Okta GitHub ● 便利なライブラリが複数存在 ● 今回のデモアプリに組み込まれ ているライブラリもここで開発 されている ● Okta NodeJS OIDC Middleware (https://github.com/okta/okta- oidc- js/tree/master/packages/oidc- middleware) https://github.com/okta

Slide 38

Slide 38 text

参考 ● 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