當未經身份驗證的用戶打開客戶端網站上的安全頁面的URL時,他/她將重定向到IdentifyServer以進行登錄,並且成功登錄後返回到客戶端的主頁面(使用默認客戶端/ IdentityServer的實現)。
問題在github RedirectUris with callback params does not work解釋說,這是客戶的責任要記住查詢字符串並具有推薦:IdentityServer客戶端示例在重定向後記住QueryString參數
如果您需要跨重定向保持狀態,然後發出 cookie的客戶端或通過官方的數據傳遞狀態參數。您通常想要使用狀態參數作爲本地保持數據的指針 - 例如,一塊餅乾。創建一個隨機名稱的cookie - 存儲需要存儲的任何內容 - 將cookie名稱 作爲狀態參數來回傳輸。只是把數據放在狀態上有一個問題,即有人可能會在返回時修改這些值。
問題Identity server 3 MVC client state parameter有類似的建議:
存儲狀態在你登錄後要重定向路徑的應用程序。 在IdSvr記錄您的用戶並重定向回您的一個着名的 回調URI後,您將讀取該狀態以知道將用戶發送到哪裏。 IOW,請在應用程序中跟蹤商店狀態,瞭解登錄後重定向 路徑。如果你把它放在ProtocolMessage.State ,那麼請注意有人可以篡改它。如果你保護 狀態(簽名/加密),那麼沒關係。在您的應用中保留 狀態可能會更容易/更安全。
由於這是一個非常典型的場景,我希望有人有這樣的實現的例子。 任何人都可以分享示例代碼/給一些文章的參考?
我的特定情況更多信息:
我的客戶是網頁形式的網站以實現類似IdentityServer3.Samples WebFormsClient。
1.用戶打開https://mydomain/mypage?querystringparams
2.In的Web.config我
<authorization>
<deny users="?" />
</authorization>
3.In客戶Startup.cs相關設置
new OpenIdConnectAuthenticationOptions
{
Authority = "http://localhost:5000/",//IdentityServer4 Host
RedirectUri ="https://mydomain/"
}
4.On IdentityServer相關設置
new Client
{
RedirectUris = { "https://mydomain/" , "http://mydomain/" }
}
- 登錄後用戶重定向到
https://mydomain/
,但需要重定向到https://mydomain/mypage?querystringparams