oauth2端点如何确定请求的授予类型?
是端点本身吗(即,每个端点专用于一种或多种授予类型)。还是请求中发送的参数列表?还是Grant_type参数的值?
以anilist.co为例。
他们的oauth2文档说,为了授权代码的授予,可以将以下端点与这些参数一起使用:
https://anilist.co/api/v2/oauth/authorize?client_id= {client_id}&redirect_uri = {redirect_uri}&response_type = code
对于隐式授予,它说使用此方法:
https://anilist.co/api/v2/oauth/authorize?client_id= {client_id}&response_type = token
(请参阅:https://anilist.gitbook.io/anilist-apiv2-docs/overview/oauth/authorization-code-grant和https://anilist.gitbook.io/anilist-apiv2-docs/overview/oauth/implicit-grant)
因此,似乎他们有一个端点根据response_type值和redirect_uri的存在与否(换句话说,授予类型基于参数)确定授予类型。
但是对于每个oauth2提供程序总是这样吗?
根据此处的网站
https://alexbilbie.com/guide-to-oauth-2-grants/
…授权代码和隐式授权类型具有完全相同的参数集,但基于response_type值(隐式令牌,授权代码)进行区分。但是,其他授予类型由grant_type值区分。为什么不是每种Grant类型都可以通过grant_type值来区分?
因此,如果我要猜测的话,我会说授予类型是由grant_type的值确定的,而缺少grant_type的地方,则是由response_type的值确定的。
这是正确的吗?该标准是否适用于整个行业?
答案 0 :(得分:1)
由规范RFC [rfc6749]确定 [https://tools.ietf.org/html/rfc6749] 1
此RFC确定OAuth 2.0实施所需的所有端点。 由实施者决定。但是,他们将必须遵守互操作性规范。否则,专有流量可能无法扩展。
实际上,您还可以检查OpenIDConnect规范以了解更多详细信息。 (https://openid.net/specs/openid-connect-core-1_0.html)
答案 1 :(得分:0)
只需在此处添加,如果您希望将OAuth 2.0与本机应用程序一起使用,则可以使用不同的RFC,即https://tools.ietf.org/html/rfc8252