诸如此Okta 赞助网站之类的来源(请参阅“按请求自定义”部分)提到,自动化请求的 redirect_uri 参数不应具有动态查询部分(例如:用于会话匹配用途)。
引用:
服务器应拒绝任何带有与已注册 URL 不完全匹配的重定向 URL 的授权请求。
我们的 OAuth AZ 提供商是 BIG-IP F5。我们正在设置它,它们似乎符合上述观点。
我们的客户端是在别处构建的 Web 应用程序,它们似乎没有遵循上述规则。这是授权端点的完整表示(已编辑): https ://ourownF5host.ca/f5-oauth2/v1/authorize?client_id=theIDofOurClient&redirect_uri=https%3A%2F%2FourClientAppHostname%2FClientRessource%2FRessource%3FSessionId%3D76eab448-52d1 -4adb-8eba-e9ec1b9432a3&state=2HY-MLB0ST34wQUPCyHM-A&scope=RessourceData&response_type=code
他们使用的 redirect_uri 格式类似于(为简单起见,我在这里不进行 urlencode):redirect_uri= https://ourClientAppHostname/ClientRessource/Ressource?SessionId=SOMELONGSESSIONID,每次调用的 SOMELONGSESSIONID 值都不同。
我们深入研究了RFC6749 (OAuth2),并在第 3.1.2.2 节中找到了这一点:
授权服务器应该要求客户端提供
完整的重定向 URI(客户端可以使用“state”请求
参数来实现每个请求的定制)。如果要求
注册完整的重定向 URI 是不可能的,
授权服务器应该要求注册 URI
方案、权限和路径(允许客户端
在请求
授权时仅动态更改重定向 URI 的查询组件)。
我理解并想在此验证的是,第一个来源 Okta 和 F5 仅接受上述规则的第一部分,并要求重定向 uri 完全注册而没有任何动态部分。
我是否可以肯定他们(Okta 和 F5)不遵守摘录的第二部分,理由是他们应该“允许(ing)客户端在请求授权时仅动态更改重定向 URI 的查询组件”?
或者,RFC6749 是否有任何形式的官方更正/演变,以保证两家公司的设计立场?