fix: address critical code review issues (4 fixes)
This commit addresses 4 critical issues identified in code review: 1. **Token Rotation Race Condition** (token_broker.py) - Added per-user locking mechanism to prevent concurrent refresh token corruption - Implemented double-check pattern for cache after acquiring lock - Users can now safely refresh concurrently without token desync 2. **Hardcoded OAuth Client ID** (PHP files) - Made client ID configurable via `astroglobe_client_id` in system config - Updated McpServerClient to provide getClientId() method - Injected McpServerClient into IdpTokenRefresher and OAuthController - Updated admin settings UI to display client ID configuration status - App gracefully handles missing client ID with warnings in admin UI 3. **Missing Cache Invalidation** (management.py:revoke_user_access) - Added cache.invalidate() call when revoking user access - Ensures both storage AND cache are cleared atomically - Prevents stale cached tokens from being used after revocation 4. **Error Message Exposure** (management.py) - Created _sanitize_error_for_client() helper function - Updated all error handlers to log detailed errors internally - Returns generic messages to clients to prevent information leakage - Protects against exposing database paths, API URLs, tokens, etc. All changes are backward compatible and preserve existing functionality. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.5
parent
619c62d89a
commit
44391d3d1d
+19
-2
@@ -54,6 +54,22 @@ style('astroglobe', 'astroglobe-settings');
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong><?php p($l->t('OAuth Client ID')); ?></strong></td>
|
||||
<td>
|
||||
<?php if ($_['clientIdConfigured']): ?>
|
||||
<span class="badge badge-success">
|
||||
<span class="icon icon-checkmark-white"></span>
|
||||
<?php p($l->t('Configured')); ?>
|
||||
</span>
|
||||
<?php else: ?>
|
||||
<span class="badge badge-warning">
|
||||
<span class="icon icon-alert"></span>
|
||||
<?php p($l->t('Not configured - OAuth will not work')); ?>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong><?php p($l->t('OAuth Client Secret')); ?></strong></td>
|
||||
<td>
|
||||
@@ -71,12 +87,13 @@ style('astroglobe', 'astroglobe-settings');
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php if (empty($_['serverUrl']) || !$_['apiKeyConfigured']): ?>
|
||||
<?php if (empty($_['serverUrl']) || !$_['apiKeyConfigured'] || !$_['clientIdConfigured']): ?>
|
||||
<div class="notecard notecard-warning">
|
||||
<p><strong><?php p($l->t('Configuration Required')); ?></strong></p>
|
||||
<p><?php p($l->t('Add the following to your config.php:')); ?></p>
|
||||
<pre><code>'mcp_server_url' => 'http://localhost:8000',
|
||||
'mcp_server_api_key' => 'your-secret-api-key',</code></pre>
|
||||
'mcp_server_api_key' => 'your-secret-api-key',
|
||||
'astroglobe_client_id' => 'your-oauth-client-id',</code></pre>
|
||||
<p class="mcp-help-text">
|
||||
<a href="https://github.com/cbcoutinho/nextcloud-mcp-server" target="_blank">
|
||||
<?php p($l->t('See documentation for details')); ?>
|
||||
|
||||
Reference in New Issue
Block a user