403来自Adobe Experience Manager OAuth 2令牌端点的响应

Ger*_*leg 6 adobe oauth experience-manager aem postman

我正在使用Postman从vanilla AEM安装中测试OAuth 2.

在此输入图像描述

在我授予访问权限后,邮递员可以从/ oauth/authorize成功获取授权码:

在此输入图像描述

但是当它尝试使用代码从/ oauth/token获取令牌时,它会收到以下响应:

HTTP错误:403访问/ oauth/token时出现问题.原因:禁止由Jetty提供支持://

在Fiddler中,它正在对/ oauth/token执行POST,并在正文中使用以下名称/值:

client_id:来自/libs/granite/oauth/content/client.html的客户端ID

client_secret:来自/libs/granite/oauth/content/client.html的客户端密钥

redirect_uri:https: //www.getpostman.com/oauth2/callback

grant_type:authorization_code

code:从先前的oauth/authorize请求返回的代码

我错过了什么吗?

Ger*_*leg 2

我自己找到了答案,并认为我应该分享我所经历的过程以及答案,因为它可能会帮助其他刚接触 AEM 的人。

如何查找错误原因:

  1. 转到 CRXDE Lite。
  2. 选择控制台。
  3. 然后取消选择停止按钮以允许出现新的控制台日志(这对我来说非常违反直觉)。

CRXDE Lite 控制台

从这里我可以看到问题的原因:

org.apache.sling.security.impl.ReferrerFilter 拒绝对 /oauth/token 的 POST 请求的空引用标头

因为邮递员没有在请求标头中放置引用者,所以我不得不告诉 Apache Sling 允许空请求标头。

去做这个:

  1. 转到/system/console/configMgr
  2. 打开 Apache Sling Referrer 过滤器配置
  3. 选中允许为空复选框

Apache Sling 引用过滤器配置