跳到主要内容

5.2. Passing a Request Object by Reference (按引用传递请求对象)

5.2. Passing a Request Object by Reference (按引用传递请求对象)

request_uri 授权请求参数使 OAuth 授权请求可以按引用而非按值传递. 其用法与 request 参数相同, 区别在于 Request Object 的值从指定 URI 标识的资源获取, 而非按值直接传递.

整个 Request URI 不应超过 512 个 ASCII 字符. 限制原因有二:

  1. 截至本文撰写时, 市场上许多手机仍无法接收过大载荷, 限制通常为 512 或 1024 个 ASCII 字符.

  2. 在 2G 等慢速连接上, 过大的 URL 会导致响应缓慢; 从用户体验角度不宜使用.

除非 URI 由授权服务器提供给客户端, 否则 request_uri 所引用资源的内容必须为 Request Object, 且授权服务器必须能够访问. 第一种情形下, request_uri 必须为 [RFC7230] 第 2.7.2 节规定的 https URI. 第二种情形下, 必须为 [RFC8141] 规定的 URN.

以下为可由 request_uri 引用的 Request Object 资源内容示例 (为显示仅对值内换行):

eyJhbGciOiJSUzI1NiIsImtpZCI6ImsyYmRjIn0.ewogICAgImlzcyI6ICJzNkJoZF
JrcXQzIiwKICAgICJhdWQiOiAiaHR0cHM6Ly9zZXJ2ZXIuZXhhbXBsZS5jb20iLAog
ICAgInJlc3BvbnNlX3R5cGUiOiAiY29kZSBpZF90b2tlbiIsCiAgICAiY2xpZW50X2
lkIjogInM2QmhkUmtxdDMiLAogICAgInJlZGlyZWN0X3VyaSI6ICJodHRwczovL2Ns
aWVudC5leGFtcGxlLm9yZy9jYiIsCiAgICAic2NvcGUiOiAib3BlbmlkIiwKICAgIC
JzdGF0ZSI6ICJhZjBpZmpzbGRraiIsCiAgICAibm9uY2UiOiAibi0wUzZfV3pBMk1q
IiwKICAgICJtYXhfYWdlIjogODY0MDAKfQ.Nsxa_18VUElVaPjqW_ToI1yrEJ67BgK
b5xsuZRVqzGkfKrOIX7BCx0biSxYGmjK9KJPctH1OC0iQJwXu5YVY-vnW0_PLJb1C2
HG-ztVzcnKZC2gE4i0vgQcpkUOCpW3SEYXnyWnKzuKzqSb1wAZALo5f89B_p6QA6j6
JwBSRvdVsDPdulW8lKxGTbH82czCaQ50rLAg3EYLYaCb4ik4I1zGXE4fvim9FIMs8O
CMmzwIB5S-ujFfzwFjoyuPEV4hJnoVUmXR_W9typPf846lGwA8h9G9oNTIuX8Ft2jf
pnZdFmLg3_wr3Wa5q3a-lfbgF3S9H_8nN3j1i7tLR_5Nz-g

5.2.1, 5.2.2, 5.2.3.