在介紹WebApi這個小demo前,先來簡單說一下OAuth這個東西。
OAuth開放授權,用戶可以對自己的資源進行第三方授權,那么第三方就可以不用你的賬號密碼就可以訪問你授權的資源了。比如一些論壇直接用qq賬號登陸、微信公眾號等,都是OAuth的應用體現。
這里的WebApi的demo也是一樣,用戶只有獲得授權token才能訪問api,有人對這個token比較好奇,然而OAuth2.0并沒有介紹token的算法,只是介紹了如何使用,Google、Twitter倒是明確說明使用了這種Bearer Token,當然也可以自己寫token。
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。
言歸正傳,我們先用vs建立一個名為WebApiDemo的project。
我們看一下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。
文章列表