前言:
家裡有些Web服務使用反向代理,有網站沒有認證功能,需要個SSO。
之前工作做過SSO SAML IdP,這次就嘗試OIDC IdP + 反向代理 + Cookie-Based授權閘道。
成果:
整份專案在
https://gitlab.com/ycfunet/sso-yarper
實做過程:
這個實做其實不太順利,最早讓claude-code寫過OAuth2 Demo Site,看起來會動。
之後又讓claude-code寫過OIDC IdP,但OAuth2和OIDC IdP卻寫出不同的程式碼內容。
再者,claude-code寫yarp不太行,它會一直混淆yarp的設定檔設定,以及.NET Middleware,甚至都跟它說,就是要用yarp的pipeline都還會改在Middleware,最後是自己參考Microsoft的yarp sample實做後,要求claude-code按照我寫出的sample進行修改,並且指定修改程式碼位置才改出。
因為反向代理本來就有在用,要測試就得先關閉原服務測試,因此斷斷續續實做sso-yarper。
另外,早期規劃是把oidc和yarp實做在一起,但實際測試發現,yarper內的路由會和oidc的登入頁面衝突,登入頁面是SPA純前端,它會透過path在前端路由,yarper在認證狀態時,也會需要path,這造成兩個功能衝突,因此後來直接拆開,oidc idp歸idp,yarp認證時則改做成oidc rp,跳轉認證。
這套程式從DBML可以看得出,實做的時間跨度很長,事實上也在家裡運作一段時間了,還不錯用。
結論:
OIDC SSO是頗有價值的實做,跟Yarp結合是很關鍵的實現,cloudflare的零信任架構其實就是相同作法,透過反向代理與認證結合,做到Web Service安全防護。
沒有留言:
張貼留言