Authentication in .NET Web Api
在介绍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。
Authentication in .NET Web Api的更多相关文章
- HTTP Basic Authentication认证(Web API)
当下最流行的Web Api 接口认证方式 HTTP Basic Authentication: http://smalltalllong.iteye.com/blog/912046 什么是HTTP B ...
- Dynamics 365 Online通过OAuth 2 Client Credential授权(Server-to-Server Authentication)后调用Web API
微软动态CRM专家罗勇 ,回复332或者20190505可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 本文很多内容来自 John Towgood 撰写的Dynamic ...
- Authentication and Authorization in ASP.NET Web API
You've created a web API, but now you want to control access to it. In this series of articles, we ...
- ASP.NET Web API 的简单示例
Demo1: HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- OAuth Implementation for ASP.NET Web API using Microsoft Owin.
http://blog.geveo.com/OAuth-Implementation-for-WebAPI2 OAuth is an open standard for token based aut ...
- 利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API
微软动态CRM专家罗勇 ,回复337或者20190521可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 配置Dynamics 365 & PowerApps 支 ...
- [转]Web APi之认证(Authentication)及授权(Authorization)【一】(十二)
本文转自:http://www.cnblogs.com/CreateMyself/p/4856133.html 前言 无论是ASP.NET MVC还是Web API框架,在从请求到响应这一过程中对于请 ...
- Web APi之认证(Authentication)及授权(Authorization)【一】(十二)
前言 无论是ASP.NET MVC还是Web API框架,在从请求到响应这一过程中对于请求信息的认证以及认证成功过后对于访问页面的授权是极其重要的,用两节来重点来讲述这二者,这一节首先讲述一下关于这二 ...
- web api authentication
最近在学习web api authentication,以Jwt为例, 可以这样理解,token是身份证,用户名和密码是户口本, 身份证是有有效期的(jwt 有过期时间),且携带方便(自己带有所有信息 ...
随机推荐
- Towers of Hanoi
Your mission is to move the stack from the left peg to the right peg. The rules are well known: Only ...
- flume远程调试
项目开发的时候,出现问题的时候,通常在IDE里面直接进行调试,但有时候我们可能用的是另外的一些开源框架,甚至运行程序里面没有一行代码是我们自己写的,如果出现一些较复杂的问题,那么我们可能就会用到远程调 ...
- (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- linux磁盘与文件系统的管理
本文涉及命令:dumpe2fs.df.du.fdisk.mkfs.mke2fs.fsck.badblocks.mount.umount.e2label.tune2fs.hdparm.parted 概念 ...
- shell脚本实现数据库自动备份和删除备份
为了安全起见,我们每天都需要备份数据库,但是备份数据库的时间往往是在凌晨左右,大家都休息,没人使用的时候,这样我们就需要linux系统实现自动备份,即定时自动执行脚本.但是我们又不能让所有的备份一直保 ...
- Linux ps命令详解与示例说明
ps:要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结 ...
- Floyd | | jzoj[1218] | | [Usaco2009 Dec]Toll 过路费 | | BZOJ 1774 | | 我也不知道该怎么写
写在前面:老师说这一道题是神题,事实上确实如此,主要是考察对Floyd的理解 ******************************题目.txt************************* ...
- Xshell快捷键
Ctrl + L 清除工作区的内容
- java中final,finally和finalize的区别
final,finally和finalize的区别: final:最终的意思,可以修饰类,成员变量,成员方法 修饰类,类不能被继承 修饰变量,变量是常量 修饰方法,方法不能被重写 finally:是异 ...
- 【erlang】执行linux命令的两种方法
os.cmd(Cmd) os模块提供了cmd函数可以执行linux系统shell命令(也可以执行windows命令).返回一个Cmd命令的标准输出字符串结果.例如在linux系统中执行os:cmd(& ...