WSOFTアカウント
1,300行くらいある
構成図
https://gyazo.com/46bbf0390a600f482a7330c88abebe81
アーキテクチャ
マルチサービス
WebApp
React + TypeScript
フロントエンド
設定画面など
Core
Go
OAuth2/OIDCフロー制御
Gatekeeper
Go
権限制御
Nginx
リバースプロキシ
他
Ory Hydra
OAuth2サーバ
Ory Keto
認可DB
Auth0
認証フロントエンド
見どころ
認証フロー
code:_
ユーザ → Hydra(認可要求)→ Auth0(認証)→ Core Service(トークン交換)→ Hydra(認可完了)
Auth0 を IdP として活用しながら、標準 OAuth2/OIDC サーバ(Hydra)を独立して持つことで、外部アプリへの OIDC 発行や複雑な権限制御が可能になっている。
アクセス制御
Ketoを使って、Zanzibar モデルによる細かい粒度の権限管理をしている Gatekeeper は Keto を API キー認証でラップした Clean Architecture で実装されている
code:_
Domain → UseCase → Handler → Infrastructure(Keto)
インフラ
本番・ステージング環境共にフルサイズのKuberneteus上で運用している
テスト
ユニットテスト
Playwright
Storybook