Skip to content

Issue #5442 - add MultiAuthenticator to support multiple authentication options #12393

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

Open
wants to merge 14 commits into
base: jetty-12.1.x
Choose a base branch
from

Conversation

lachlan-roberts
Copy link
Contributor

Issue #5442

Introduces the MultiAuthenticator class which can be used to support multiple authentication options simultaneously for the same webapp.

For example you could have an app with the options to login with FORM, OpenID or Ethereum.

Verified

This commit was signed with the committer’s verified signature.
…entication options

Signed-off-by: Lachlan Roberts <[email protected]>

Verified

This commit was signed with the committer’s verified signature.
Signed-off-by: Lachlan Roberts <[email protected]>

Verified

This commit was signed with the committer’s verified signature.
Signed-off-by: Lachlan Roberts <[email protected]>

Verified

This commit was signed with the committer’s verified signature.
Signed-off-by: Lachlan Roberts <[email protected]>
@lachlan-roberts lachlan-roberts self-assigned this Oct 16, 2024

Verified

This commit was signed with the committer’s verified signature.
Signed-off-by: Lachlan Roberts <[email protected]>

Verified

This commit was signed with the committer’s verified signature.
Signed-off-by: Lachlan Roberts <[email protected]>
@lachlan-roberts lachlan-roberts requested a review from gregw October 30, 2024 13:18
assertThat(response.getContentAsString(), containsString("<h1>Multi Login Page</h1>"));
assertThat(response.getContentAsString(), containsString("/login/openid"));
assertThat(response.getContentAsString(), containsString("/login/form"));
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to see:

  • for this test, the access to a protected resource should be tried for both authentications.
  • a new test for failed authentication, protected resources are not accessible
  • a test where one authentication succeeds but the other fails -- can I still access the resource? Basically I would like to know if "multi" has "and" semantic (all authentications but must successful), or "or" semantic (one successful authentication is enough).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The first two points are covered by the main test case.

a test where one authentication succeeds but the other fails -- can I still access the resource? Basically I would like to know if "multi" has "and" semantic (all authentications but must successful), or "or" semantic (one successful authentication is enough).

It doesn't work like this, once an authentication has succeeded you cannot attempt another authentication, because you are locked into that authenticator until you log out. So it has OR semantics.

So if I login with OPENID, then try to login as FORM, I will not be redirected to the form login page, and if I submit a form request to login it will go straight through the OpenIdAuthenticator and be delivered to the application.

Verified

This commit was signed with the committer’s verified signature.
Signed-off-by: Lachlan Roberts <[email protected]>
@joakime joakime linked an issue Jan 15, 2025 that may be closed by this pull request
@gregw
Copy link
Contributor

gregw commented Apr 7, 2025

@lachlan-roberts let's wake this up and get it merged

Verified

This commit was signed with the committer’s verified signature.
…5442-multipleAuthentication

Verified

This commit was signed with the committer’s verified signature.
…ibute

Signed-off-by: Lachlan Roberts <[email protected]>

Verified

This commit was signed with the committer’s verified signature.
…5442-multipleAuthentication
@lachlan-roberts lachlan-roberts requested a review from sbordet April 16, 2025 21:44
@lachlan-roberts
Copy link
Contributor Author

@sbordet please review this one again so it can be merged

Copy link
Contributor

@sbordet sbordet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix the small nits I reported.

Verified

This commit was signed with the committer’s verified signature.
Signed-off-by: Lachlan Roberts <[email protected]>

Verified

This commit was signed with the committer’s verified signature.
…5442-multipleAuthentication

Verified

This commit was signed with the committer’s verified signature.
Signed-off-by: Lachlan Roberts <[email protected]>

Verified

This commit was signed with the committer’s verified signature.
…5442-multipleAuthentication
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 👀 In review
Development

Successfully merging this pull request may close these issues.

Allow multiple authentication options for a web app
4 participants