這是一個與概念方法相關的相當問題。
所以我有兩個專案 - 其中一個身份驗證已經實作并且作業正常。這是一個帶有 OpenID Cookie 的 .net core SPA(沒有 ASP.NET Core Identity)。
第二個專案是 REST API,我想使用該 cookie 來授權一些端點,所以基本上是 SSO。
對我來說最大的挑戰是我不知道我應該如何修改第二個專案以“接受”第一個專案的 cookie - 我至少需要一些起點。
這個根本沒有幫助:
uj5u.com熱心網友回復:
您參考的檔案實際上包含您需要的一切。但這需要一些基本知識才能理解。要在另一個應用程式中使用由一個應用程式設定的 cookie,您需要確保兩件事:
cookie 應該發送到兩個應用程式
1.1。如果應用程式托管在同一域但路徑不同,則需要將 cookie 設定Path為公分母。例如,這里的共同點是/:
https://my-domain.com/app1
https://my-domain.com/app2
這里是/api(但/也是有效的)
https://my-domain.com/api /app1
https://my-domain.com/api/app2
1.2 如果應用程式托管在不同的域中,它們必須是某個公共域的子域。將 cookie 域設定為公共域值以在子域之間共享它。
例如,這里的公共域是.company.com:
https ://sub-domain1.company.com
https://sub-domain2.company.com
這也是公共域的示例.company.com
https://company.com
https://sub-domain2.company.com
但是這兩個域不能共享cookie,因為它們不有共同域:
https ://sub-domain1.company1.com
https://sub-domain2.company2.com
1.3 如果您的應用程式托管在具有共同子域和不同路徑的不同域上,您還可以混合域和路徑配置. 例如,這里的域應該是.company.com和路徑/:
https://sub-domain1.company.com/api/app1
https://sub-domain2.company.com/app2兩個應用程式都可以解密 cookie 并了解其內容。
2.1 如果應用程式托管在同一臺機器上,您可以使用檔案存盤來保存資料保護密鑰:
services.AddDataProtection()
.PersistKeysToFileSystem("{PATH TO COMMON KEY RING FOLDER}")
2.2 如果應用程式托管在不同的機器上,您需要使用另一種型別的存盤,以便兩個應用程式都能夠訪問它并讀取保護密鑰。例如,您可以將Amazon KMS服務與Amazon.AspNetCore.DataProtection.SSM nuget 一起使用:
services.AddDataProtection()
.PersistKeysToAWSSystemsManager("/MyApplication/DataProtection");
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450886.html
