Oauth2(3)授权端点

授权过程采用两种授权端点:

授权端点--客户端通过用户代理重定向从资源拥有者以获得授权

令牌端点--客户端使用授权许可交换访问令牌,通常伴有客户端认证

以及另一种客户端端点

重定向端点--授权服务器用于通过资源所有者用户代理向客户端返回含有授权凭据的响应。

不是每个授权类型都用所有的端点,扩展的授权类型可能会定义附加的端点

1授权端点

授权端点用于和资源拥有者交互并且获取一个授权许可。授权服务器首先必须验证资源拥有者身份。但该规范并为定义授权服务器验证资源拥有者的方式(比如账号密码,session cookies)。

获取授权端点位置同样未定义。

端点URI可能包含application/x-www-form-urlencoded格式的查询部分,添加额外查询参数时必须保留该部分。端点URI一定不能包含fragment部分。

由于向授权端点的请求会引起用于凭据的明文传输,因此授权服务器要求在向授权端点发送请求时必须使用TLS。

授权服务器对于授权端点必须支持使用HTTP
GET方法,可能会支持POST。

请求中无值参数和未识别参数必须被忽略。请求和响应参数不应该被包含超过一次。

1.1响应类型

授权端点用于授权码类型和隐式授权流程。客户端使用下列参数通知授权服务器期望的许可类型:

response_type

必须包含,值必须是code或者token或者注册扩展值

扩展响应类型可能包含空格分割的列表,这种复杂相应类型由他们自己定义。

如果一个授权请求没有response_type参数,或者不能理解相应类型,授权服务器必须返回error response

1.2重定向端点

完成与资源拥有者交互后,授权服务器引导资源拥有者的用户代理返回客户端。授权服务器重定向用户代理到在客户端注册时或者发出授权请求时预先建立的客户端重定向端点。

重定向端点URI必须是绝对URI。端点URI可能包含application/x-www-form-urlencoded格式的查询体,当添加额外查询参数时必须保留。端点URI一定不能包含fragment部分。

1.2.1端点请求的机密性

当响应类型是code或者token时或者重定向请求将导致敏感凭据通过开放网络传输时,重定向端点需要使用TLS。

缺乏传输层安全可能对客户端及它被授权访问的受保护资源的安全具有严重影响。当授权过程用作一种客户端委托的对最终用户认证(例如,第三方登录服务)的形式时,使用传输层安全尤其关键。

1.2.2注册要求

授权服务器必须要求下列客户端注册其重定向客户端“

公开客户端

使用隐式授权类型的机密客户端

授权服务器应该要求所有的客户端在使用授权端点前注册重定向端点

授权服务器应该要求客户端提供完整的重定向URI,如果不能注册完整重定向URI,那么应该要求注册URI scheme,authority和path。(请求授权时允许客户端动态变更查询部分)

授权服务器可能允许客户端注册多个重定向端点。

缺少重定向URI注册的要求,可能使攻击者将授权端点用作自由重定向端点。

1.2.3动态配置

如果注册多个重定向URI或者如果只有部分重定向URI被注册或者没有注册重定向URI。客户端都必须使用“redirect_uri”请求参数在授权请求中包含重定向URI。

当授权请求包含了一个重定向URI,授权服务器必须比较和匹配至少一个已注册URI。

1.2.4无效端点

如果由于缺失、无效或不匹配的重定向URI而验证失败,授权服务器应该通知资源所有者该错误且不能向无效的重定向URI自动重定向用户代理。

1.2.5端点内容

向客户端端点的重定向请求通常会引起由用户代理处理的HTML文档响应。如果HTML响应直接作为重定向请求的服务结果,任何包含在HTML文档中的脚本将执行,并具有对重定向URI和其包含的凭据的完全访问权限。

客户端不应该在重定向端点的响应中包含任何第三方的脚本(例如,第三方分析、社交插件、广告网络)。相反,它应该从URI中提取凭据并向另一个端点重定向用户代理而不暴露凭据(在URI中或其他地方)。如果包含第三方脚本,客户端必须确保它自己的脚本(用于从URI中提取凭据并从URI中删除)将首先执行。

2.token端点

token端点用于客户端通过展示授权许可或者可刷新token以获取访问token。token端点被用于除了隐式授权的其他所有方式。

这意味着客户端获取token端点的位置超出说明的范围,但是通常会在服务文档中提供。

端点URI可能包含application/x-www-form-urlencoded格式的查询请求部分,当添加额外查询参数时也必须保留。端点URI一定不能包含fragment部分。

由于对token端点的请求会导致明文凭据的传输,因此必须采用TLS。

客户端请求token时必须使用POST方法。

请求中无值参数和未识别参数必须被忽略。请求和响应参数不应该被包含超过一次。

2.1客户端认证

机密客户端或者其他被办法客户端凭据的客户端在请求token端点时必须与授权服务器进行验证。客户端验证用于:

执行刷新token以及授权码与客户端的绑定。当授权码在不安全通道上向重定向端点传输时,或者
当重定向URI没有被完全注册时,客户端身份验证是关键的。

通过禁用客户端或者改变其凭据恢复一个被盗用的客户端,因此组织了攻击者滥用被盗的刷新令牌。改变客户端凭据显然快于撤销所有的刷新令牌。

实现认证管理的最佳实践,要求定期凭证轮转。轮转一整套刷新令牌可能是艰巨的,而轮转单组客户端凭据显然更容易。

向token端点发送请求时,一个客户端可能使用client_id请求参数用来标志自身。向令牌端点的“authorization_code”和“grant_type”请求中,未经身份验证的客户端必须发送它的“client_id”,以防止自己无意中接受了本打算给具有另一个“client_id”的客户端的代码。这保护了客户端免于被替换认证码。

3.访问令牌范围
认证和令牌端点允许客户端通过scope请求参数指定访问请求的范围。反过来,认证服务器使用scope响应参数来通知客户端访问令牌被颁发的范围。

scope请求参数用空格分割,大小写敏感。该string由授权服务器定义。如果值包含了多个空格分割的字符串,他们的顺序并不重要,并且每个string为请求区域附加了一个额外的访问范围。
scope= scope-token *( SP scope-token )
scope-token = 1*( %x21 / %x23-5B / %x5D-7E )

授权服务器基于服务器策略或者资源拥有者的指令可能完全或部分的忽略客户端的scope请求。如果颁发的访问令牌范围与客户端的请求不同,服务器必须包含scope响应参数通知客户端实际的授权范围。

如果客户端在请求授权时忽略scope请求,授权服务器必须要么使用预定义的默认值或者使请求失败以指明无效范围。授权服务器应该在文档说明scope需求和默认值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容