Skip to content

Latest commit

 

History

History
94 lines (76 loc) · 4.41 KB

README.md

File metadata and controls

94 lines (76 loc) · 4.41 KB

sms-authenticator-validator

A keycloak authenticator and mobile phone number validator inspired from keycloak-sms-authenticator-sns.

Differences from the original project :

  • The phone number required action allow check presence of the mobile_number user profile attribute
  • The phone number validation required action allow mobile_number to be validated with sms code
  • New Keycloak sms-sender SPI used in both authenticator and required actions + refactoring
  • Simplify phone number form
  • Add ISENDPRO gateway

To install the SMS Authenticator one has to:

  • Add the jar to the Keycloak server:
    • $ cp target/sms-authenticator-validator-1.0-*.jar _KEYCLOAK_HOME_/providers/

You can also use jboss-cli commande :

`/opt/jboss/keycloak/bin/jboss-cli.sh --command=" \
           module add \
                   --name=com.google.libphonenumber \
                   --resources=libphonenumber-8.9.0.jar
   "
   
   /opt/jboss/keycloak/bin/jboss-cli.sh --command=" \
           module add \
                   --name=commons-lang.commons-lang \
                   --resources=commons-lang-2.6.jar
   "
   
   /opt/jboss/keycloak/bin/jboss-cli.sh --command=" \
           module add \
                   --name=org.keycloak.sms \
                   --resources=sms-authenticator-validator-1.0.jar \
                   --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-common,org.keycloak.keycloak-server-spi,org.keycloak.keycloak-server-spi-private,org.jboss.logging,com.google.libphonenumber,javax.ws.rs.api,org.jboss.resteasy.resteasy-jaxrs,commons-lang.commons-lang
   "`
  • Update sms-sender provider config in standalone.xml

    <subsystem xmlns="urn:jboss:domain:keycloak-server:1.1">
         ...
         <spi name="sms-sender">
             <provider name="sms-sender-service" enabled="true">
                 <properties>
                     <property name="sms-auth.sms.gateway" value="ISENDPRO_SMS"/>
                     <property name="sms-auth.sms.gateway.endpoint" value="https://apirest.isendpro.com/cgi-bin"/>
                     <property name="sms-auth.sms.gateway.from" value="MyCompany"/>
                     <property name="sms-auth.sms.clientsecret" value="..."/>
                     <property name="sms-auth.code.ttl" value="600"/>
                     <property name="sms-auth.code.length" value="4"/>
                     <property name="sms-auth.code.alphanumeric" value="true"/>
                     <property name="mobile_verification_enabled" value="true"/>
                 </properties>
             </provider>
         </spi>
     </subsystem> 
    
  • Add three templates to the Keycloak server:

    • $ cp templates/sms-validation.ftl _KEYCLOAK_HOME_/themes/base/login/
    • $ cp templates/sms-validation-error.ftl _KEYCLOAK_HOME_/themes/base/login/
    • $ cp templates/sms-validation-mobile-number.ftl _KEYCLOAK_HOME_/themes/base/login/

Configure your REALM to use the SMS Authentication. First create a new REALM (or select a previously created REALM).

Under Authentication > Flows:

  • Copy 'Browse' flow to 'Browser with SMS' flow
  • Click on 'Actions > Add execution on the 'Browser with SMS Forms' line and add the 'SMS Authentication'
  • Set 'SMS Authentication' to 'REQUIRED' or 'ALTERNATIVE'
  • To configure the SMS Authenticator, click on Actions Config and fill in the attributes.

Under Authentication > Bindings:

  • Select 'Browser with SMS' as the 'Browser Flow' for the REALM.

Under Authentication > Required Actions:

  • Click on Register and select 'SMS Authentication' to add the Required Action to the REALM.
  • Make sure that for the 'SMS Authentication' both the 'Enabled' and 'Default Action' check boxes are checked.
  • Click on Register and select 'Mobile Number' to add the Required Action to the REALM.
  • Make sure that for the 'Update Mobile Number' both the 'Enabled' and 'Default Action' check boxes are checked.
  • To validate mobile_number attribute make sure that for the 'Validate Mobile Number' both the 'Enabled' and 'Default Action' check boxes are checked.

Malys contributions (for Lyra Network)

  • Internationalization support
  • Vault, Java properties, environment variables parameters support
  • Lyrasms gateway support
  • Add mobilephone number verification
  • Add input mobile phone number on authenticator
  • Refactoring
  • Template cleaning
  • Documentation