Asp.net-Mvc

IdentityServer 4,OpenIdConnect 重定向到外部登錄 url

  • October 9, 2018

我正在嘗試建構多個小型 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路線的用途。一般流程是這樣的:

  1. 使用者訪問 ASP.NET Core 站點。

  2. 應用程序要求預設身份驗證方案 ,"Cookies"進行身份驗證。

  3. cookie 身份驗證處理程序嘗試從(簽名的)cookie 資訊中恢復身份。

  4. Cookie 身份驗證失敗,因為缺少 cookie。

  5. 應用程序要求預設質詢方案"oidc"執行身份驗證質詢。

  6. OpenIdConnect 身份驗證處理程序重定向到 OpenId Connect 身份驗證提供程序,這是您的身份伺服器。

  7. 使用者在 Identity Server 上成功登錄。

  8. 使用者被 POST 到/signin-oidc哪個是 OpenId Connect 身份驗證處理程序的遠端登錄地址。

  9. OpenId Connect 身份驗證中間件處理/signin-oidc路由並從 Identity Server 發出的登錄請求中檢索使用者資訊。

  10. OpenId Connect 身份驗證方案創建身份驗證票證並要求配置的登錄方案登錄使用者。

  11. Cookie 身份驗證方案處理登錄過程並創建使用者身份。它將身份儲存在 cookie 中,因此可以在將來的請求中檢索它,而無需再次通過整個身份驗證質詢管道。

  12. 使用者已登錄。

因此/signin-oidc端點是返回到您的應用程序以完成OpenId Connect 身份驗證流程的登錄過程的方式。當使用者到達該地址時,他們已經在 Identity Server 上登錄,他們將被重定向回應用程序以繼續他們最初離開的地方。

通常,使用者在該路由上花費的時間是最少的,因為它會在處理登錄請求後立即重定向回“正確的”應用程序路由。

所以不,這裡不會有登錄表單。登錄過程本身是您的 OpenId Connect 身份驗證提供者(您的身份伺服器)的責任。google.com這就是關於這一點的全部意義,因此您例如使用您的 Google 憑據安全登錄,而不是my-random-and-probably-untrusted-app.example.com絕對不應該獲取您實際的 Google 憑據。

引用自:https://stackoverflow.com/questions/45458612