(此文章同時發表在本人微信公眾號“dotNET每日精華文章”,歡迎右邊二維碼來關注。)
題記:之前介紹過的IdentityServer3雖然是基於Katana開發的,不過同樣可以托管在ASP.NET 5中運行。今天推薦的這篇文章就是介紹如何在ASP.NET 5和Angular中實現OAuth2的Implicit Flow驗證的。
IdentityServer之前介紹過,是一個功能完備的.NET開源OpenID Connect/OAuth 2.0框架。IdentityServer3是基於ASP.NET Katana技術棧來實現的,雖然IdentityServer目前正在研發基於ASP.NET 5技術棧的IdentityServer4,不過其不夠成熟。幸好,我們還是可以把IdentityServer3托管到ASP.NET 5(官方例子)當中。
之前,damienbod寫了一篇文章《OAuth2 Implicit Flow with Angular and ASP.NET 5 IdentityServer》(http://damienbod.com/2015/11/08/oauth2-implicit-flow-with-angular-and-asp-net-5-identity-server/)專門來介紹如何在ASP.NET 5中托管配置IdentityServer3,更進一步還介紹了如何實現OAuth2的Implicit Flow驗證模式,來支持Angular客戶端進行登錄。
這篇文章首先給出了配置資源服務器(即提供數據的API)的代碼片段,接着演示了如何編寫一個RequiredScopesMiddleware中間件類來驗證每個用戶的授權范圍(Scopes)。
對於配置IdentityServer沒有太多特別的,只需跟着官方例子做就行。
在實現Angular客戶端的時候,關鍵是要傳遞Bearer令牌給資源服務器來獲得訪問授權。其編寫了一個AuthorizationInterceptor用於截獲所有對服務器的http請求,從而自動附加Bearer令牌。如果沒有令牌,那么就使用AuthorizedController把用戶導向登錄界面,從而向IdentityServer申請令牌。
這篇文章對Angular使用Implicit Flow模式登錄驗證的整個過程進行了詳盡的代碼講解,是一篇難得的參考文獻。細節的東西,大家就看文章原文吧。