利用IdentityServer3在ASP.NET 5和Angular中實現OAuth2 Implicit Flow


(此文章同時發表在本人微信公眾號“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模式登錄驗證的整個過程進行了詳盡的代碼講解,是一篇難得的參考文獻。細節的東西,大家就看文章原文吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM