Skip to content

Commit 4fccb8e

Browse files
committed
fix(oauth2): allow HTTP origins and fix trailing-slash mismatch for local dev
- Strip trailing slash from normalizeUrl() results in isOriginAllowed() so origins with/without trailing slash match registered values - Conditionally skip HTTPS scheme enforcement when SSL.Enable is false, allowing HTTP clients in local dev - Fix SSL.Enable config key lookup (server.SSL_Enable → server.ssl_enable) to match the key name defined in config/server.php - Use getSchemeAndHttpHost() instead of hardcoded https:// prefix so the IDP base URL reflects the actual request scheme - Add fastcgi_buffers directives to nginx config to prevent buffer overflow
1 parent db9f777 commit 4fccb8e

4 files changed

Lines changed: 8 additions & 5 deletions

File tree

app/Models/OAuth2/Client.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -809,9 +809,9 @@ public function isOriginAllowed(string $origin):bool
809809
{
810810
$originWithoutPort = URLUtils::canonicalUrl($origin, false);
811811
if(empty($originWithoutPort)) return false;
812-
if(str_contains($this->allowed_origins, URLUtils::normalizeUrl($originWithoutPort) )) return true;
812+
if(str_contains($this->allowed_origins, rtrim(URLUtils::normalizeUrl($originWithoutPort), '/') )) return true;
813813
$originWithPort = URLUtils::canonicalUrl($origin);
814-
return str_contains($this->allowed_origins, URLUtils::normalizeUrl($originWithPort));
814+
return str_contains($this->allowed_origins, rtrim(URLUtils::normalizeUrl($originWithPort), '/'));
815815
}
816816

817817
public function getWebsite()
@@ -1097,7 +1097,7 @@ public function isPostLogoutUriAllowed($post_logout_uri)
10971097
if ($parts == false) {
10981098
return false;
10991099
}
1100-
if($parts['scheme']!=='https')
1100+
if($parts['scheme']!=='https' && ServerConfigurationService::getConfigValue("SSL.Enable"))
11011101
return false;
11021102

11031103
$logout_without_port = $parts['scheme'].'://'.$parts['host'];

app/Services/Utils/ServerConfigurationService.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public function __construct(
159159
$this->default_config_params["OAuth2SecurityPolicy.MaxInvalidRedeemAuthCodeAttempts"] = Config::get('server.OAuth2SecurityPolicy_MaxInvalidRedeemAuthCodeAttempts', 10);
160160
$this->default_config_params["OAuth2SecurityPolicy.MaxInvalidClientCredentialsAttempts"] = Config::get('server.OAuth2SecurityPolicy_MaxInvalidClientCredentialsAttempts', 5);
161161
//ssl
162-
$this->default_config_params["SSL.Enable"] = Config::get('server.SSL_Enable', true);
162+
$this->default_config_params["SSL.Enable"] = Config::get('server.ssl_enable', true);
163163
}
164164

165165
public function getUserIdentityEndpointURL($identifier)
@@ -250,7 +250,7 @@ public function getSiteUrl():string
250250
$request = request();
251251
if(!is_null($request))
252252
{
253-
return 'https://'.$request->getHttpHost();
253+
return $request->getSchemeAndHttpHost();
254254
}
255255
return Config::get('app.url');
256256
}

config/server.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
return array
1616
(
1717
'ssl_enabled' => env('SSL_ENABLED', false),
18+
'ssl_enable' => env('SSL_ENABLED', false),
1819
'db_log_enabled' => env('DB_LOG_ENABLED', false),
1920
'assets_base_url' => env('ASSETS_BASE_URL', null),
2021
'banning_enable' => env('BANNING_ENABLE', true),

docker-compose/nginx/idp.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ server {
1212
include fastcgi_params;
1313
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
1414
fastcgi_param PATH_INFO $fastcgi_path_info;
15+
fastcgi_buffers 16 16k;
16+
fastcgi_buffer_size 32k;
1517
}
1618
location / {
1719
try_files $uri $uri/ /index.php?$query_string;

0 commit comments

Comments
 (0)