-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merging to release-5.3: [TT-12741] Looped ap is wrongfully inherit the caller's authentication key when using url rewrite (#6778) #6793
Conversation
…n key when using url rewrite (#6778) <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-12741" title="TT-12741" target="_blank">TT-12741</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Looped APIs wrongfully inherit the caller's Authentication key when using URL rewrite</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>In Dev</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20'24Bugsmash%20ORDER%20BY%20created%20DESC" title="'24Bugsmash">'24Bugsmash</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20customer_bug%20ORDER%20BY%20created%20DESC" title="customer_bug">customer_bug</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- PR to see CI/CD result, please don't merge it. ___ Bug fix, Tests ___ - Introduced a new context constant `SelfLooping` and methods `ctxSetSelfLooping` and `ctxSelfLooping` to manage self-looping state in requests. - Updated `ctxCheckLimits` to bypass rate limits and quotas for self-looping requests. - Modified API loader to set self-looping state for self-referencing requests. - Enhanced the test `TestQuotaNotAppliedWithURLRewrite` to include scenarios for self-looping and URL rewrite, ensuring proper behavior. ___ <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>ctx.go</strong><dd><code>Add support for managing self-looping state in context</code> </dd></summary> <hr> ctx/ctx.go <li>Added a new constant <code>SelfLooping</code> to the context.<br> <li> Introduced new methods <code>ctxSetSelfLooping</code> and <code>ctxSelfLooping</code> for <br>managing self-looping state in requests.<br> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/6778/files#diff-600f5f552779994b15324fda108549eec7e7be30b1d8a1a16ee8344243e0cbc7">+1/-0</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>api.go</strong><dd><code>Update rate limit and quota checks for self-looping requests</code></dd></summary> <hr> gateway/api.go <li>Modified <code>ctxCheckLimits</code> to skip rate limits and quotas for <br>self-looping requests.<br> <li> Added logic to check and set self-looping state in requests.<br> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/6778/files#diff-644cda3aeb4ac7f325359e85fcddb810f100dd5e6fa480b0d9f9363a743c4e05">+20/-1</a> </td> </tr> <tr> <td> <details> <summary><strong>api_loader.go</strong><dd><code>Set self-looping state for self-referencing requests</code> </dd></summary> <hr> gateway/api_loader.go - Added logic to set self-looping state when the hostname is "self". </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/6778/files#diff-cdf0b7f176c9d18e1a314b78ddefc2cb3a94b3de66f1f360174692c915734c68">+1/-0</a> </td> </tr> </table></td></tr><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>middleware_test.go</strong><dd><code>Enhance tests to cover self-looping and URL rewrite scenarios</code></dd></summary> <hr> gateway/middleware_test.go <li>Updated <code>TestQuotaNotAppliedWithURLRewrite</code> to include extended paths <br>and self-looping scenarios.<br> <li> Added a loader to create a merged API spec for testing.<br> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/6778/files#diff-6a09a08e3f82cc5e9d8c6b5c8426d75ea1e5d85e15ab008fca1f512e7c49c1e6">+7/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> ___ > 💡 **PR-Agent usage**: Comment `/help "your question"` on any pull request to receive relevant information --------- Co-authored-by: Tit Petric <tit.petric@monotek.net> Co-authored-by: Tit Petric <tit@tyk.io> (cherry picked from commit d59ae8c)
API Changes --- prev.txt 2024-12-19 13:19:49.821970080 +0000
+++ current.txt 2024-12-19 13:19:46.900982308 +0000
@@ -6871,6 +6871,7 @@
// CacheOptions holds cache options required for cache writer middleware.
CacheOptions
OASDefinition
+ SelfLooping
)
# Package: ./dlpython
|
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
Quality Gate failedFailed conditions See analysis details on SonarQube Cloud Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE |
User description
TT-12741 Looped ap is wrongfully inherit the caller's authentication key when using url rewrite (#6778)
User description
TT-12741
PR to see CI/CD result, please don't merge it.
PR Type
Bug fix, Tests
Description
SelfLooping
and methodsctxSetSelfLooping
andctxSelfLooping
to manage self-looping state inrequests.
ctxCheckLimits
to bypass rate limits and quotas forself-looping requests.
requests.
TestQuotaNotAppliedWithURLRewrite
to includescenarios for self-looping and URL rewrite, ensuring proper behavior.
Changes walkthrough 📝
ctx.go
Add support for managing self-looping state in context
ctx/ctx.go
SelfLooping
to the context.ctxSetSelfLooping
andctxSelfLooping
formanaging self-looping state in requests.
api.go
Update rate limit and quota checks for self-looping requests
gateway/api.go
ctxCheckLimits
to skip rate limits and quotas forself-looping requests.
api_loader.go
Set self-looping state for self-referencing requests
gateway/api_loader.go
middleware_test.go
Enhance tests to cover self-looping and URL rewrite scenarios
gateway/middleware_test.go
TestQuotaNotAppliedWithURLRewrite
to include extended pathsand self-looping scenarios.
Co-authored-by: Tit Petric tit.petric@monotek.net
Co-authored-by: Tit Petric tit@tyk.io
PR Type
Bug fix, Tests
Description
SelfLooping
and methodsctxSetSelfLooping
andctxSelfLooping
to manage self-looping state in requests.ctxCheckLimits
to bypass rate limits and quotas for self-looping requests.Changes walkthrough 📝
ctx.go
Add support for managing self-looping state in context
ctx/ctx.go
SelfLooping
to the context.ctxSetSelfLooping
andctxSelfLooping
for managingself-looping state in requests.
looping.go
Add utilities for managing self-looping state in requests
internal/httpctx/looping.go
SetSelfLooping
andIsSelfLooping
methods to manage andcheck self-looping state in requests.
api.go
Update rate limit and quota checks for self-looping requests
gateway/api.go
ctxCheckLimits
to bypass rate limits and quotas forself-looping requests.
api_loader.go
Set self-looping state for self-referencing requests
gateway/api_loader.go
mw_auth_key.go
Skip auth key checks for self-looping requests
gateway/mw_auth_key.go
requests.
looping_test.go
Add test for self-looping with authentication tokens
gateway/looping_test.go
TestLooping_AnotherAPIWithAuthTokens
to validateself-looping behavior with authentication tokens.
middleware_test.go
Enhance tests to cover self-looping and URL rewrite scenarios
gateway/middleware_test.go
TestQuotaNotAppliedWithURLRewrite
to include extended pathsand self-looping scenarios.
looping_test.go
Add tests for self-looping state management utilities
internal/httpctx/looping_test.go
SetSelfLooping
andIsSelfLooping
methods.