├── .dockerignore ├── .github └── workflows │ └── release.yml ├── .gitignore ├── COPYING ├── README.md ├── docs └── assets │ ├── email-otp-authenticator.png │ ├── magic-authenticator.png │ ├── magic-link-authenticator.png │ ├── magic-link-config.png │ ├── magic-link-continuation-authenticator.png │ ├── magic-link-continuation-config.png │ └── magic-link-continuation-expiration.png ├── pom.xml └── src └── main ├── java └── io │ └── phasetwo │ └── keycloak │ └── magic │ ├── MagicLink.java │ ├── auth │ ├── EmailOtpAuthenticator.java │ ├── EmailOtpAuthenticatorFactory.java │ ├── EmailOtpMessages.java │ ├── MagicLinkAuthenticator.java │ ├── MagicLinkAuthenticatorFactory.java │ ├── MagicLinkContinuationAuthenticator.java │ ├── MagicLinkContinuationAuthenticatorFactory.java │ ├── model │ │ └── MagicLinkContinuationBean.java │ ├── token │ │ ├── MagicLinkActionToken.java │ │ ├── MagicLinkActionTokenHandler.java │ │ ├── MagicLinkActionTokenHandlerFactory.java │ │ ├── MagicLinkContinuationActionToken.java │ │ ├── MagicLinkContinuationActionTokenHandlerFactory.java │ │ └── MagicLinkContinuationLinkActionTokenHandler.java │ └── util │ │ ├── Authenticators.java │ │ └── MagicLinkConstants.java │ ├── representation │ ├── MagicLinkRequest.java │ └── MagicLinkResponse.java │ ├── resources │ ├── AbstractAdminResource.java │ ├── BaseRealmResourceProvider.java │ ├── CorsResource.java │ ├── MagicLinkResource.java │ ├── MagicLinkResourceProvider.java │ └── MagicLinkResourceProviderFactory.java │ └── rest │ ├── MagicLinkContinuationStatusProvider.java │ └── MagicLinkContinuationStatusProviderFactory.java └── resources └── theme-resources ├── messages ├── messages_de.properties ├── messages_en.properties ├── messages_es.properties ├── messages_fr.properties ├── messages_hu.properties ├── messages_it.properties ├── messages_ja.properties ├── messages_nl.properties ├── messages_pt.properties ├── messages_ru.properties └── messages_zh.properties └── templates ├── email-confirmation-error.ftl ├── email-confirmation.ftl ├── html ├── magic-link-continuation-email.ftl ├── magic-link-email.ftl └── otp-email.ftl ├── otp-form.ftl ├── text ├── magic-link-continuation-email.ftl ├── magic-link-email.ftl └── otp-email.ftl ├── view-email-continuation.ftl └── view-email.ftl /.dockerignore: -------------------------------------------------------------------------------- 1 | target/** 2 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/.github/workflows/release.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/.gitignore -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/COPYING -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/README.md -------------------------------------------------------------------------------- /docs/assets/email-otp-authenticator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/docs/assets/email-otp-authenticator.png -------------------------------------------------------------------------------- /docs/assets/magic-authenticator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/docs/assets/magic-authenticator.png -------------------------------------------------------------------------------- /docs/assets/magic-link-authenticator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/docs/assets/magic-link-authenticator.png -------------------------------------------------------------------------------- /docs/assets/magic-link-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/docs/assets/magic-link-config.png -------------------------------------------------------------------------------- /docs/assets/magic-link-continuation-authenticator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/docs/assets/magic-link-continuation-authenticator.png -------------------------------------------------------------------------------- /docs/assets/magic-link-continuation-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/docs/assets/magic-link-continuation-config.png -------------------------------------------------------------------------------- /docs/assets/magic-link-continuation-expiration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/docs/assets/magic-link-continuation-expiration.png -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/pom.xml -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/MagicLink.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/MagicLink.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/EmailOtpAuthenticator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/EmailOtpAuthenticator.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/EmailOtpAuthenticatorFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/EmailOtpAuthenticatorFactory.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/EmailOtpMessages.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/EmailOtpMessages.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/MagicLinkAuthenticator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/MagicLinkAuthenticator.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/MagicLinkAuthenticatorFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/MagicLinkAuthenticatorFactory.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/MagicLinkContinuationAuthenticator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/MagicLinkContinuationAuthenticator.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/MagicLinkContinuationAuthenticatorFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/MagicLinkContinuationAuthenticatorFactory.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/model/MagicLinkContinuationBean.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/model/MagicLinkContinuationBean.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkActionToken.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkActionToken.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkActionTokenHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkActionTokenHandler.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkActionTokenHandlerFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkActionTokenHandlerFactory.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkContinuationActionToken.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkContinuationActionToken.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkContinuationActionTokenHandlerFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkContinuationActionTokenHandlerFactory.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkContinuationLinkActionTokenHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/token/MagicLinkContinuationLinkActionTokenHandler.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/util/Authenticators.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/util/Authenticators.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/auth/util/MagicLinkConstants.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/auth/util/MagicLinkConstants.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/representation/MagicLinkRequest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/representation/MagicLinkRequest.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/representation/MagicLinkResponse.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/representation/MagicLinkResponse.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/resources/AbstractAdminResource.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/resources/AbstractAdminResource.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/resources/BaseRealmResourceProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/resources/BaseRealmResourceProvider.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/resources/CorsResource.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/resources/CorsResource.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/resources/MagicLinkResource.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/resources/MagicLinkResource.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/resources/MagicLinkResourceProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/resources/MagicLinkResourceProvider.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/resources/MagicLinkResourceProviderFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/resources/MagicLinkResourceProviderFactory.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/rest/MagicLinkContinuationStatusProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/rest/MagicLinkContinuationStatusProvider.java -------------------------------------------------------------------------------- /src/main/java/io/phasetwo/keycloak/magic/rest/MagicLinkContinuationStatusProviderFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/java/io/phasetwo/keycloak/magic/rest/MagicLinkContinuationStatusProviderFactory.java -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_de.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_de.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_en.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_en.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_es.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_es.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_fr.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_fr.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_hu.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_hu.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_it.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_it.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_ja.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_ja.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_nl.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_nl.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_pt.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_pt.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_ru.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_ru.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/messages/messages_zh.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/messages/messages_zh.properties -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/email-confirmation-error.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/email-confirmation-error.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/email-confirmation.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/email-confirmation.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/html/magic-link-continuation-email.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/html/magic-link-continuation-email.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/html/magic-link-email.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/html/magic-link-email.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/html/otp-email.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/html/otp-email.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/otp-form.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/otp-form.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/text/magic-link-continuation-email.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/text/magic-link-continuation-email.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/text/magic-link-email.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/text/magic-link-email.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/text/otp-email.ftl: -------------------------------------------------------------------------------- 1 | <#ftl output_format="plainText"> 2 | ${msg("otpBody", realmName, code)} 3 | -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/view-email-continuation.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/view-email-continuation.ftl -------------------------------------------------------------------------------- /src/main/resources/theme-resources/templates/view-email.ftl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/p2-inc/keycloak-magic-link/HEAD/src/main/resources/theme-resources/templates/view-email.ftl --------------------------------------------------------------------------------