IdentityServer4 中文文檔 -12- (快速入門)添加外部認證支持


IdentityServer4 中文文檔 -12- (快速入門)添加外部認證支持


原文:http://docs.identityserver.io/en/release/quickstarts/4_external_authentication.html

目 錄

上一篇:IdentityServer4 中文文檔 -11- (快速入門)添加基於 OpenID Connect 的用戶認證
下一篇:IdentityServer4 中文文檔 -13- (快速入門)切換到混合流並添加 API 訪問

接下來我們將添加外部認證支持。這真的很簡單,因為你所需要的實際上只是一個 ASP.NET Core 兼容的認證中間件。

ASP.NET Core 自身已經承載了對 Google,Facebook,Twitter,Microsoft 賬戶 以及 OpenID Connect 的支持。另外你可以在 這里 找到更多其他的認證提供程序。

添加 Google 支持

為了能夠使用 Google 進行身份驗證,你首先需要對其進行注冊。這應該是在開發人員控制台完成的。創建一個新項目,啟用 Google+ API 並且通過添加 /signin-google 路徑到你的基地址來配置你本地 IdentityServer 的回調地址(比如:http://localhost:5000/signin-google)。

如果你在 5000 端口上運行 IdentityServer - 那么你可以簡單地從以下代碼片段中使用客戶端id/密碼,因為這是我們預先注冊的。

首先添加 Google 認證中間 NuGet 程序包到你的項目中(Microsoft.AspNetCore.Authentcation.Google

然后我們要將中間件添加到管道中。順序很重要,額外的認證中間件必須在 IdentityServer 之后、MVC 之前運行

默認情況下我們會在幕后連接一個 cookie 中間件,這樣的話外部認證就能夠存儲它的輸出。你只需要將外部認證中間件添加到管道中,並讓它使用 IdentityServerConstants.ExternalCookieAuthenticationScheme 登錄方案:

app.UseGoogleAuthentication(new GoogleOptions
{
    AuthenticationScheme = "Google",
    DisplayName = "Google",
    SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme,

    ClientId = "434483408261-55tc8n0cs4ff1fe21ea8df2o443v2iuc.apps.googleusercontent.com",
    ClientSecret = "3gcoTrEDPPJ0ukn_aYYT6PWo"
});

注意:在 ASP.NET Core Identity 中使用外部認證的時候,SignInScheme 必須設置為 Identity.External,而不是 IdentityServerConstants.ExternalCookieAuthenticationScheme

現在運行 MVC 客戶端,然后嘗試進行認證 - 你將在登錄頁面上看到一個 Google 按鈕:

通過認證后,你可以看到現在的身份信息是由 Google 數據提供的了:

進一步實驗

你可以添加額外的外部認證提供程序。我們有一個雲托管的 IdentityServer4 示例版本,你可以通過 OpenID Connect 集成它。

首先添加 Microsoft.AspNetCore.Authentication.OpenIDConnect Nuget 程序包到你的 IdentityServer 項目中:

然后添加對應的中間件:

// 外部 OpenId Connect 認證中間件。
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
    SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme,
    SignOutScheme = IdentityServerConstants.SignoutScheme,
    DisplayName = "開放鏈接",
    Authority = "https://demo.identiyserver.io/",
    ClientId = "implicit",

    TokenValidationParameters = new TokenValidationParameters
    {
        NameClaimType = "name",
        RoleClaimType = "role"
    }
});

注意:快速入門 UI 會自動提供外部用戶。換句話說,如果一個外部用戶第一次登陸進來,就會創建一個本地用戶,所有外部身份信息都會被復制過來並與新的本地用戶關聯。處理這種情況的方法完全取決於你怎么想。也許你會想要首先顯示某種用戶注冊頁面。默認的快速入門源代碼可以在 這里 找到。

目 錄

上一篇:IdentityServer4 中文文檔 -11- (快速入門)添加基於 OpenID Connect 的用戶認證
下一篇:IdentityServer4 中文文檔 -13- (快速入門)切換到混合流並添加 API 訪問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM