Authentication in .NET Web Api

在介紹WebApi這個小demo前,先來簡單說一下OAuth這個東西。git

OAuth開放受權,用戶能夠對本身的資源進行第三方受權,那麼第三方就能夠不用你的帳號密碼就能夠訪問你受權的資源了。好比一些論壇直接用qq帳號登錄、微信公衆號等,都是OAuth的應用體現。github

這裏的WebApi的demo也是同樣,用戶只有得到受權token才能訪問api,有人對這個token比較好奇,然而OAuth2.0並無介紹token的算法,只是介紹瞭如何使用,Google、Twitter卻是明確說明使用了這種Bearer Token,固然也能夠本身寫token。web

Bearer Token用的Base64的編碼格式,它有個Bearer的前綴,形式以下:算法

Bearer kki94xl28AsVujf-j_sXNtX6Ybd-O0iFoIZZbdn22zcLQvwlEWcvfRLQh2PTz_PsbNKQbeekWetJ01gAjtBBC8f3FB4BqTuRvQiG0cM48LLq3oAxJpuFD0TKJnWmf5mrCMFBu45mbonD2-v_qJIPgh0YLcXb6Hl0qCo4nf_gwY11wiuj-xsUf8lNLLPg4MZeLmTLx-yEHnf_HtZ-4FCsLWiCVmWHTTvbLP5fgnmRCd5xFx-Nq-w0wqtEs3ttN6TJum7fFRpfsfTCYV768nm14EgHm2xAkYp8elvT0Etv-IibuNjjoEV9TwyzOPSEBL6i1RQ0QsM0_-KwCvLOVe9h3lXHrC6Z2FimQOJBfMe80jbAAlD3tb3XdQumICVrSrFDTPsxkOWirCe-p5ah3tXLUq2a4f_E_ClEWdLBVCbrmVnC5ljZBp7yGDO8wx2RX3ZquvzQpiYzk9I6L-wQrky1Mmugt__9HJPw0rL8iWccYT3q3oYsTOz6Cr_sbr7Z6q6O

那麼拿到的token以後,能夠用http請求resource,header以下:數據庫

GET /resource HTTP/1.1
Authorization: Bearer ...
Host: ...

 

ok,上面只是簡單介紹了下OAuth,並不涉及OAuth的框架原理,有興趣看一下官方的doc。express

言歸正傳,咱們先用vs創建一個名爲WebApiDemo的project。api

 

咱們看一下controller:微信

AccountController: 登錄用戶操做框架

ValuesController: api操做工具

咱們調試一把project,到達API頁簽下。這裏列出了以上Controller的用戶和api的操做部分。

咱們準備試一下API標籤下列出的register用戶的api。這裏咱們用到了一個Fiddler的http debug工具。

咱們在框框裏填入一些測試數據。

看一下調試結果,雙擊一下左側的欄目。看到http表單提交返回結果ok。

咱們再回到解決方案,看到project自動建立了一個WebApiDemo前綴的express db,如圖看到已經錄入了咱們的測試數據。

數據庫的鏈接在web.config也能夠做修改。

看一下project的startup.cs定義了token驗證的server地址。

嘗試獲取一個token。注意下頭文件。

返回結果。複製一下這個server分配的token。

咱們用這個token去驗證一下api。

頭文件。

結果,ok返回了兩個字符串。token驗證成功。

 

咱們把token抹去,再次測試一下,發現api報了一個401的錯誤。

 

ok,以上就是一個簡單的針對微軟web api這塊的介紹,另外有關於資源受權、Resources Server、Authorization Server和Client的搭建,OAuth也提供了相應的解決方案,想好好理解oauth有必要看看它的文檔,有關於.net這塊,能夠去github看一下dotnetopenauth。

相關文章
相關標籤/搜索