Ory Stackで作る認証基盤

3.7K Views

October 06, 23

スライド概要

2023/10/5「[CADDi × TIER IV共催] BtoB SaaSを支えるモダンな認証認可基盤と技術選定背景」
発表者:澤田 翔太

profile-image

TIER IV(ティアフォー)は、「自動運転の民主化」をビジョンとし、Autowareを活用したソフトウェアプラットフォームと統合開発環境を提供しています。 #Autoware #opensource #AutonomousDriving #deeptech

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

TIER IV OCTOBER TIER IV / 2023 Ory Stackで作る認証基盤 2023 / 10 / 05 TITLE

2.

TIER IV Speaker @sawadashota @xioota @sawadashota Shota SAWADA Auth Engineer

3.

TIER IV Agenda 1. Oryについて 2. TIER IVの認証基盤 3. 1年半運用してみて 4. 今後の課題・まとめ 3

4.

Oryについて

5.

TIER IV Oryとは? ● 認証認可のOSSを開発しているドイツの会社 ● 認証、認可に関するOSSをモジュール式に提供

6.

TIER IV Oryが提供するコンポーネント Your API Identity & Access Proxy Identity server OAuth 2.0 / OpenID Connect Permission & Role Management

7.

TIER IV 特徴: モジュール単位で組み込み可能 Your App 元々あるユーザープールを活かして、 OAuth 2.0 / OpenID Connectを追加実装したい Your App OAuth2.0 / OpenID Connect

8.

TIER IV 特徴: Headless Your SPA Kratos SDK Identity server

9.

TIER IVの認証基盤

10.

TIER IV 認証基盤の位置づけ: 初期の姿 2つのIdentity Provider(IdP) / OpenID Provider(OP) 運行管理 App 地図管理 App 車載 App TIER IV Account AWS Cognito (内製) 遠隔運転 App バス停 App エンドユーザーが自身のアカウントで ログインして使用するアプリ 車内やバス停などに置かれるアプリ

11.

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

12.

TIER IV 2種類のアカウント Personal Account アカウント管理・ ログイン TIER IV Account 行き来可能 Organization Account ログイン アカウント管理 TIER IV Account アカウント管理 認可サーバ

13.

TIER IV TIER IV Account の Architecture Identity server 自前実装 Identity & Access Proxy Kratosの振る舞いをカスタマイズ ● IDのmapping ● Kratosの追加バリデーション ● HydraとKratosの連携 ● 認可サーバ連携用API OAuth 2.0 / OpenID Connect

14.

TIER IV Why Ory? ● ● 旧システムから移行する際のデータマイグレーション ○ Account Password ○ OAuth 2.0 Client ID / Secret 問題が発生した際に調査・対応できるか ○ チームにGo言語が得意なメンバーが多い ○ コントリビューターフレンドリー

15.

1年半運用してみて

16.

TIER IV 1年半の運用のハイライト ● Kratosがv0.8からv1.0になった ● Hydraがv1.10からv2.1になった ● 細かい不具合の修正

17.

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

18.

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とログアウト連携

19.

TIER IV Kratos / Hydra バージョンアップの対応 Breaking Changes ● ConfigurationファイルのKey名やデフォルトの振る舞いの変更 ● API (Client SDKのバージョンアップ) Data Migration ● DB Migration前後での非互換 ● Hydra v2.0にメジャーバージョンアップした際に大量のAlter Tableが走って数十分の時 間を要した

20.

TIER IV 細かい不具合の修正 ● HydraでDatadog Tracingが一時サポート外になった ● 本来は4xxでハンドリングすべき500エラーとの戦い

21.

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ヶ月以内)

22.

今後の課題・まとめ

23.

TIER IV 今後の課題・やっていきたいこと ● ● Kratos Issueにある課題の解決 ○ Account Enumeration Attack #133 ○ Throttling repeated login requests #654 Kratos用に実装している「自前実装」をなくしていく活動 ○ Kratos / Hydra にとって受け入れ可能なFeature Requestにして提案・実装

24.

TIER IV まとめ ● OryのOSSはモジュール式で既存のシステムに部分的に採用することができる。 ● すでに稼働中の認証基盤から移行する場合、データマイグレーションがネックの1つに なるが、Kratosはクレデンシャルのインポートもサポートしている。 ● どのリポジトリもアクティブにメンテナンスされており、バージョン追従コストもあま り高くない。 ● Oryはコントリビューターにフレンドリーだが、修正対象がライブラリ側だった場合は リリースに反映されるまでに時間がかかる。

25.

TIER IV CONTACT US https://tier4.jp/ Thanks Again !

26.

TIER IV Appendix. 関連リンク ● 認可についての過去の発表: 自動運転サービスの認証認可 ● リプレース時のブログ: ID基盤をリプレースしました ○ Ory Summit 2022の登壇資料