2016-03-01 206 views
0

我正在使用Microsoft.Owin.Security.Oauth在Web API上實現OAuth 2。Microsoft.Owin.Security.Oauth承載令牌授權攔截

我想保持不記名記號小,並保留私人數據。爲此,我想在其中存儲會話ID,然後在收到並處理會話ID後以編程方式填寫ClaimsIdentity。這也會給我更大的靈活性,涉及如何註銷,角色更改和其他事情。

這應該是攔截正確事件並添加委託的問題。但是,我找不到在我的授權提供商("OAuthAuthorizationServerProvider"的子類)上觸發的事件。我認爲"AuthorizeEndpoint"會這樣做,但它不會被用[Authorize]屬性修飾的API方法解僱,即使這些方法顯然會檢查有效的不記名令牌。當我覆蓋"MatchEndpoint"時,我發現的一個方法是用[Authorize]裝飾的方法調用"IsAuthorizeEndpoint""IsTokenEndpoint"都設置爲false。後者對我有意義,前者不。

我很困惑。知道這個圖書館的人可以告訴我發生了什麼事情嗎?我需要做些什麼來完成這個看起來很簡單的想法?

+1

看起來可能類似於http://stackoverflow.com/questions/21675844/adding-extra-details-to-a-webapi-bearer-token ?? – Macilquham

回答

0

我想你可能會將使用AuthorizeAttribute標記的資源與OWIN授權端點混爲一談。 AuthorizeEndpoint和TokenEndpoint在OWIN配置中設置爲它們各自的認證類型的接收者。 Authorize Endpoint用於基於Web的用戶代理身份驗證,並且您希望瀏覽器在未經授權訪問資源時被重定向。令牌端點被用於用戶名密碼令牌認證和刷新,而且是您想要的。假設您在OWIN啓動配置中分配了這兩種情況,那麼您可能希望爲OnValidateTokenRequest重載該事件,以確保您的令牌定製不會導致客戶端嘗試再次使用它時無效。您需要在OnTokenEndpoint事件中對令牌進行實際修改。