From ab9fac7ebc24af22abdc2d57668b0b74cd24bd7a Mon Sep 17 00:00:00 2001 From: Sven-Torben Janus Date: Wed, 25 Oct 2023 22:24:38 +0200 Subject: [PATCH] feat: Support forwarding users with unverified email addresses Closes #261 --- docs/configuration.md | 13 ++++---- docs/faq.md | 3 ++ docs/images/authenticator-config.jpg | Bin 78393 -> 146168 bytes .../authentication/hidpd/DomainExtractor.java | 5 +-- .../hidpd/HomeIdpDiscoveryConfig.java | 7 ++++ .../HomeIdpDiscoveryConfigProperties.java | 10 ++++++ .../authentication/AuthenticatorConfig.java | 13 ++++++++ .../authentication/HomeIdpDiscoveryIT.java | 31 ++++++++++++++---- 8 files changed, 68 insertions(+), 14 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 7a26f5b..d414200 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -36,12 +36,13 @@ To configure click settings/gear icon (⚙) ![Authenticator configuration](images/authenticator-config.jpg) -| Option | Description | -|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| User attribute | The user attribute used to lookup the user's email address.

If set to `email` (default) the authenticator will use the default email property. In this case the authenticator will only forward the user if the email has been verified. For any other attribute, the authenticator will not validate if the email has been verified.

A common use case is to store a User Principal Name (UPN) in a custom attribute and forward users based on the UPN instead instead of their email address. | -| Bypass login page | If switched on, users will be forwarded to their home IdP without the need to reenter/confirm their email address on the login page iff email address is provided as an OICD [`login_hint` parameter](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) or SAML `subject/nameID`.

If switched off, users are only redirected after submitting/confirming their email address on the login page. (default)

*Note: This will take SAML `ForceAuthn` and OIDC [`prompt=login|consent|select_account`](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) parameters into account. If one of these parameters is present, the login page will not be bypassed even if switched on.* | -| Forward to linked IdP | If switched on, federated users (with already linked IdPs) will be forwarded to a linked IdP even if no IdP has been configured for the user's email address. Federated users can also use their local username for login instead of their email address.

If switched off, users will only be forwarded to IdPs with matching email domains. (default) | -| Forward to first matched IdP | If switched on, users will be forwarded to the first IdP that matches the email domain (default), even if multiply IdPs may match.

If switched off, user will be shown all IdPs that match the email domain to choose one, iff multiple match.
The user will only be able to choose from IdPs that match the email domain. Please note that also IdPs that have [`Hide on Login Page`](https://www.keycloak.org/docs/latest/server_admin/#_general-idp-config) switched on will be shown.
If only one IdP matches, behavior is the same as if switched on. | +| Option | Description | +|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| User attribute | The user attribute used to lookup the user's email address.

If set to `email` (default) the authenticator will use the default email property. In this case the authenticator will only forward the user if the email has been verified or 'Forward users with unverified email' option is enabled. For any other attribute, the authenticator will not validate if the email has been verified.

A common use case is to store a User Principal Name (UPN) in a custom attribute and forward users based on the UPN instead instead of their email address. | +| Forward users with unverified email | If switched on, users with unverified email addresses will be forwarded to their home IdP.

If switched off (default), users with unverified email addresses will not be forwarded to their home IdP. | | +| Bypass login page | If switched on, users will be forwarded to their home IdP without the need to reenter/confirm their email address on the login page iff email address is provided as an OICD [`login_hint` parameter](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) or SAML `subject/nameID`.

If switched off, users are only redirected after submitting/confirming their email address on the login page. (default)

*Note: This will take SAML `ForceAuthn` and OIDC [`prompt=login|consent|select_account`](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) parameters into account. If one of these parameters is present, the login page will not be bypassed even if switched on.* | +| Forward to linked IdP | If switched on, federated users (with already linked IdPs) will be forwarded to a linked IdP even if no IdP has been configured for the user's email address. Federated users can also use their local username for login instead of their email address.

If switched off, users will only be forwarded to IdPs with matching email domains. (default) | +| Forward to first matched IdP | If switched on, users will be forwarded to the first IdP that matches the email domain (default), even if multiply IdPs may match.

If switched off, user will be shown all IdPs that match the email domain to choose one, iff multiple match.
The user will only be able to choose from IdPs that match the email domain. Please note that also IdPs that have [`Hide on Login Page`](https://www.keycloak.org/docs/latest/server_admin/#_general-idp-config) switched on will be shown.
If only one IdP matches, behavior is the same as if switched on. | ## Email domains diff --git a/docs/faq.md b/docs/faq.md index 660db67..f72dbdc 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -48,6 +48,9 @@ version [here](https://access.redhat.com/articles/2342881). Above rules apply ;) Make sure that your users email is marked as verified. You can enable the `Email verified` flag per user or switch on `Trust Email` in the advanced settings of the identity provider. +You can also allow redirecting users with unverified email addresses by switching +on `Forward users with unverified email` option in the authenticator config. + ## User is not redirected to the correct identity provider. How to analyze the problem? You may want to increase the log level to see more fine-grained information on how the authenticator discovered the home diff --git a/docs/images/authenticator-config.jpg b/docs/images/authenticator-config.jpg index 1225fb984fbd97f4adad8a9acf6e1e476ba30f60..ea3f4b35e948f9410f1d83f6f13ce769da55d679 100755 GIT binary patch literal 146168 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 literal 78393 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 extractFrom(UserModel user) { LOG.warnf("Could not find user attribute '%s' for user '%s'", config.userAttribute(), user.getId()); return Optional.empty(); } - if (EMAIL_ATTRIBUTE.equalsIgnoreCase(config.userAttribute()) && !user.isEmailVerified()) { - LOG.warnf("Email address of user '%s' is not verified", user.getId()); + if (EMAIL_ATTRIBUTE.equalsIgnoreCase(config.userAttribute()) && !user.isEmailVerified() + && !config.forwardUserWithUnverifiedEmail()) { + LOG.warnf("Email address of user '%s' is not verified and forwarding not enabled", user.getId()); return Optional.empty(); } return extractFrom(userAttribute); diff --git a/src/main/java/de/sventorben/keycloak/authentication/hidpd/HomeIdpDiscoveryConfig.java b/src/main/java/de/sventorben/keycloak/authentication/hidpd/HomeIdpDiscoveryConfig.java index eb01fdf..2040f82 100755 --- a/src/main/java/de/sventorben/keycloak/authentication/hidpd/HomeIdpDiscoveryConfig.java +++ b/src/main/java/de/sventorben/keycloak/authentication/hidpd/HomeIdpDiscoveryConfig.java @@ -9,6 +9,7 @@ final class HomeIdpDiscoveryConfig { static final String FORWARD_TO_LINKED_IDP = "forwardToLinkedIdp"; static final String BYPASS_LOGIN_PAGE = "bypassLoginPage"; static final String USER_ATTRIBUTE = "userAttribute"; + static final String FORWARD_UNVERIFIED_ATTRIBUTE = "forwardUnverifiedEmail"; static final String FORWARD_TO_FIRST_MATCH = "forwardToFirstMatch"; private final AuthenticatorConfigModel authenticatorConfigModel; @@ -35,6 +36,12 @@ String userAttribute() { .orElse("email"); } + boolean forwardUserWithUnverifiedEmail() { + return Optional.ofNullable(authenticatorConfigModel) + .map(it -> Boolean.parseBoolean(it.getConfig().getOrDefault(FORWARD_UNVERIFIED_ATTRIBUTE, "false"))) + .orElse(false); + } + boolean forwardToFirstMatch() { return Optional.ofNullable(authenticatorConfigModel) .map(it -> Boolean.parseBoolean(it.getConfig().getOrDefault(FORWARD_TO_FIRST_MATCH, "true"))) diff --git a/src/main/java/de/sventorben/keycloak/authentication/hidpd/HomeIdpDiscoveryConfigProperties.java b/src/main/java/de/sventorben/keycloak/authentication/hidpd/HomeIdpDiscoveryConfigProperties.java index c5296b7..a7c61da 100755 --- a/src/main/java/de/sventorben/keycloak/authentication/hidpd/HomeIdpDiscoveryConfigProperties.java +++ b/src/main/java/de/sventorben/keycloak/authentication/hidpd/HomeIdpDiscoveryConfigProperties.java @@ -8,6 +8,7 @@ import static de.sventorben.keycloak.authentication.hidpd.HomeIdpDiscoveryConfig.BYPASS_LOGIN_PAGE; import static de.sventorben.keycloak.authentication.hidpd.HomeIdpDiscoveryConfig.FORWARD_TO_LINKED_IDP; import static de.sventorben.keycloak.authentication.hidpd.HomeIdpDiscoveryConfig.FORWARD_TO_FIRST_MATCH; +import static de.sventorben.keycloak.authentication.hidpd.HomeIdpDiscoveryConfig.FORWARD_UNVERIFIED_ATTRIBUTE; import static de.sventorben.keycloak.authentication.hidpd.HomeIdpDiscoveryConfig.USER_ATTRIBUTE; import static org.keycloak.provider.ProviderConfigProperty.BOOLEAN_TYPE; import static org.keycloak.provider.ProviderConfigProperty.STRING_TYPE; @@ -46,8 +47,17 @@ final class HomeIdpDiscoveryConfigProperties { "email", false); + private static final ProviderConfigProperty FORWARD_UNVERIFIED_PROPERTY = new ProviderConfigProperty( + FORWARD_UNVERIFIED_ATTRIBUTE, + "Forward users with unverified email", + "If 'User attribute' is set to 'email', whether to forward existing user if user's email is not verified.", + BOOLEAN_TYPE, + false, + false); + static final List CONFIG_PROPERTIES = ProviderConfigurationBuilder.create() .property(USER_ATTRIBUTE_PROPERTY) + .property(FORWARD_UNVERIFIED_PROPERTY) .property(BYPASS_LOGIN_PAGE_PROPERTY) .property(FORWARD_TO_LINKED_IDP_PROPERTY) .property(FORWARD_TO_FIRST_MATCH_PROPERTY) diff --git a/src/test/java/de/sventorben/keycloak/authentication/AuthenticatorConfig.java b/src/test/java/de/sventorben/keycloak/authentication/AuthenticatorConfig.java index 56ba181..e849e63 100755 --- a/src/test/java/de/sventorben/keycloak/authentication/AuthenticatorConfig.java +++ b/src/test/java/de/sventorben/keycloak/authentication/AuthenticatorConfig.java @@ -26,6 +26,18 @@ void setUserAttribute(String userAttribute) { updateProperty("userAttribute", userAttribute); } + void enableForwardingUnverifiedEmails() { + setForwardingUnverifiedEmails(true); + } + + void disableForwardingUnverifiedEmails() { + setForwardingUnverifiedEmails(false); + } + + private void setForwardingUnverifiedEmails(Boolean enabled) { + updateProperty("forwardUnverifiedEmail", enabled); + } + void enableForwarding() { setForwarding(true); } @@ -67,6 +79,7 @@ void resetAuthenticatorConfig() { disableBypassLoginPage(); setUserAttribute("email"); enableForwardToFirstMatch(); + disableForwardingUnverifiedEmails(); } private void updateProperty(String propertyName, Boolean enabled) { diff --git a/src/test/java/de/sventorben/keycloak/authentication/HomeIdpDiscoveryIT.java b/src/test/java/de/sventorben/keycloak/authentication/HomeIdpDiscoveryIT.java index 4e7f9d1..a10ef32 100755 --- a/src/test/java/de/sventorben/keycloak/authentication/HomeIdpDiscoveryIT.java +++ b/src/test/java/de/sventorben/keycloak/authentication/HomeIdpDiscoveryIT.java @@ -90,12 +90,30 @@ public void doNotRedirectIfUserHasNonManagedDomain() { assertNotRedirected(); } - @Test - @DisplayName("Given user's email is not verified, do not redirect") - public void doNotRedirectIfUserEmailIsNotVerified() { - accountConsolePage().signIn(); - testRealmLoginPage().signIn("test4@example.com"); - assertNotRedirected(); + @Nested + @DisplayName("Given user's email is not verified") + class UnverifiedEmail { + + @BeforeEach + void setUp() { + accountConsolePage().signIn(); + } + + @Test + @DisplayName("then do not redirect") + public void doNotRedirect() { + testRealmLoginPage().signIn("test4@example.com"); + assertNotRedirected(); + } + + @Test + @DisplayName("then redirect if enabled") + public void redirectIfEnabled() { + authenticatorConfig.enableForwardingUnverifiedEmails(); + testRealmLoginPage().signIn("test4@example.com"); + assertRedirectedToIdp(); + } + } @Test @@ -475,6 +493,7 @@ private void assertRedirectedTo(String url) { private static RemoteWebDriver setupDriver() { RemoteWebDriver driver = BROWSER.getWebDriver(); driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30)); + driver.manage().deleteAllCookies(); return driver; }