关于 Web Api 2 认证与授权
认证与授权
认证与授权,Authentication and Authorize,这个是两个不同的事。认证是对访问身份进行确认,如验证用户名和密码,而授权是在认证之后,判断是否具有权限进行某操作,如 Authorize 属性。简单说,他们之间先后顺序是先认证,再授权。
Web Api 的客户端可以是浏览器,GUI 应用程序,各移动设备应用等等,设计的 Api 可以供自己使用,也可以供别人使用。因为很多人习惯了 IIS ,当 Web Api 寄宿在 IIS 上时,他们习惯了 Cookie 的方式,但 Owin Self Host 的出现,以及不同端的出现,Cookie 一下就成了麻烦的事了,不能解决问题了。
那该怎么办呢?观看现在各平台提供 Api,第三方应用使用数据前,都是先进行认证,然后返回 token 信息,然后每次的请求都将 token 信息一起发送过去,就是 Api 的请求都是每次需要进行验证的,在没有 Cookie 的情况下,token 信息怎么发送呢?
- 与 Query String 一起
- 放到 Request Header Authorization 里面
使用 postman 进行测试 Api 的时候,就能感受到了。这里主要讲第 2 种方式,使用 IIS 的情况就不讲了,因为可以使用 HttpConext(System.Web.dll),那么使用 Owin Self Host 方式,该怎么去实现认证呢?
Web Api 认证实现
这里不考虑数据传输安全的问题。认证前先要做好准备工作,提供一个 Api 认证接口,如 Login,认证成功后返回 token(用户信息及超时时间等信息),后续的 Api 调用就要通过 token 进行认证与授权了。这里有 3 种实现方式:
MessageHandler 参考
这是 Web Api 有的方式,通过继承 DelegatingHandler ,获取 token 信息,然后进行认证,只需将实现的 MessageHandler 假如配置即可:
config.MessageHandlers.Add(new BasicAuthenticationHandler());
Attribute Filter 参考
通过实现自定义的 Authorize 属性,获取 token,然后进行认证
Owin Middleware 参考
当 Web Api 寄宿在 Owin Self Host 上时,可以通过实现自己的 Middleware 来认证,而且相比 Message Handler 的好处是,Message Handler 只对 Web Api 有效,而 Middleware 可以对其他寄宿在 Owin 上的 Application 都有效,如 SignalR 等
当然正确的做法应该是继承 Microsoft.Owin.Security.AuthenticationMiddleware 来实现,可以参考 Katana Project 其他的认证实现
总结
看了很多资料才了解到这些实现方式,其实都是因为自己知识储备不够,首先连认证和授权都搞混了,然后是之前 Asp.Net 模式的羁绊,阻碍了接受新鲜事物。面对新东西,还是先要搞清概念与原理,然后分析处理的逻辑,就能定位到解决问题要关注的点,所以啊,还是要多学习,深入学习。
HttpClient 进行 Basic 认证时,发送用户信息的实现,参考
关于 Web Api 2 认证与授权的更多相关文章
- Web Api 2 认证与授权 2
HTTP Message Handler 在 Web Api 2 认证与授权 中讲解了几种实现机制,本篇就详细讲解 Message Handler 的实现方式 关于 Message Handler 在 ...
- Web APi之认证(Authentication)两种实现方式【二】(十三)
前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...
- Web APi之认证(Authentication)两种实现方式后续【三】(十五)
前言 之前一直在找工作中,过程也是令人着实的心塞,最后还是稳定了下来,博客也停止更新快一个月了,学如逆水行舟,不进则退,之前学的东西没怎么用,也忘记了一点,不过至少由于是切身研究,本质以及原理上的脉络 ...
- 转 Web APi之认证(Authentication)两种实现方式【二】(十三)
前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再废叙述废话. 序言 对于所谓的认证说到 ...
- Web APi之认证
Web APi之认证(Authentication)两种实现方式后续[三](十五) 前言 之前一直在找工作中,过程也是令人着实的心塞,最后还是稳定了下来,博客也停止更新快一个月了,学如逆水行舟,不 ...
- Shiro集成web环境[Springboot]-认证与授权
Shiro集成web环境[Springboot]--认证与授权 在登录页面提交登陆数据后,发起请求也被ShiroFilter拦截,状态码为302 <form action="${pag ...
- [转]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框架,在从请求到响应这一过程中对于请求信息的认证以及认证成功过后对于访问页面的授权是极其重要的,用两节来重点来讲述这二者,这一节首先讲述一下关于这二 ...
- 033.Kubernetes集群安全-API Server认证及授权
一 Kubernetes集群安全 1.1 安全机制 Kubernetes通过一系列机制来实现集群的安全控制,其中包括API Server的认证授权.准入控制机制及保护敏感信息的Secret机制等.集群 ...
随机推荐
- 【转】修复关于apache-xampp的问题:Port 443 in use by “vmware-hostd.exe”!
在电脑里装了VMware后,再要装xampp,十有八九就会出现这个问题: 11:23:37 [Apache] Problem detected! 11:23:37 [Apache] ...
- yum更换阿里源
备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载新的CentOS-Base.repo ...
- vue-router导航守卫,限制页面访问权限
在项目开发过程中,经常会需要登录.注册.忘记密码等,也有很多页面是需要登录后才能访问,有些页面是无需登录就可以访问的,那么vue是怎么来限制这些访问权限问题的呢? vue-router导航守卫的bef ...
- CentOS 查看是否安装软件包
1. rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字" 2. deb包安装的,可以用dpkg -l能看到 ...
- 创建React组件
组件概述 组件可以将UI切分成一些独立的.可复用的部件,这样你就只需专注于构建每一个单独的部件. 组件从概念上看就像是函数,它可以接收任意的输入值(称之为“props”),并返回一个需要在页面上展示的 ...
- pa sslvpn使用手册
1.浏览器输入https://x.x.x.x 根据电脑操作系统及位数选择下载 2.安装 直接“下一步”,到 输入IP地址x.x.x.x 点击连接会有证书错误提示 此时点击显示证书→本地计算机→安装到 ...
- Java10-java语法基础(九)——java的封装性
Java10-java语法基础(九)——java的封装性 一.Java的三大特性:封装.多态.继承 封装:通过类封装对象的数据成员和成员方法,保证只有可信的类或者对象能够访问这些方法和数据成员,对不可 ...
- Mac下JDK、Maven、Tomcat、Git开发安装及环境变量配置
本文主要内容: - 1.Mac OS 10.11.6 [OS X EL Captain] - 2.Mac OS 安装Java 设置环境变量 - 3.Mac OS 安装Maven设置环境变量 - 4.M ...
- ubuntu下sudo apt-get update Sources 404 Not Found 解决方法
刚安装了ubuntu之后的主要安装命令无非就是apt-get install了,然而很多都在这里就夭折了. 使用apt-get install ***需要先执行apt-get update 加载文件包 ...
- php libev扩展使用
在WorkerMan源码分析 - 实现最简单的原型文章中提到了libevent网络库,前者和libev都是事件驱动编程库高性能.简单说libev对libevent做了改进和精简.libevent使用全 ...