身份提供器


layout: docs-default

身份提供器

IdentityServer支持通過第三方身份認證器來認證,第三方認證機制必須封裝在katana認證中間件中。

katana本身帶有Google,Facebook,Twitter,Microsoft Accounts,WS-Federation和OpenID Connect認證中間件。社區(qū)也提供了一些其它認證中間件(如 Yahoo, LinkedIn, and SAML2p). 請看 完整列表.

要支持第三方登陸,項目里需要增加一個帶IAppBuilder 和 a string 參數(shù)的方法。

public static void ConfigureIdentityProviders(IAppBuilder app, string signInAsType)
{
    var google = new GoogleOAuth2AuthenticationOptions
    {
        AuthenticationType = "Google",
        Caption = "Google",
        SignInAsAuthenticationType = signInAsType,
        ClientId = "...",
        ClientSecret = "..."
    };
    app.UseGoogleAuthentication(google);

    var fb = new FacebookAuthenticationOptions
    {
        AuthenticationType = "Facebook",
        Caption = "Facebook",
        SignInAsAuthenticationType = signInAsType,
        AppId = "...",
        AppSecret = "..."
    };
    app.UseFacebookAuthentication(fb);

    var twitter = new TwitterAuthenticationOptions
    {
        AuthenticationType = "Twitter",
        Caption = "Twitter",
        SignInAsAuthenticationType = signInAsType,
        ConsumerKey = "...",
        ConsumerSecret = "..."
    };
    app.UseTwitterAuthentication(twitter);
}

解釋

  • AuthenticationType 必須是第三方登錄器的唯一標識,這個值會保存在令牌的idp聲明中。而且在認證授權的過程中,同樣的值會用于身份提供器的預選擇中,這個值會存在于acr_values參數(shù)里 (詳細信息,請看 this ). 在客戶端配置中,也會使用這個值來限制客戶端中允許的第三方登陸。
  • Caption用于在登陸界面顯示第三方登陸名字。如果Caption是空的,這個第三方登陸不會出現(xiàn)在登陸頁面。但是可以通過登陸提示使用。
  • SignInAsAuthenticationType 必須填上我們傳入的參數(shù) signInAsType

必須把這個方法傳遞給AuthenticationOptionsIdentityProviders屬性里。

var idsrvOptions = new IdentityServerOptions
{
    SiteName = "IdentityServer3",
    Factory = factory,
    SigningCertificate = Cert.Load(),

    AuthenticationOptions = new AuthenticationOptions 
    {
        IdentityProviders = ConfigureIdentityProviders
    }
};

app.UseIdentityServer(idsrvOptions);

添加WS-Federation 第三方登陸

基于WS-Federation的第三方登陸可以和上面一樣的方式配置。

出于向后兼容的原因,WS-Federation中間件會監(jiān)聽所有的請求并檢查她們帶有的token數(shù)據(jù)。如果有多于一個WS-Federation中間件,就需要顯示設置一個唯一的CallbackPath屬性,這個屬性需要匹配IdP里的返回URL的。注意CallbackPath必須是相對于根目錄,不是相對于Identity Server模塊的目錄。比如:第三方登陸配置post auth tokens 到 http://mydomain.com/SubFolder/IdSrv/MyExternalProvider, 然后 CallbackPath 應該配置為 /SubFolder/IdSrv/MyExternalProvider.

var adfs = new WsFederationAuthenticationOptions
{
    AuthenticationType = "adfs",
    Caption = "ADFS",
    SignInAsAuthenticationType = signInAsType,

    MetadataAddress = "https://adfs.leastprivilege.vm/federationmetadata/2007-06/federationmetadata.xml",
    Wtrealm = "urn:idsrv3"
};
app.UseWsFederationAuthentication(adfs);
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • layout: docs-default 用戶服務 用戶服務的例子,請看這里 IdentityServer3 定義...
    滅蒙鳥閱讀 1,342評論 0 1
  • 這篇文章介紹了Mobile BI(移動商務智能)使用過程中涉及的各種身份認證的方式,主要目的是對這些方式的原理進行...
    雨_樹閱讀 2,325評論 1 2
  • 請點擊此處輸入圖片描述 中國有一個成語叫“知足常樂”,意思就是自知滿足則心??鞓?。它強調(diào)的是感恩,要感激現(xiàn)在所擁有...
    云淡風輕任平生閱讀 1,137評論 0 1
  • 隨筆 相由心生,你面部的表情就是你的狀態(tài),你隨口說出的話就是你心里所想。聽了很多課,老師講的都是讓自己回歸原始狀態(tài)...
    遇見繼承閱讀 133評論 0 0
  • have a crush on sb 迷戀某人 take up/accept the challenge 接受挑戰(zhàn)...
    芒果醬紫閱讀 336評論 0 0

友情鏈接更多精彩內(nèi)容