微軟在即將推出的.NET 8中,改進ASP.NET Core在身分驗證、授權和身分管理函式庫,使得商用專案IdentityServer不再是預設,同時也針對單頁應用程式,提供權杖身分驗證功能,官方承諾,新的API將會讓使用者登入和身分管理的開發體驗變得更簡單。

現在要於ASP.NET Core應用程式中啟用身分驗證,開發者有3種選擇,分別是使用內建的ASP.NET Core Identity解決方案、Azure AD和第三方以套件、容器和雲端服務形式提供的解決方案。

內建的ASP.NET Core Identity中的Identity Manager,可以提供處理使用者、角色的API,而Identity Store則可用於儲存持久身分資訊,ASP.NET Core Identity還與ASP.NET Core身分驗證系統SignInManager整合,且提供可管理用戶的UI。

但是當前單頁應用程式在ASP.NET Core Identity使用上存在一些限制,自定義身分驗證相關的頁面,會強迫應用程式恢復成伺服器端渲染頁面,微軟提到,他們正在研究新的解決方案,以支援沒有外部相依性的應用場景,供開發者能夠選擇開箱即用的解決方案,但同時又保有其他選項的自由。

微軟將從.NET 8中的單頁應用程式模板,移除對Duende IdentityServer的依賴。過去微軟在.NET Core 3.1的Angular、React和Blazor WebAssembly模板,整合IdentityServer4以支援單頁應用程式中的JSON Web Token(JWT)安全性,但在2020年的時候,IdentityServer開源專案維護者認為光靠贊助的收入,不足以支撐專案運作,因此宣布IdentityServer4 v4.x將是最後一個開源版本。

此後,IdentityServer維護者便成立公司Duende,並且將IdentityServer改為商業授權,不過微軟在2021年發布的.NET 6仍繼續內建IdentityServer,因為微軟認為IdentityServer仍是當時ASP.NET Core創建自部署、本地端託管權杖(Token)服務最成熟的選項。Duende IdentityServer模板具有雙重授權,可免費用於開發、測試和學習,當組織年收入低於100萬美元,也可以免費使用,但高於100萬美元就需要支付使用費用。

不過,仍有許多用戶不希望支付額外的費用,因此微軟將在.NET 8中進行調整,讓新端點無需仰賴外部相依項目,就可在單頁應用程式使用基於權杖的身分驗證。雖然微軟會從單頁應用程式模板中,移除對Duende IdentityServer的相依性,但是開發人員仍可以繼續選擇使用Duende的解決方案,只是微軟將不預設提供。

具體來說,ASP.NET Core 8在身分驗證有兩個改進方向,第一是擴展Cookie身分驗證,進一步支援單頁應用程式,改善從單頁網頁應用程式過渡到伺服器渲染,所導致的不一致體驗,過去用戶要自定義體驗,需要覆蓋預設的伺服器端渲染頁面,而在.NET 8中官方將會添加API端點,使開發人員能夠在自定義UI採用單頁應用程式。

而順應React、Angular和Blazor WebAssembly等單頁應用程式框架的發展,以及開發者的要求,微軟也計畫擴展現有身分驗證平臺,改進.NET 8對權杖身分驗證系統的支援,官方表示,雖然現有以Cookie為基礎的解決方法和功能依然可行,但是使用權杖身分驗證將更靈活,更適合單頁應用程式的身分驗證需求。

微軟計畫增加一個不需要第三方相依項目,或是授權的解決方案,與現有Cookie方法提供相同的功能,但將身分驗證資料是封裝在權杖中而非Cookie,可在無法良好使用Cookie時,有額外的選擇。

熱門新聞

Advertisement