-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
[feat][ws] Use async auth method to support OIDC #20238
[feat][ws] Use async auth method to support OIDC #20238
Conversation
Codecov Report
@@ Coverage Diff @@
## master #20238 +/- ##
=============================================
+ Coverage 33.17% 72.92% +39.74%
- Complexity 12236 31961 +19725
=============================================
Files 1499 1868 +369
Lines 114413 138597 +24184
Branches 12431 15247 +2816
=============================================
+ Hits 37962 101069 +63107
+ Misses 71499 29483 -42016
- Partials 4952 8045 +3093
Flags with carried forward coverage won't be shown. Click here to find out more.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@@ -171,20 +172,26 @@ public String authenticateHttpRequest(HttpServletRequest request, Authentication | |||
authData = authenticationState.getAuthDataSource(); | |||
} | |||
// Backward compatible, the authData value was null in the previous implementation | |||
return providerToUse.authenticate(authData); | |||
return providerToUse.authenticateAsync(authData).get(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we give it a timeout by any chance?
LOG.debug("Authentication failed for provider " + providerToUse.getAuthMethodName() + " : " | ||
+ e.getMessage(), e); | ||
} | ||
throw new RuntimeException(e); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am unsure who will use it. Should we consider remark interrupted in the current Thread?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Fixes apache#20236 PIP: apache#19409 ### Motivation In the `AuthenticationService`, we are currently using the deprecated `authenticate` methods. As a result, we hit the `Not Implemented` exception when using the `AuthenticationProviderOpenID`. This PR updates the implementation so that we're able This solution isn't ideal for two reasons. 1. We are not using the `authenticationHttpRequest` method, which seems like the right method for the WebSocket proxy. However, this is not a viable option, as I documented in apache#20237. 2. We are calling `.get()` on a future. However, it is expected that the `AuthenticationProvider` not block forever, so I think this is acceptable for now. Please let me know if you disagree. ### Modifications * Replace `authenticate` with `authenticateAsync`. ### Verifying this change This change is a trivial rework / code cleanup without any test coverage. ### Documentation - [x] `doc-not-needed` Note that I do have documentation showing that 3.0.x does not support OIDC in the WebSocket Proxy. The `next` docs don't need that limitation since this PR fixes that and targets 3.1.0. apache/pulsar-site#558 ### Matching PR in forked repository PR in forked repository: skipping for this trivial PR (cherry picked from commit 03dc3db)
Fixes #20236
PIP: #19409
Motivation
In the
AuthenticationService
, we are currently using the deprecatedauthenticate
methods. As a result, we hit theNot Implemented
exception when using theAuthenticationProviderOpenID
. This PR updates the implementation so that we're ableThis solution isn't ideal for two reasons.
authenticationHttpRequest
method, which seems like the right method for the WebSocket proxy. However, this is not a viable option, as I documented in Determine Correct Expansion of AuthenticationProvider interface for WebSocket Proxy #20237..get()
on a future. However, it is expected that theAuthenticationProvider
not block forever, so I think this is acceptable for now. Please let me know if you disagree.Modifications
authenticate
withauthenticateAsync
.Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Documentation
doc-not-needed
Note that I do have documentation showing that 3.0.x does not support OIDC in the WebSocket Proxy. The
next
docs don't need that limitation since this PR fixes that and targets 3.1.0. apache/pulsar-site#558Matching PR in forked repository
PR in forked repository: skipping for this trivial PR