我正在使用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 client_secret的客户端ID:来自/libs/granite/oauth/content/client.html redirect_uri的客户端密码:https://www.getpostman.com/oauth2/callback grant_type:authorization_code代码:从先前的请求返回到oauth / authorize的代码
我错过了什么吗?
3 回答
允许此列出允许的主机的好方法,否则这违反了AEM安全检查表的最佳做法 .
它适用于开发环境,不适合 生产环境 .
如果您可以列出有关如何构建URL和获取令牌的一些代码段,将会有所帮助 .
以下是我们如何实现与您尝试的非常相似的示例,也许它会有所帮助 .
定义类似下面的服务(片段)并在OSGI中定义值(主机,URL等)(或者您也可以将它们硬编码用于测试目的)
我自己找到了答案,并且认为我会分享我经历的过程以及答案,因为它可能会帮助其他新手AEM .
如何找到错误原因:
转到CRXDE Lite .
选择控制台 .
然后取消选择停止按钮以允许出现新的控制台日志(这对我来说非常违反直觉) .
从这里我能够看到问题的原因:
因为邮递员没有在请求标头中放置引用者,所以我必须告诉Apache Sling允许空请求标头 .
去做这个:
转至/ system / console / configMgr
打开Apache Sling Referrer过滤器配置
选中允许空复选框