Oauth 2.0 OAuth2:如何发送;“否认”;对OAuth2服务器的请求?

Oauth 2.0 OAuth2:如何发送;“否认”;对OAuth2服务器的请求?,oauth-2.0,Oauth 2.0,当用户需要批准使用OAuth2进行身份验证的请求时,通常会给他们提供“批准”和“取消”按钮 当用户单击“取消”时,我应该发送什么 作为一名开发人员,当用户单击“取消”时,我应该向OAuth服务器发送什么信息以使其拒绝请求? 我尝试使用grant类型的“拒绝”,但没有成功。我知道应该发送什么来获得批准,但似乎看不到应该发送什么来让OAuth服务器响应重定向\u uri,并在用户取消时显示一个错误 我已经审查了规范和这个不错的,但还没有看到它 注意:我在任何地方都看不到明确的细节。是否假定我的应用

当用户需要批准使用OAuth2进行身份验证的请求时,通常会给他们提供“批准”和“取消”按钮

当用户单击“取消”时,我应该发送什么

作为一名开发人员,当用户单击“取消”时,我应该向OAuth服务器发送什么信息以使其拒绝请求?

我尝试使用
grant
类型的“拒绝”,但没有成功。我知道应该发送什么来获得批准,但似乎看不到应该发送什么来让OAuth服务器响应
重定向\u uri
,并在用户取消时显示一个错误

我已经审查了规范和这个不错的,但还没有看到它


注意:我在任何地方都看不到明确的细节。是否假定我的应用程序应该自行管理此功能?例如,在本例中,我的应用程序不是发布到OAuth2服务器,而是发布到它自己的
重定向\u uri

{redirect-url}?error=access_denied&error_description=The+user+clicked+deny
如果是这样的话,这似乎有点奇怪,因为所有实现的客户端都必须完成这项工作来构造带有错误代码和原因的url。

请参阅

如果资源所有者拒绝访问请求,或者请求因缺少或无效重定向URI以外的原因而失败,授权服务器将通过使用“application/x-www-form-urlencoded”格式向重定向URI的查询组件添加以下参数来通知客户机

例如:

HTTP/1.1 302 Found
Location: https://client.example.com/cb?error=access_denied&state=xyz
要在PHP中重定向,请执行以下操作:

<?php
http_redirect("https://client.example.com/cb", array("error" => "access_denied", "state" => "xyz", "error_description" => "The user clicked deny"), true, HTTP_REDIRECT_FOUND);
?>

据我所见,我不认为这是标准的一部分。我认为应该由每个OAuth2服务实现者来决定他们想要如何实现它

例如,超级流行节点模块使用的是一个使用良好的OAuth2库,它是这样的:

注意:这些链接可能指向代码的旧版本。它们是规范化的链接,以确保它们指向代码中的正确位置:


嘿。。。谢谢你的反馈。。。我正在尝试找出如何让主机响应回调url失败。我知道它通常是通过重定向来响应的,但我想知道如何使它在cancel案例中这样做。谢谢我用一个例子更新了我的答案,在PHPhey中重定向。。。再次感谢。。。您编写的PHP将在OAuth服务器中,对吗?那部分我理解。我想知道的是,客户机是否有标准的方式来请求拒绝操作,例如
http://anyOAuth2Server/authorize?grant=deny
。在任何例子中,我都看不到“拒绝”按钮在任何地方做什么。谢谢如果资源所有者拒绝访问,则无需执行任何操作。在这种情况下,OAuth2服务器不会发出任何消息。在使用重定向的URI重定向客户端之后,是否可以将客户端重定向到另一个页面?例如,假设客户端单击“取消”按钮,授权服务器将其重定向到:。之后,我希望我的应用程序将用户重定向到我应用程序中的另一个页面。允许这样做吗?我在RFC6749中没有看到我不被允许这样做,这就是我为什么要问的原因。