ASP.NET Identity(處理身份資料存放區) 與 OWIN主機(實現katana驗證授權)原理概括

來源:互聯網
上載者:User

標籤:

ASP.NET Identity 是4.5中引入的,支援Clamis(聲明)式樣登陸【即認證和授權分開模式】,結合owin可以實現cookie加密等功能。

1.ASP.NET Identity架構架構說明

  最上面是整合實現中間(identity.entityframwork---它是實現了使用者資料的儲存方式,這層是微軟自己實現的基於EF儲存的實現層。可以直接幾重identity.core重寫以實現不同儲存方式)。
  其中IuserStore UserStore是實現對使用者物件在儲存的一些資料操作方法實現,比如密碼驗證方法或者尋找使用者方法等。
  identityUser繼承自底層IUser,可以擴充使用者的欄位資料等。

  最終會把IUserStore作為參數執行個體化UserManager來做使用者的相關商務邏輯操作。

 

2、OWIN是微軟定義了一套替代IIS管道處理的東西,這樣 request和response上下文content的操作和appapliction等操作都託管給了Owin處理。

  結合實現聲明式(Claims)登陸為例子解釋owin,下面是登陸代碼

// 1. 利用ASP.NET Identity擷取使用者物件var user = await UserManager.FindAsync("UserName", "Password");// 2. 利用ASP.NET Identity擷取ClaimsIdentity(identity 對象,包含使用者的基本資料 )var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);// 3. 將上面拿到的identity對象利用OWIN的管道處理方法登入,加密寫入讀取coocie和處理 及管理ClaimsPrincipal對象(是2的封裝,這個對象是賦值給http--> crrentUser)AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true }, identity);  

 OWIN的開源實現是Katana,實現了四個

  • Host: 託管我們應用程式的進程,或者宿主,可以是IIS,可以我們自己寫的程式等。主要是用來啟動,載入OWin組件,以及合理的關閉他們
  • Server: 這個Server就是用來暴露TCP連接埠,維護我們上面講到的那個字典資料,然後通過OWin管理處理http請求
  • Middleware : 這個中介軟體就是用來在OWin管道中處理請求的組件,你可以把它想象成一個自訂的httpModule,它會被註冊到OWin管道中一起處理http request
  • Application: 這個最好理解,就我們自己開發的那個應用程式或者說是網站

 以登陸為例,實現owin必須要有個聲明入口starup(建立mvc後可以在appstart檔案夾中看到)

public partial class Startup{    public void ConfigureAuth(IAppBuilder app)    {        // 配置Middleware 組件選項,中介軟體是為了處理不同的業務例如下面的CookieAuthenticationMiddleware,可以參考他來自訂中介軟體,可以參考開源的owin--catana代碼
      //這裡是處理使用coocie登陸的中介軟體,是iappbuilder的擴充方法        app.UseCookieAuthentication(new CookieAuthenticationOptions        {            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,            LoginPath = new PathString("/Account/Login"),            CookieSecure = CookieSecureOption.Never,        });    }}

這個是上門中介軟體擴充方法的實現

public static IAppBuilder UseCookieAuthentication(this IAppBuilder app,     CookieAuthenticationOptions options){    if (app == null)    {        throw new ArgumentNullException("app");    }    app.Use(typeof(CookieAuthenticationMiddleware), app, options); //將組件註冊進owin管道,--CookieAuthenticationMiddleware--組件是操作加密coocie的
app.UseStageMarker(PipelineStage.Authenticate); // 然後結合例如IIS(owin的HOST)的某個階段執行該組件,這裡是認證階段,還有七八種其他的例如post資料階段等 return app; }

ASP.NET Identity(處理身份資料存放區) 與 OWIN主機(實現katana驗證授權)原理概括

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.