2017-08-02 75 views
1

我正在嘗試構建多個連接到使用IdentityServer4構建的Identity Server的小型ASP.Net核心Mvc服務。IdentityServer 4,OpenIdConnect重定向到外部登錄URL

我已經安裝,看起來像這樣

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服務OpenIdOption是上我的身份運行服務器的端點。說,如果我的MVC的服務器是在http://localhost:5002我看到,當我設置[Authorize]屬性控制器,它重定向到我的身份服務器,如果校驗失敗,它會尋找登錄頁面回http://localhost:5002/signin-oidc

現在的問題我有我是登錄頁面託管在我的Identity Serverhttp://localhost:5000/signin-oidc,以便所有的MVC服務只是利用這個來獲取用戶身份,但不幸的是我無法看到如何設置RedirectUrl

enter image description here

我知道這個圖是如何參照工程的流量不準確的,只是想簡化我要完成:)

是有可能做到這一點呢?

問候 基蘭

回答

12

你似乎誤解/signin-oidc途徑是什麼。總體流程如下:

  1. 用戶訪問ASP.NET Core站點。
  2. 應用程序請求第一個驗證方案"Cookies"進行驗證。
    1. cookie身份驗證處理程序嘗試從(簽名的)cookie信息恢復身份。
    2. Cookie驗證失敗,因爲cookie丟失。
  3. 應用程序要求第二個身份驗證方案"oidc"進行身份驗證。
    1. OpenIdConnect身份驗證處理程序重定向到OpenId Connect身份驗證提供程序,這是您的身份服務器。
    2. 用戶在Identity Server上成功登錄。
    3. 用戶被張貼到/signin-oidc,這是OpenId Connect身份驗證處理程序的遠程登錄地址。
    4. OpenId Connect身份驗證中間件處理/signin-oidc路由,並從Identity Server發出的登錄請求中檢索用戶信息。
    5. OpenId Connect身份驗證方案創建身份驗證票證並要求配置的登錄方案登錄用戶。
  4. Cookie身份驗證方案處理登錄過程並創建用戶身份。它將身份存儲在cookie中,因此可以在未來的請求中檢索身份,而無需再次通過整個身份驗證管道。
  5. 用戶在簽名。

所以/signin-oidc點要回你的應用程序返回到完整的ID連接認證流程的登錄過程的方式。當用戶到達這個地址時,他們已經登錄了身份服務器,並且他們正在被重定向迴應用程序,以繼續他們最初離開的地方。

通常情況下,用戶在該路由上花費的時間很少,因爲在處理登錄請求後,它會立即重定向回「正確」的應用路由。

所以不,這裏不會有登錄表單。登錄過程本身是OpenId Connect身份驗證提供程序(您的Identity Server)的責任。這就是關於這點的全部觀點,所以你請使用您的Google憑據安全地登錄google.com,而不是登錄my-random-and-probably-untrusted-app.example.com,這肯定無法獲得您的實際Google憑據。

+0

謝謝!這真的拯救了我的一天。我對Identity Server客戶端屬性上的'RedirectUris'感到困惑。當這是不正確的,我沒有看到登錄頁面,所以我認爲這是一個回電。 – Kiran