问题描述
我正在从客户端到我们的 AWS EC2 实施基本的画布 LTI。当端点是我们的开发 EC2 时,它工作正常。但是,当端点是我们的实时站点时,其中 EC2 位于负载均衡器之后,它会因“消费者密钥无效”而失败
任何想法都值得赞赏!
解决方法
问题是 aws 负载均衡器通过 http 端口 80 连接到 EC2 目标,这导致 oauth 失败。
我不确定将 https/443 更改/添加到目标组会如何影响我的自动缩放组和健康检查等,因此我编辑了 OAuth.php 文件,删除了 from_request 函数中检查服务器是否正常的部分https 因为我们将始终为此通过 https 进行连接。
改变了这个:
public static function from_request($http_method=NULL,$http_url=NULL,$parameters=NULL) {
$scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
? 'http'
: 'https';
$http_url = ($http_url) ? $http_url : $scheme .
'://' . $_SERVER['SERVER_NAME'] .
':' .
$_SERVER['SERVER_PORT'] .
$_SERVER['REQUEST_URI'];
为此:
public static function from_request($http_method=NULL,$parameters=NULL) {
$scheme = 'https';
$http_url = ($http_url) ? $http_url : $scheme .
'://' . $_SERVER['SERVER_NAME'] .
':' .
443 .
$_SERVER['REQUEST_URI'];