6.9K Views
October 06, 23
スライド概要
2023/10/5「[CADDi × TIER IV共催] BtoB SaaSを支えるモダンな認証認可基盤と技術選定背景」
発表者:澤田 翔太
TIER IV OCTOBER TIER IV / 2023 Ory Stackで作る認証基盤 2023 / 10 / 05 TITLE
TIER IV Speaker @sawadashota @xioota @sawadashota Shota SAWADA Auth Engineer
TIER IV Agenda 1. Oryについて 2. TIER IVの認証基盤 3. 1年半運用してみて 4. 今後の課題・まとめ 3
Oryについて
TIER IV Oryとは? ● 認証認可のOSSを開発しているドイツの会社 ● 認証、認可に関するOSSをモジュール式に提供
TIER IV Oryが提供するコンポーネント Your API Identity & Access Proxy Identity server OAuth 2.0 / OpenID Connect Permission & Role Management
TIER IV 特徴: モジュール単位で組み込み可能 Your App 元々あるユーザープールを活かして、 OAuth 2.0 / OpenID Connectを追加実装したい Your App OAuth2.0 / OpenID Connect
TIER IV 特徴: Headless Your SPA Kratos SDK Identity server
TIER IVの認証基盤
TIER IV 認証基盤の位置づけ: 初期の姿 2つのIdentity Provider(IdP) / OpenID Provider(OP) 運行管理 App 地図管理 App 車載 App TIER IV Account AWS Cognito (内製) 遠隔運転 App バス停 App エンドユーザーが自身のアカウントで ログインして使用するアプリ 車内やバス停などに置かれるアプリ
TIER IV 認証基盤の位置づけ: 現在の姿 OPのアクセストークンを認可サーバのアクセストークンに交換 ここでいうOPはTIER IV AccountもしくはAWS Cognitoを指す バックエンドのAPIを呼ぶときに使用 バックエンドはどのOPで認証されたかを知る必要はない ①Authorization Code Flow ③UserInfo TIER IV Account 1. OPのアクセストークンを取得 2. OPのアクセストークンを認可サーバに渡す 3. 認可サーバはOPのUserInfoエンドポイント ②Token Exchange 運行管理 App を使用して、サブジェクトを特定 認可サーバ ④Access Token 4. アクセストークンを発行 5. アクセストークンを使用してAPIを呼び出し API ⑤API call with Access Token 認可についての過去の発表 https://www.docswell.com/s/TIER_IV/524WMM-2023-09-14-114252
TIER IV 2種類のアカウント Personal Account アカウント管理・ ログイン TIER IV Account 行き来可能 Organization Account ログイン アカウント管理 TIER IV Account アカウント管理 認可サーバ
TIER IV TIER IV Account の Architecture Identity server 自前実装 Identity & Access Proxy Kratosの振る舞いをカスタマイズ ● IDのmapping ● Kratosの追加バリデーション ● HydraとKratosの連携 ● 認可サーバ連携用API OAuth 2.0 / OpenID Connect
TIER IV Why Ory? ● ● 旧システムから移行する際のデータマイグレーション ○ Account Password ○ OAuth 2.0 Client ID / Secret 問題が発生した際に調査・対応できるか ○ チームにGo言語が得意なメンバーが多い ○ コントリビューターフレンドリー
1年半運用してみて
TIER IV 1年半の運用のハイライト ● Kratosがv0.8からv1.0になった ● Hydraがv1.10からv2.1になった ● 細かい不具合の修正
TIER IV Kratosがv0.8からv1.0になった v0.8 * Emailのテキストをカスタマイズ可能に v0.9 * パスワード等のCredentialsのインポートが可能に * WebAuthnでPasswordless loginが可能に v0.10 * Email verificationやアカウントrecoveryにOTPを選択可能に v0.11 * Hydraとのインテグレーション v0.13 v1.0
TIER IV Hydraがv1.10からv2.1になった v1.10 v1.11 * Kratosとのインテグレーション v2.0 * OAuth 2.0 Client IDを指定不可に v2.1 * RP単位でConsentをスキップ設定可能に v2.2 * Kratosとログアウト連携
TIER IV Kratos / Hydra バージョンアップの対応 Breaking Changes ● ConfigurationファイルのKey名やデフォルトの振る舞いの変更 ● API (Client SDKのバージョンアップ) Data Migration ● DB Migration前後での非互換 ● Hydra v2.0にメジャーバージョンアップした際に大量のAlter Tableが走って数十分の時 間を要した
TIER IV 細かい不具合の修正 ● HydraでDatadog Tracingが一時サポート外になった ● 本来は4xxでハンドリングすべき500エラーとの戦い
TIER IV ライブラリ側を修正するとリリースに時間がかかる Ory / x Identity & Access Proxy Identity server Ory / fosite OAuth 2.0 / OpenID Connect Permission & Role Management 1. 2. 3. 4. Ory / x に修正PRを出し、マージされる Ory / x のリリースを待つ (1ヶ月以内) hydra等で Ory / x をバージョンアップ hydra等のリリースを待つ (3ヶ月以内)
今後の課題・まとめ
TIER IV 今後の課題・やっていきたいこと ● ● Kratos Issueにある課題の解決 ○ Account Enumeration Attack #133 ○ Throttling repeated login requests #654 Kratos用に実装している「自前実装」をなくしていく活動 ○ Kratos / Hydra にとって受け入れ可能なFeature Requestにして提案・実装
TIER IV まとめ ● OryのOSSはモジュール式で既存のシステムに部分的に採用することができる。 ● すでに稼働中の認証基盤から移行する場合、データマイグレーションがネックの1つに なるが、Kratosはクレデンシャルのインポートもサポートしている。 ● どのリポジトリもアクティブにメンテナンスされており、バージョン追従コストもあま り高くない。 ● Oryはコントリビューターにフレンドリーだが、修正対象がライブラリ側だった場合は リリースに反映されるまでに時間がかかる。
TIER IV CONTACT US https://tier4.jp/ Thanks Again !
TIER IV Appendix. 関連リンク ● 認可についての過去の発表: 自動運転サービスの認証認可 ● リプレース時のブログ: ID基盤をリプレースしました ○ Ory Summit 2022の登壇資料