Single Tenant SSO しかできないところに Multi Tenant SSO したい!という話があって。
色々調べたらkeycloakとかauthentikとかzitadelとかとかで組むのが一般的そうなんだけど、DBやRedisが必要だったりするし、機能が多すぎて、ちょっと腰が重たい。
あるいは、Federationできる系のSaaSを使う、Oktaとか。というのも手としてはある。
でも、もっと、こう、シンプルでいいんだよな!と思って調べているとSimpleSAMLPHPを見つけた。ただPHPはちょっと都合がわるい…。 https://simplesamlphp.org/
結論、ちょうどいいのがなさそうなので、claude codeをお供にそういうものを作ってみた。
https://github.com/sters/simple-saml-proxy
特徴としては、受け付けるSP + 実際のIdPを環境変数でいろいろ書いたらすぐ使える。DBなし。キャッシュもなし。とにかく、シンプルなプロキシ。
最初は crewjson/saml をつかってIdPとSPを実装していたけれど、IdPの実装が謎すぎて詰んでしまった。zitadelがGoだということで、これの実装をみたら、彼らもIdP実装は難しいからっていうので zitadel/saml を作ったらしい。なので、これを使わせてもらってIdPを実装した。SPはそのまま。
つながるよね〜〜〜って確認がメインなので、プロダクション運用に耐えるかは不明。特にセキュリティ。