当oauth2 authoration代码授予流时,redirect_uri参数是否可选?

时间:2017-11-01 07:39:26

标签: oauth-2.0

RFC6749#setion-4.1.1中介绍redirect_uri是可选的。

授权代码流上面的步骤(A),(C),(D)和(E)描述了redirect_uri的作用。
特别是步骤(E)描述如下......

  

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

当我看到第4.1.1节时,我很困惑 我想也许这个文件没错,只是愚蠢我不明白。

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

2 个答案:

答案 0 :(得分:1)

rfc6749#section-2中,描述:

  

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

在rfc中,SHALL表示MUSTREQUIREDKey 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

答案 1 :(得分:1)

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

  

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

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

也在#section-3.1.2中:

  

3.1.2。重定向端点

     

与资源所有者完成互动后,   授权服务器将资源所有者的用户代理引导回   客户端。授权服务器将用户代理重定向到   客户端先前与   客户端注册过程中的授权服务器   发出授权请求。