【问题标题】:when oauth2 authoration code grant flow, redirect_uri parameter is really optional?当 oauth2 授权码授权流程时,redirect_uri 参数真的是可选的吗?
【发布时间】:2018-04-13 11:58:28
【问题描述】:

RFC6749#setion-4.1.1 中引入redirect_uri 是可选的。

但上述授权代码流程步骤 (A)、(C)、(D) 以及 (E) 描述了 redirect_uri 的作用。
特别是步骤(E)描述如下..

并确保重定向 URI 收到的匹配用于重定向客户端的 URI 步骤 (C)。

所以当我看到第 4.1.1 节时我很困惑。
我想也许这个文件没有错,只是愚蠢的我没看懂。

请告诉我为什么redirect_uri 参数是可选的。 提前致谢。

【问题讨论】:

  • 您会在RFC6749 section 3.1.2.3 中找到一些规则。从我的 POV 来看,它应该始终设置为避免安全问题(例如,恶意应用程序更改了客户端配置并设置了自己的重定向 uri)。顺便说一句,当用于 OpenID Connect 的某些身份验证流程时需要此参数(请参阅OIDC Core specification section 3.2.2.1
  • 谢谢@FlorentMorselli。我没有仔细看文件。而且我在注册时忘记了redirect_uri。

标签: oauth-2.0


【解决方案1】:

rfc6749#section-2,描述:

注册客户端时,客户端开发者应:
o 提供其客户端重定向 URI,如第 3.1.2 节所述。

在 rfc 中,SHALL 表示 MUSTREQUIRED
(Key words for use in RFCs to Indicate Requirement Levels)

让我们看看@Florent Morselli 提到的rfc6749#section-3.1.2.3

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


结论

如果我们在注册客户端时只提供了一个完整的重定向uri,那么redirect_uri在授权请求时是可选的。

警告

如果“redirect_uri”参数包含在授权请求中,您必须将其包含在访问令牌请求中。详情here.

【讨论】:

    【解决方案2】:

    您的问题的答案在步骤 (C) 中(相同的RFC6749#section-4.1):

    授权服务器将用户代理重定向回客户端 使用之前提供的重定向 URI(在请求 中或在 客户注册)。

    因此,如果授权请求中没有redirect_uri,则授权服务器使用在客户端注册期间设置的默认网址(如@galcyurio 在他的回答中提到的rfc6749#section-2 中所述)。

    也在#section-3.1.2:

    3.1.2。重定向端点

    在完成与资源所有者的交互后, 授权服务器将资源所有者的用户代理引导回 客户端。授权服务器将用户代理重定向到 客户端的重定向端点之前建立的 客户端注册过程中的授权服务器或当 提出授权请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-04
      • 2021-12-22
      • 2016-11-18
      • 2020-11-23
      • 2020-05-05
      • 2014-05-10
      • 2021-04-24
      • 2020-10-15
      相关资源
      最近更新 更多