Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Okta × OpenID Connect × FIDO2

kg0r0
April 13, 2021
1.5k

Okta × OpenID Connect × FIDO2

第1回 Okta勉強会 #jougでの登壇資料です。
OktaでのOIDCおよびFIDOの設定方法について説明しています。
資料作成時点で無料アカウントの範囲内で利用できる機能のみでやっています。

kg0r0

April 13, 2021
Tweet

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. OpenID Connect (OIDC) とは

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. Okta – OIDC設定

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. FIDO2 (WebAuthn)とは

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. Okta – FIDO設定

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. デモ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  35. おわりに

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide