wordpress首页幻灯片设置,福州关键词排名优化,百度精准获客平台,做视频网站 带宽Bearer Token (RFC 6750) 用于OAuth 2.0授权访问资源#xff0c;任何Bearer持有者都可以无差别地用它来访问相关的资源#xff0c;而无需证明持有加密key。一个Bearer代表授权范围、有效期#xff0c;以及其他授权事项#xff1b;一个Bearer在存储和传输过程中应当防止泄露…Bearer Token (RFC 6750) 用于OAuth 2.0授权访问资源任何Bearer持有者都可以无差别地用它来访问相关的资源而无需证明持有加密key。一个Bearer代表授权范围、有效期以及其他授权事项一个Bearer在存储和传输过程中应当防止泄露需实现Transport Layer Security (TLS)一个Bearer有效期通常很短最好不超过1小时。 一. 资源请求 Bearer实现资源请求有三种方式Authorization Header、Form-Encoded Body Parameter、URI Query Parameter这三种方式优先级依次递减
Authorization Header该头部定义与Basic方案类似GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer mF_9.B5f-4.1JqMForm-Encoded Body Parameter 下面是用法实例POST /resource HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencodedaccess_tokenmF_9.B5f-4.1JqM使用该方法发送Bearer须满足如下条件1.头部必须包含Content-Type: application/x-www-form-urlencoded
2.entity-body必须遵循application/x-www-form-urlencoded编码(RFC 6749)
3.如果entity-body除了access_token之外还包含其他参数须以分隔开
4.entity-body只包含ASCII字符
5.要使用request-body已经定义的请求方法不能使用GET如果客户端无法使用Authorization请求头才应该使用该方法发送BearerURI Query ParameterGET /resource?access_tokenmF_9.B5f-4.1JqM HTTP/1.1
Host: server.example.comCache-Control: no-store服务端应在响应中使用 Cache-Control: private 二. WWW-Authenticate头 在客户端未发送有效Bearer的情况下即错误发生时资源服务器须发送WWW-Authenticate头下为示例
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realmexample, errorinvalid_token, error_descriptionThe access token expired 下面将就WWW-Authenticate字段的用法进行详细描述(下列这些属性/指令不应重复使用)
BearerBeare作为一种认证类型(基于OAuth 2.0)使用Bearer关键词进行定义realm与Basic、Digest一样Bearer也使用相同含义的域定义reamlscope授权范围可选的大小写敏感的空格分隔的列表(%x21 / %x23-5B / %x5D-7E)可以是授权服务器定义的任何值不应展示给终端用户。OAuth 2.0还规定客户端发送scope请求参数以指定授权访问范围而在实际授权范围与客户端请求授权范围不一致时授权服务器可发送scope响应参数以告知客户端下发的token实际的授权范围。下为两个scope用法实例scopeopenid profile email
scopeurn:example:channelHBOurn:example:ratingG,PG-13error描述访问请求被拒绝的原因字符%x20-21 / %x23-5B / %x5D-7E之内error_description向开发者提供一个可读的解释字符%x20-21 / %x23-5B / %x5D-7E之内error_uriabsolute URI标识人工可读解释错误的页面字符%x21 / %x23-5B / %x5D-7E之内 当错误发生时资源服务器将发送的HTTP Status Code(通常是400, 401, 403, 或405)及Error Code如下
invalid_request请求丢失参数或包含无效参数、值参数重复多种方法发送access token畸形等。资源服务器将发送HTTP 400 (Bad Request)invalid_tokenaccess token过期、废除、畸形或存在其他无效理由的情况。资源服务器将发送HTTP 401 (Unauthorized)而客户端则需要申请一个新的access token然后才能重新发送该资源请求insufficient_scope客户端提供的access token的享有的权限太低。资源服务器将发送HTTP 403 (Forbidden)同时WWW-Authenticate头包含scope属性以指明需要的权限范围 如果客户端发送的资源请求缺乏任何认证信息(如缺少access token或者使用 RFC 6750 所规定的三种资源请求方式之外的任何method)资源服务器不应该在响应中包含错误码或者其他错误信息如下即可
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realmexample 三. Bearer Token Response 下为示例
HTTP/1.1 200 OK
Content-Type: application/json;charsetUTF-8
Cache-Control: no-store
Pragma: no-cache{access_token:mF_9.B5f-4.1JqM,token_type:Bearer,expires_in:3600,refresh_token:tGzv3JOkF0XG5Qx2TlKWIA
}
四. 安全威胁
Token 伪造/修改(Token manufacture/modification)攻击者伪造或修改已有的token导致资源服务器授权通过非法访问的客户端。因此需要对token使用数字签名或消息认证码来token的完整性Token 泄露(Token disclosure)Token本身可能包含认证、有效期等敏感信息。因此实现TLS并验证证书是必选项加密token可用于防止客户端观察token的内容加密token还可防止token在前端服务器和后端服务器(如果他们没有启用TLS)之间发生泄露Token 改寄(Token redirect)攻击者用一个访问A资源服务器的token去请求B资源服务器的资源。因此通常token中可以包含代表资源服务器的标识来防止这种情况的发生Token 重放(Token replay)攻击者企图使用曾经使用过的token来请求资源。因此token需包含有效期(比如少于1小时) 另外cookie不能包含token关于cookie的安全弱点RFC 6265 中有如下描述 A server that uses cookies to authenticate users can suffer securityvulnerabilities because some user agents let remote parties issueHTTP requests from the user agent (e.g., via HTTP redirects or HTMLforms). When issuing those requests, user agents attach cookies evenif the remote party does not know the contents of the cookies,potentially letting the remote party exercise authority at an unwaryserver.
可见即使服务端实现了TLS攻击者依旧可以利用cookie来获取机密信息如果cookie中包含机密信息的话对此不得已可将机密信息包含于URLs(前提是已实现了TLS)但尽量使用更安全的办法因为浏览器历史记录、服务器日志等可能泄露URLs机密信息。
五. Transport Layer Security (TLS) TLS (SSL / TLS)源于NetScape设计的SSL(Secure Sockets Layer1994 / SSL 1.0、1995 / SSL 2.0、1996 / SSL 3.0)1999年IETF接替NetScape发布了SSL的升级版TLS 1.0最新为TLS 1.3(draft)TLS 用于在两个通信应用程序之间提供保密性和数据完整性。目前应用最广泛的是TLS 1.0接下来是SSL 3.0主流浏览器都已经实现了TLS 1.2的支持。TLS 1.0通常被标示为SSL 3.1TLS 1.1为SSL 3.2TLS 1.2为SSL 3.3。获取更多信息可参考 TLS 1.2 / RFC 5246 。 TLS是一种位于传输层(TCP)和应用层之间的协议层由记录协议(Record Layer)和握手协议(Handshake Layer)两层构成 六. application/x-www-form-urlencoded Media Type 首先这种编码类型未考虑非US-ASCII字符的情况因此待发送的内容(包括名称、值)可先经UTF-8编码然后再按字节序列进行转义接收这种数据类型则需进行逆向处理。通常各种web编程语言已经提供原生URL编码/URL解码组件使用起来也极为方便因此这里不做详细介绍。
原文地址http://www.cnblogs.com/XiongMaoMengNan/p/6785155.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注