![](/img/trans.png)
[英]The OWIN authentication pipeline, and how to use Katana middleware correctly?
[英]How to compose multiple authentication handlers in Katana?
我想創建一個Web API服務,該服務公開一個可以使用客戶端證書或 JWT令牌進行身份驗證的資源。
我找到了一些用於驗證客戶端證書的中間件,以及一些有關如何創建自己的身份驗證中間件的很好的說明。 Microsoft具有驗證JWT令牌的中間件OAuthBearerAuthenticationMiddleware
。 顯然我不能同時安裝它們,因為當身份驗證失敗時,第一個中間件將終止管道。
因此,我想我將創建一個復合身份驗證中間件類,該類具有兩個AuthenticationHandler
對象,並將從其AuthenticateCoreAsync()
的處理程序中調用AuthenticateAsync()
,直到一個返回有效的AuthenticationTicket
為止。 問題在於AuthenticationMiddleware
類中的CreateHandler
方法受到保護,因此我似乎無法組成這些對象。
我無法自己實例化OAuthBearerAuthenticationHandler
類,因為它是內部的。
如何在不將代碼復制到自己的處理程序中的情況下重新使用這些現有的中間件組件來啟用兩種身份驗證?
還是我會走錯路,在同一個Web API服務上是否有另外兩種方式來使用兩種身份驗證方法?
身份驗證失敗時,身份驗證中間件終止管道實際上是不正確的。 它被設計為可組合的。
每個中間件可以貢獻零個或一個身份,最終成為ClaimsPrincipal
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.