HTTP协议2之基本认证--转

http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别

桌面应用程序(比如新浪桌面客户端, skydrive客户端)跟Web服务器之间是如何身份识别呢?

什么是HTTP基本认证

桌面应用程序也通过HTTP协议跟Web服务器交互

桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫HTTP基本认证(Basic Authentication)

当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码,如下图

假如用户名密码错误的话, 服务器会返回401 如下图

HTTP基本认证的过程

第一步:  客户端发送http request 给服务器,

第二步:  因为request中没有包含Authorization header,  服务器会返回一个401 Unauthozied 给客户端,并且在Response 的 header "WWW-Authenticate" 中添加信息。

第三步:客户端把用户名和密码用BASE64编码后,放在Authorization header中发送给服务器, 认证成功。

第四步:服务器将Authorization header中的用户名密码取出,进行验证, 如果验证通过,将根据请求,发送资源给客户端

使用Fiddler Inspectors 下的Auth 选项卡,可以很方便的看到用户名和密码:

HTTP基本认证,简单明了。Rest API 就是经常使用基本认证的

http协议是无状态的, 同一个客户端对 服务器的每个请求都要求认证

HTTP基本认证和HTTPS

把 "用户名+冒号+密码" 用BASE64编码后的string虽然用肉眼看不出来, 但用程序很容易解密,上图可以看到Fiddler就直接给解密了。 所以这样的http request 在网络上,如果用HTTP传输是很不安全的。 一般都是会用HTTPS传输, HTTPS是加密的, 所以比较安全.

HTTP OAuth认证

OAuth 对于Http来说,就是放在Authorization header中的不是用户名密码, 而是一个token.

微软的Skydrive 就是使用这样的方式, 如下图

其他认证

除了基本认证(Basic Authentication), 还有摘要认证 digest authentication, WSSE(WS-Security)认证

客户端的使用

客户端如果要跟“使用基本认证的网站”交互。 非常很简单,把用户名密码 加在Authorization header中就可以了。

C#

string url = "https://testsite";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
NetworkCredential nc = new NetworkCredential("username", "password");
req.Credentials = nc;
时间: 2024-10-07 12:28:58

HTTP协议2之基本认证--转的相关文章

Java 实现 SSH 协议的客户端登录认证方式--转载

背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间能够进行正常的网络通信,不至于出现在一台机器上发出的指令到另一台机器上成了不可认的乱码,SSH 就是众多协议的其中之一.经典的七层 OSI 模型(Open System Interconnection Reference Model)出现后,大大地解决了网络互联的兼容性问题,它将网络划分成服务.接口

SSL安全协议理论及双向认证的简单实现

安全套接层(Secure Sockets Layer.SSL)是基于Internet基础的一种保证私秘性的安全协议.它能使客户服务应用间的通信不被窃听,并能始终对服务器和客户端进行认证.SSL协议要求建立在可靠的传输层协议之上.SSL协议是与应用层协议独立无关的,高层的应用协议能透明的建立于SSL协议上.SSL协议在应用层协议通信之前就已完成加密算法.通信密钥的协商及服务器认证工作.在此后应用层协议所传送的数据都会被加密,从而保证通信的私密性. 发展状况 SSL协议于1994年由Netscape

ssh协议及密钥的认证

ssh协议: 通过SSH连接可以远程管理Linux等设备,默认linuxssh端口是22端口.与telnet不同是,ssh是进行安全保证的. ssh的使用方式,ssh[[email protected]]host[COMMAND] ssh [-l user] host [COMMAND] exit退出. 例如 A主机的用户A1 远程登陆到B主机的用户A2 第一次连接会让你确认是否是这个服务器的公钥,yes确认后,会将其保存在A1的家目录./ssh/known_hosts 但是以后每次登陆总会让你

关于imap协议的几个认证状态

开发邮件安全产品时用到IMAP协议.使用IMAP接收邮件与pop3有很大不同,imap协议较为复杂,一旦客户端和服务器间的连接建立完成,一个IMAP4rev1连接就会处于4种状态中的某一种.初始状态在服务器的欢迎中标识.大多数命令只在特定的状态中才是正确的.当连接处于不适当的状态时,客户端尝试一个不适当的命令引发协议错误,服务器将以一个BAD或者NO(取决于服务器的实现体)命令完成结果响应. 1.未认证状态 在未认证状态下,大多数命令在得到许可前,客户端必须提供认证证书.若非连接已经是预认证了的

Kerberos认证协议中TGS服务器可以去掉吗?

Kerberos协议最早是由MIT提出的,是一种身份认证协议. 应用场景:在一个开放环境中,一个工作站用户想通过网络对分布在网络中的各种服务提出请求,那么希望服务器能够只对授权用户提供服务,并能够鉴别服务请求的种类. Kerberos协议的原理:Kerberos通过提供一个集中的授权服务器来负责用户对服务器的认证和服务器对用户的认证,而不是为每个服务器提供详细的认证协议. Kerberos名词: Client:用户. AS:认证服务器,可以通过查询数据库,判断用户的口令,从而为用户颁发票据授权票

企业级应用身份认证管理扫盲篇——协议

最近为国内银行客户设计新系统与现有系统的集成.关键之一在于登录认证.在了解现有系统的非标接口过程中不出意外地遇到了些困难. 类比个例子,现有系统是个插线板,要求新系统插头标准如下: 三平头,头长18mm宽9mm厚2mm, 三头中心点距圆心10mm, 上头平行圆心到头心线,下二头垂直圆心到头心线. 上述接口是美标,欧标,英标,或者中国标准? "什么?都不是?嗯--" 如此的例子在企业级应用的登录认证集成过程中总是会遇到的.IT发达的国家整体情况好很多,因为大多数实现都采用了业界通行的标准

PPP协议以及PAP和CHAP的认证协议

PPP属于网络接口层,主要用于拨号接入Internet的场合.PPP协议的对等端分别是客户和服务提供商,它是一种"点对点"的协议. 认证协议PAP是基于口令的认证方法.被认证方向认证方发送请求报文,其中包含了身份和口令信息,等待对方的回复.但是PAP包含的身份和口令信息明文传输,所以不安全,相对来说,就是同样是认证协议的CHAP更加安全,因为它通过了报文的加密. 今天刚刚完成了一个双插上串口模块的试验,用来深入了解PPP的两个认证协议PAP 和CHAP之间的区别. 1.首先是搭建虚拟网

VPN身份认证协议详解

身份认证技术是VPN网络安全的第一道关卡.对于身份认证,是由身份认证协议来完成的.首先让大家对VPN的身份认证协议有一个感观的认知,把实践和理论结合起来. 1.PAP:密码认证协议 客户端直接发送包含用户名/口令的认证请求,服务器端处理并作回应. 优点:简单.缺点:明文传送,极容易被窃听. 2.SPAP:Shiva密码验证协议 Shiva公司开发,是一种受Shiva远程访问服务器支持的简单加密密码的身份验证协议. 优点:安全性较PAP好.缺点:单向加密.单向认证,虽然是对密码进行加密,但还是会被

SSH 协议原理、组成、认证方式和过程[转]

https://www.jianshu.com/p/8e5b7aea52b5 概述 SSH是(Secure SHell protocol) 的简写,安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议. OpenSSH 是SSH (Secure SHell)协议的免费开源实现.SSH协议族可以用来进行远程控制,或在计算机之间传送文件.而实现此功能的传统方式,如telnet(终端仿真协议). rcp ftp. rlogin.rsh都是极为不安全的,并且会使用明文传送密