IdentityServer 4,OpenIdConnect 重定向到外部登錄 url
我正在嘗試建構多個小型 ASP.Net 核心 Mvc 服務,這些服務連接到使用 IdentityServer4 建構的身份伺服器。
我已經在看起來像這樣的 MVC 服務上設置了 OpenIdOption
app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationScheme = "Cookies" }); app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions { AuthenticationScheme = "oidc", SignInScheme = "Cookies", Authority = "http://localhost:5000", RequireHttpsMetadata = false, ClientId = "mvc", ClientSecret = "secret", ResponseType = "code id_token", Scope = { "api1", "offline_access" }, GetClaimsFromUserInfoEndpoint = true, SaveTokens = true });
http://localhost:5000我的身份伺服器執行的端點在哪裡。假設我的 MVC 伺服器在http://localhost:5002我看到當我[Authorize]為控制器設置一個屬性時,它會重定向到我的身份伺服器,如果檢查失敗,它會在http://localhost:5002/signin-oidc現在我遇到的問題是我希望登錄頁面由我的
Identity Server主機託管,http://localhost:5000/signin-oidc以便所有 MVC 服務都使用它來獲取使用者身份,但不幸的是我無法看到如何設置它RedirectUrl。我知道該圖在參考流程方面的工作方式不准確,只是試圖簡化我想要完成的工作:)
有可能做到這一點嗎?
問候基蘭
您似乎誤解了該
/signin-oidc路線的用途。一般流程是這樣的:
使用者訪問 ASP.NET Core 站點。
應用程序要求預設身份驗證方案 ,
"Cookies"進行身份驗證。cookie 身份驗證處理程序嘗試從(簽名的)cookie 資訊中恢復身份。
Cookie 身份驗證失敗,因為缺少 cookie。
應用程序要求預設質詢方案
"oidc"執行身份驗證質詢。OpenIdConnect 身份驗證處理程序重定向到 OpenId Connect 身份驗證提供程序,這是您的身份伺服器。
使用者在 Identity Server 上成功登錄。
使用者被 POST 到
/signin-oidc哪個是 OpenId Connect 身份驗證處理程序的遠端登錄地址。OpenId Connect 身份驗證中間件處理
/signin-oidc路由並從 Identity Server 發出的登錄請求中檢索使用者資訊。OpenId Connect 身份驗證方案創建身份驗證票證並要求配置的登錄方案登錄使用者。
Cookie 身份驗證方案處理登錄過程並創建使用者身份。它將身份儲存在 cookie 中,因此可以在將來的請求中檢索它,而無需再次通過整個身份驗證質詢管道。
使用者已登錄。
因此
/signin-oidc端點是返回到您的應用程序以完成OpenId Connect 身份驗證流程的登錄過程的方式。當使用者到達該地址時,他們已經在 Identity Server 上登錄,他們將被重定向回應用程序以繼續他們最初離開的地方。通常,使用者在該路由上花費的時間是最少的,因為它會在處理登錄請求後立即重定向回“正確的”應用程序路由。
所以不,這裡不會有登錄表單。登錄過程本身是您的 OpenId Connect 身份驗證提供者(您的身份伺服器)的責任。
google.com這就是關於這一點的全部意義,因此您例如使用您的 Google 憑據安全登錄,而不是my-random-and-probably-untrusted-app.example.com絕對不應該獲取您實際的 Google 憑據。
