Class AuthTool


  • public class AuthTool
    extends java.lang.Object
    Simplicite(R) authentication toolbox
    • Constructor Summary

      Constructors 
      Constructor Description
      AuthTool()  
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static boolean checkTOPT​(java.lang.String secret, java.lang.String code)
      Check TOPT code
      static java.lang.String createJWTToken​(Grant g)
      Create a JWT token
      static java.lang.String createJWTToken​(Grant g, boolean payload)
      Create a JWT token
      static java.lang.String createJWTToken​(java.lang.String subject, java.lang.String secret, long duration)
      Create a JWT token with specified secret and duration
      static java.lang.String createJWTToken​(java.lang.String subject, java.lang.String secret, java.util.Date date, long duration)
      Create a JWT token with specified secret, issued at date and duration
      static java.lang.String createJWTToken​(java.lang.String subject, java.lang.String secret, java.util.Date date, long duration, java.util.Map<java.lang.String,​?> payload)
      Create a JWT token with specified secret, issued at date and duration
      static java.lang.String createJWTToken​(java.lang.String subject, java.util.Map<java.lang.String,​?> payload)
      Create a JWT token with configured secret and duration
      static org.json.JSONObject decodeJWTToken​(java.lang.String token)
      Decode JWT token
      static org.json.JSONObject decodeJWTToken​(java.lang.String token, java.lang.String secret)
      Decode JWT token
      static byte[] generateTOPTQRCode​(java.lang.String label, java.lang.String secret, java.lang.String issuer, int length, int period)
      Generate a TOPT QR code (PNG)
      static java.lang.String generateTOPTSecret​(int length)
      Generate a TOPT secret
      static int getAuthMethodFromType​(java.lang.String type)
      Get auth type code from auth type name
      static org.json.JSONObject getAuthProvider​(int method, java.lang.String name)
      Get specified auth provider definition
      static org.json.JSONObject getAuthProvider​(javax.servlet.http.HttpServletRequest request)
      Get auth provider definition from the HTTP request
      static org.json.JSONArray getAuthProviders()
      Get all auth providers definition
      static org.json.JSONArray getAuthProviders​(int method)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Use getAuthProviders with endpoint
      static org.json.JSONArray getAuthProviders​(int method, java.lang.String endpoint)
      Get auth providers definition for specified auth method
      static java.lang.String getAuthTypeFromMethod​(int method)
      Get auth type name from auth method code
      static boolean getBooleanSetting​(java.lang.String providerName, int providerType, java.lang.String settingName, boolean defaultValue)
      Get boolean setting
      static java.lang.String getEndpoint​(int endpoint)
      Get the endpoint string from a endpoint integer code.
      static org.json.JSONObject getLocalAuthProvider()
      LGet local OAUTH2 provider definition
      static java.lang.String getOAuth2AuthorizeURL​(java.lang.String provider, java.lang.String defaultValue)
      Get OAuth2 authorize endpoint URL
      static java.lang.String getOAuth2BaseURL​(java.lang.String provider)
      Get OAuth2 base URL
      static java.lang.String getOAuth2ClientCredentialsMode​(java.lang.String provider)
      Get OAuth2 client credentials (client ID and client secret) passing mode (defaults to AUTH_CLIENT_CREDENTIALS_MODE_AUTH_HEADER)
      static java.lang.String getOAuth2ClientID​(java.lang.String provider)
      Get OAuth2 client ID
      static java.lang.String getOAuth2ClientSecret​(java.lang.String provider)
      Get OAuth2 client secret
      static java.lang.String getOAuth2DefaultScopes​(java.lang.String provider)
      Get OAuth2 default scopes
      static java.lang.String getOAuth2JWTIssuer​(java.lang.String provider)
      Get OAuth2 JWT issuer
      static java.lang.String getOAuth2JWTSecret​(java.lang.String provider)
      Get OAuth2 JWT secret
      static java.lang.String getOAuth2LogoutURL​(java.lang.String provider, java.lang.String defaultValue)
      Get OAuth2 logout endpoint URL
      static boolean getOAuth2NonSSLURLsAllowed​(java.lang.String provider)
      Check if OAuth2 non SSL URLs are allowed
      static java.lang.String getOAuth2PKCEChallengeMethod​(java.lang.String provider)
      Get OAuth2 PKCE challenge method
      static int getOAuth2PKCECodeVerifierLength​(java.lang.String provider)
      Get OAuth2 PKCE code verifier length
      static org.json.JSONObject getOAuth2ProviderForJWTIssuer​(java.lang.String issuer, java.lang.String endpoint)
      Get auth provider definition for JWT issuer name
      static java.lang.String getOAuth2RedirectURI​(java.lang.String provider, java.lang.String defaultValue)
      Get OAuth2 redirect URI
      static java.lang.String getOAuth2Scopes​(java.lang.String provider)
      Get OAuth2 scopes
      static org.json.JSONObject getOAuth2TokenInfoMappings​(java.lang.String provider)
      Get OAuth2 token info fields mappings
      static java.lang.String getOAuth2TokenInfoURL​(java.lang.String provider, java.lang.String defaultValue)
      Get OAuth2 token info endpoint URL
      static org.json.JSONObject getOAuth2TokenJWTClaimsMappings​(java.lang.String provider)
      Get OAuth2 token JWT claims fields mappings
      static java.lang.String getOAuth2TokenURL​(java.lang.String provider, java.lang.String defaultValue)
      Get OAuth2 token endpoint URL
      static org.json.JSONObject getOAuth2UserInfoMappings​(java.lang.String provider)
      Get OAuth2 user info fields mappings
      static java.lang.String getOAuth2UserInfoURL​(java.lang.String provider, java.lang.String defaultValue)
      Get OAuth2 user info endpoint URL
      static java.lang.String getSetting​(java.lang.String providerName, int providerType, java.lang.String settingName, java.lang.String defaultValue)
      Get string setting
      static java.lang.String getTOTPQRCode​(Grant g)
      Generate TOTP QR code data image URL for specified grant.
      static java.lang.String getTOTPQRCode​(java.lang.String login, org.json.JSONObject settings)
      Generate TOTP QR code data image URL for specified login and sesstings.
      static boolean isOAuth2JWTNonceCheck​(java.lang.String provider)
      Check OAuth2 JWT nonce?
      static boolean isSync​(java.lang.String provider, int providerType)
      Is user and responsibilities synchronization required?
      static org.json.JSONObject refreshToken​(java.lang.String provider, java.lang.String refreshToken)
      Refresh OAuth2 token
      static boolean useCrowd()
      Is at least one CROWD authentication provider configured?
      static boolean useLDAP()
      Is at least one LDAP authentication provider configured?
      static boolean useOAuth2()
      Is at least one OAuth2 authentication provider configured?
      static boolean useSAML()
      Is at least one SAML authentication provider configured?
      static org.json.JSONObject verifyJWTToken​(org.json.JSONObject token, java.lang.String secret)
      Verify JWT token
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • AUTH_DEFAULT_URL

        public static final java.lang.String AUTH_DEFAULT_URL
        Default authentication form action
        See Also:
        Constant Field Values
      • AUTH_METHOD_NONE

        public static final int AUTH_METHOD_NONE
        No authentication method
        See Also:
        Constant Field Values
      • AUTH_METHOD_DEFAULT

        public static final int AUTH_METHOD_DEFAULT
        Default (server managed: JAAS, Relam, ...) authentication method
        See Also:
        Constant Field Values
      • AUTH_METHOD_INTERNAL

        public static final int AUTH_METHOD_INTERNAL
        Internal OAuth2 authentication method
        See Also:
        Constant Field Values
      • AUTH_METHOD_OAUTH2

        public static final int AUTH_METHOD_OAUTH2
        External OAuth2 authentication method
        See Also:
        Constant Field Values
      • AUTH_METHOD_SAML

        public static final int AUTH_METHOD_SAML
        External SAML authentication method
        See Also:
        Constant Field Values
      • AUTH_METHOD_LDAP

        public static final int AUTH_METHOD_LDAP
        LDAP authentication method
        See Also:
        Constant Field Values
      • AUTH_METHOD_CROWD

        public static final int AUTH_METHOD_CROWD
        Crowd authentication method
        See Also:
        Constant Field Values
      • AUTH_METHOD_CUSTOM

        public static final int AUTH_METHOD_CUSTOM
        Custom authentication method
        See Also:
        Constant Field Values
      • AUTH_ENDPOINT_ALL

        public static final java.lang.String AUTH_ENDPOINT_ALL
        Enabled on all endpoints
        See Also:
        Constant Field Values
      • AUTH_ENDPOINT_UI

        public static final java.lang.String AUTH_ENDPOINT_UI
        Enabled on the UI endpoints
        See Also:
        Constant Field Values
      • AUTH_ENDPOINT_API

        public static final java.lang.String AUTH_ENDPOINT_API
        Enabled on the API endpoints
        See Also:
        Constant Field Values
      • AUTH_PROVIDERS_PARAM_NAME

        public static final java.lang.String AUTH_PROVIDERS_PARAM_NAME
        Authentication providers system parameter name
        See Also:
        Constant Field Values
      • AUTH_DEFAULT_ERROR

        public static final java.lang.String AUTH_DEFAULT_ERROR
        Default authentication error message text code
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_DEFAULT

        public static final java.lang.String AUTH_PROVIDER_DEFAULT
        Default (server-managed: JAAS, Relam, ...) authentication provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_INTERNAL

        public static final java.lang.String AUTH_PROVIDER_INTERNAL
        Internal OAuth2 authentication provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_OAUTH2_GOOGLE

        public static final java.lang.String AUTH_PROVIDER_OAUTH2_GOOGLE
        Google external OAuth2 authentication provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_OAUTH2_MICROSOFT

        public static final java.lang.String AUTH_PROVIDER_OAUTH2_MICROSOFT
        Microsoft Live external OAuth2 authentication provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_OAUTH2_LINKEDIN

        public static final java.lang.String AUTH_PROVIDER_OAUTH2_LINKEDIN
        LinkedIn external OAuth2 authentication provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_OAUTH2_FRANCECONNECT

        public static final java.lang.String AUTH_PROVIDER_OAUTH2_FRANCECONNECT
        FranceConnect external OAuth2 authentication provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_OAUTH2_KEYCLOAK

        public static final java.lang.String AUTH_PROVIDER_OAUTH2_KEYCLOAK
        KeyCloack external OAuth2 authentication provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_SAML_GOOGLE

        public static final java.lang.String AUTH_PROVIDER_SAML_GOOGLE
        Google external SAML authentication provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_CROWD

        public static final java.lang.String AUTH_PROVIDER_CROWD
        Generic Crowd provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_LDAP

        public static final java.lang.String AUTH_PROVIDER_LDAP
        Generic LDAP provider name
        See Also:
        Constant Field Values
      • AUTH_PROVIDER_CUSTOM

        public static final java.lang.String AUTH_PROVIDER_CUSTOM
        Generic custom provider name
        See Also:
        Constant Field Values
      • AUTH_MFA_EMAIL

        public static final java.lang.String AUTH_MFA_EMAIL
        Email-based MFA method
        See Also:
        Constant Field Values
      • AUTH_MFA_SMS

        public static final java.lang.String AUTH_MFA_SMS
        SMS-based MFA method
        See Also:
        Constant Field Values
      • AUTH_MFA_TOTP

        public static final java.lang.String AUTH_MFA_TOTP
        TOTP MFA method
        See Also:
        Constant Field Values
      • AUTH_MFA_CUSTOM

        public static final java.lang.String AUTH_MFA_CUSTOM
        Custom MFA method
        See Also:
        Constant Field Values
      • OAUTH2_FRANCECONNECT_URL_FOR_INDVIDUALS

        public static final java.lang.String OAUTH2_FRANCECONNECT_URL_FOR_INDVIDUALS
        FranceConnect URL for individuals
        See Also:
        Constant Field Values
      • OAUTH2_FRANCECONNECT_URL_FOR_COMPANIES

        public static final java.lang.String OAUTH2_FRANCECONNECT_URL_FOR_COMPANIES
        FranceConnect URL for companies
        See Also:
        Constant Field Values
      • OAUTH2_LINKEDIN_URL

        public static final java.lang.String OAUTH2_LINKEDIN_URL
        LinkedIn URL
        See Also:
        Constant Field Values
      • AUTH_CLIENT_CREDENTIALS_MODE_AUTH_HEADER

        public static final java.lang.String AUTH_CLIENT_CREDENTIALS_MODE_AUTH_HEADER
        Client credentials HTTP header (Authorization) mode
        See Also:
        Constant Field Values
      • AUTH_CLIENT_CREDENTIALS_MODE_PARAMS

        public static final java.lang.String AUTH_CLIENT_CREDENTIALS_MODE_PARAMS
        Client credentials HTTP parameters mode
        See Also:
        Constant Field Values
    • Constructor Detail

      • AuthTool

        public AuthTool()
    • Method Detail

      • getAuthTypeFromMethod

        public static java.lang.String getAuthTypeFromMethod​(int method)
        Get auth type name from auth method code
        Parameters:
        method - Auth method code
        Returns:
        Auth type name
      • getEndpoint

        public static java.lang.String getEndpoint​(int endpoint)
        Get the endpoint string from a endpoint integer code.
        Parameters:
        endpoint - Endpoint code (one of the Globals.ENDPOINT_* constants)
        Returns:
        The relevant ENDPOINT_* constants or null
      • getAuthMethodFromType

        public static int getAuthMethodFromType​(java.lang.String type)
        Get auth type code from auth type name
        Parameters:
        type - Auth type name
        Returns:
        Auth type code
      • getAuthProviders

        @Deprecated(forRemoval=true,
                    since="5")
        public static final org.json.JSONArray getAuthProviders​(int method)
        Deprecated, for removal: This API element is subject to removal in a future version.
        Use getAuthProviders with endpoint
      • getAuthProviders

        public static final org.json.JSONArray getAuthProviders​(int method,
                                                                java.lang.String endpoint)
        Get auth providers definition for specified auth method
        Parameters:
        method - Auth method (one of Globals.AUTH_METHOD_*)
        endpoint - Enabled endpoint(s) (one of AUTH_ENDPOINT_*)
        Returns:
        JSON array
      • getAuthProviders

        public static final org.json.JSONArray getAuthProviders()
        Get all auth providers definition
        Returns:
        JSON array
      • getLocalAuthProvider

        public static final org.json.JSONObject getLocalAuthProvider()
        LGet local OAUTH2 provider definition
        Returns:
        JSON object
      • getAuthProvider

        public static final org.json.JSONObject getAuthProvider​(int method,
                                                                java.lang.String name)
        Get specified auth provider definition
        Parameters:
        method - Auth method (one of AuthTool.AUTH_METHOD_* constants)
        name - Provider name
        Returns:
        JSON object
      • getAuthProvider

        public static final org.json.JSONObject getAuthProvider​(javax.servlet.http.HttpServletRequest request)
        Get auth provider definition from the HTTP request
        Parameters:
        request - HTTP request
        Returns:
        Auth provider definition or null if no provider name in the HTTP request or if no provider is found for the provider name
      • useOAuth2

        public static final boolean useOAuth2()
        Is at least one OAuth2 authentication provider configured?
        Returns:
        True if at least one OAuth2 authentication provider is configured
      • useSAML

        public static final boolean useSAML()
        Is at least one SAML authentication provider configured?
        Returns:
        True if at least one SAML authentication provider is configured
      • useCrowd

        public static final boolean useCrowd()
        Is at least one CROWD authentication provider configured?
        Returns:
        True if at least one CROWD authentication provider is configured
      • useLDAP

        public static final boolean useLDAP()
        Is at least one LDAP authentication provider configured?
        Returns:
        True if at least one LDAP authentication provider is configured
      • getSetting

        public static java.lang.String getSetting​(java.lang.String providerName,
                                                  int providerType,
                                                  java.lang.String settingName,
                                                  java.lang.String defaultValue)
        Get string setting
        Parameters:
        providerName - Provider name
        providerType - Provider type (one of Globals.AUTH_METHOD_*)
        settingName - Setting name
        defaultValue - Default value
        Returns:
        Setting value or default if not found
      • getBooleanSetting

        public static boolean getBooleanSetting​(java.lang.String providerName,
                                                int providerType,
                                                java.lang.String settingName,
                                                boolean defaultValue)
        Get boolean setting
        Parameters:
        providerName - Provider name
        providerType - Provider type (one of Globals.AUTH_METHOD_*)
        settingName - Setting name
        defaultValue - Default value
        Returns:
        Setting boolean value or default if not found
      • isSync

        public static boolean isSync​(java.lang.String provider,
                                     int providerType)
        Is user and responsibilities synchronization required?
        Parameters:
        provider - Provider name
        providerType - Provider type (one of Globals.AUTH_METHOD_*)
        Returns:
        True if synchronization is required
      • getOAuth2NonSSLURLsAllowed

        public static boolean getOAuth2NonSSLURLsAllowed​(java.lang.String provider)
        Check if OAuth2 non SSL URLs are allowed
        Parameters:
        provider - Provider name
        Returns:
        True if non SSL URLs are allowed (defaults to false)
      • getOAuth2BaseURL

        public static java.lang.String getOAuth2BaseURL​(java.lang.String provider)
        Get OAuth2 base URL
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 base URL
      • getOAuth2AuthorizeURL

        public static java.lang.String getOAuth2AuthorizeURL​(java.lang.String provider,
                                                             java.lang.String defaultValue)
        Get OAuth2 authorize endpoint URL
        Parameters:
        provider - Provider name
        defaultValue - Default value
        Returns:
        OAuth2 authorize endpoint URL
      • getOAuth2TokenURL

        public static java.lang.String getOAuth2TokenURL​(java.lang.String provider,
                                                         java.lang.String defaultValue)
        Get OAuth2 token endpoint URL
        Parameters:
        provider - Provider name
        defaultValue - Default value
        Returns:
        OAuth2 token endpoint URL
      • getOAuth2UserInfoURL

        public static java.lang.String getOAuth2UserInfoURL​(java.lang.String provider,
                                                            java.lang.String defaultValue)
        Get OAuth2 user info endpoint URL
        Parameters:
        provider - Provider name
        defaultValue - Default value
        Returns:
        OAuth2 user info endpoint URL
      • getOAuth2UserInfoMappings

        public static org.json.JSONObject getOAuth2UserInfoMappings​(java.lang.String provider)
        Get OAuth2 user info fields mappings
        Parameters:
        provider - Provider
        Returns:
        User info as JSON object
      • getOAuth2TokenInfoURL

        public static java.lang.String getOAuth2TokenInfoURL​(java.lang.String provider,
                                                             java.lang.String defaultValue)
        Get OAuth2 token info endpoint URL
        Parameters:
        provider - Provider name
        defaultValue - Default value
        Returns:
        OAuth2 token info URL
      • getOAuth2TokenInfoMappings

        public static org.json.JSONObject getOAuth2TokenInfoMappings​(java.lang.String provider)
        Get OAuth2 token info fields mappings
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 token info fields mapping as JSON object
      • getOAuth2TokenJWTClaimsMappings

        public static org.json.JSONObject getOAuth2TokenJWTClaimsMappings​(java.lang.String provider)
        Get OAuth2 token JWT claims fields mappings
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 token JWT claims fields mapping as JSON object
      • getOAuth2LogoutURL

        public static java.lang.String getOAuth2LogoutURL​(java.lang.String provider,
                                                          java.lang.String defaultValue)
        Get OAuth2 logout endpoint URL
        Parameters:
        provider - Provider name
        defaultValue - Default value
        Returns:
        Logout URL
      • getOAuth2RedirectURI

        public static java.lang.String getOAuth2RedirectURI​(java.lang.String provider,
                                                            java.lang.String defaultValue)
        Get OAuth2 redirect URI
        Parameters:
        provider - Provider name
        defaultValue - Default value
        Returns:
        Redirect URI
      • getOAuth2ClientID

        public static java.lang.String getOAuth2ClientID​(java.lang.String provider)
        Get OAuth2 client ID
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 client ID
      • getOAuth2ClientSecret

        public static java.lang.String getOAuth2ClientSecret​(java.lang.String provider)
        Get OAuth2 client secret
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 client secret
      • getOAuth2PKCEChallengeMethod

        public static java.lang.String getOAuth2PKCEChallengeMethod​(java.lang.String provider)
        Get OAuth2 PKCE challenge method
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 PKCE challenge method (e.g. S256), empty means no PKCE
      • getOAuth2PKCECodeVerifierLength

        public static int getOAuth2PKCECodeVerifierLength​(java.lang.String provider)
        Get OAuth2 PKCE code verifier length
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 PKCE code verfier length (default is 64)
      • getOAuth2ClientCredentialsMode

        public static java.lang.String getOAuth2ClientCredentialsMode​(java.lang.String provider)
        Get OAuth2 client credentials (client ID and client secret) passing mode (defaults to AUTH_CLIENT_CREDENTIALS_MODE_AUTH_HEADER)
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 client credentials mode (one of AUTH_CLIENT_CREDENTIALS_MODE_*)
      • getOAuth2DefaultScopes

        public static java.lang.String getOAuth2DefaultScopes​(java.lang.String provider)
        Get OAuth2 default scopes
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 default scopes
      • getOAuth2Scopes

        public static java.lang.String getOAuth2Scopes​(java.lang.String provider)
        Get OAuth2 scopes
        Parameters:
        provider - Provider name
        Returns:
        OAuth2 scopes
      • getOAuth2ProviderForJWTIssuer

        public static org.json.JSONObject getOAuth2ProviderForJWTIssuer​(java.lang.String issuer,
                                                                        java.lang.String endpoint)
        Get auth provider definition for JWT issuer name
        Parameters:
        issuer - JWT issuer name
        endpoint - Enabled endpoint(s) (one of AUTH_ENDPOINT_*)
        Returns:
        Provider or null if not found
      • getOAuth2JWTIssuer

        public static java.lang.String getOAuth2JWTIssuer​(java.lang.String provider)
        Get OAuth2 JWT issuer
        Parameters:
        provider - Provider name
        Returns:
        OAUth2 JWT issuer
      • getOAuth2JWTSecret

        public static java.lang.String getOAuth2JWTSecret​(java.lang.String provider)
        Get OAuth2 JWT secret
        Parameters:
        provider - Provider name
        Returns:
        OAUth2 JWT secret
      • isOAuth2JWTNonceCheck

        public static boolean isOAuth2JWTNonceCheck​(java.lang.String provider)
        Check OAuth2 JWT nonce?
        Parameters:
        provider - Provider name
        Returns:
        True if nonce check is required
      • verifyJWTToken

        public static org.json.JSONObject verifyJWTToken​(org.json.JSONObject token,
                                                         java.lang.String secret)
                                                  throws com.auth0.jwt.exceptions.JWTVerificationException
        Verify JWT token
        Parameters:
        token - Decoded JWT token
        Returns:
        Verified decoded JWT token
        Throws:
        com.auth0.jwt.exceptions.JWTVerificationException
      • decodeJWTToken

        public static org.json.JSONObject decodeJWTToken​(java.lang.String token)
                                                  throws ParamsException
        Decode JWT token
        Parameters:
        token - JWT token
        Returns:
        Decoded JWT token as JSON object
        Throws:
        ParamsException
      • decodeJWTToken

        public static org.json.JSONObject decodeJWTToken​(java.lang.String token,
                                                         java.lang.String secret)
                                                  throws ParamsException
        Decode JWT token
        Parameters:
        token - JWT token
        secret - Optional secret to verify
        Returns:
        Decoded JWT token as JSON object
        Throws:
        ParamsException
      • createJWTToken

        public static java.lang.String createJWTToken​(Grant g)
        Create a JWT token
        Parameters:
        g - Grant
        Returns:
        JWT token
      • createJWTToken

        public static java.lang.String createJWTToken​(Grant g,
                                                      boolean payload)
        Create a JWT token
        Parameters:
        g - Grant
        payload - Add payload (name, email, locale, timezone)
        Returns:
        JWT token
      • createJWTToken

        public static java.lang.String createJWTToken​(java.lang.String subject,
                                                      java.util.Map<java.lang.String,​?> payload)
                                               throws java.lang.IllegalArgumentException
        Create a JWT token with configured secret and duration
        Parameters:
        subject - Subject
        payload - Payload
        Returns:
        JWT token
        Throws:
        java.lang.IllegalArgumentException
      • createJWTToken

        public static java.lang.String createJWTToken​(java.lang.String subject,
                                                      java.lang.String secret,
                                                      long duration)
                                               throws java.lang.IllegalArgumentException
        Create a JWT token with specified secret and duration
        Parameters:
        subject - Subject
        secret - Secret
        duration - Duration in seconds
        Returns:
        JWT token
        Throws:
        java.lang.IllegalArgumentException
      • createJWTToken

        public static java.lang.String createJWTToken​(java.lang.String subject,
                                                      java.lang.String secret,
                                                      java.util.Date date,
                                                      long duration)
                                               throws java.lang.IllegalArgumentException
        Create a JWT token with specified secret, issued at date and duration
        Parameters:
        subject - Subject
        secret - Secret
        date - Issued at date
        duration - Duration in seconds
        Returns:
        JWT token
        Throws:
        java.lang.IllegalArgumentException
      • createJWTToken

        public static java.lang.String createJWTToken​(java.lang.String subject,
                                                      java.lang.String secret,
                                                      java.util.Date date,
                                                      long duration,
                                                      java.util.Map<java.lang.String,​?> payload)
                                               throws java.lang.IllegalArgumentException
        Create a JWT token with specified secret, issued at date and duration
        Parameters:
        subject - Subject
        secret - Secret
        date - Issued at date
        duration - Duration in seconds
        payload - Payload
        Returns:
        JWT token
        Throws:
        java.lang.IllegalArgumentException
      • refreshToken

        public static org.json.JSONObject refreshToken​(java.lang.String provider,
                                                       java.lang.String refreshToken)
                                                throws AuthenticationException
        Refresh OAuth2 token
        Parameters:
        provider - Provider
        refreshToken - Refresh token
        Returns:
        JSON object with refreshed tokens
        Throws:
        AuthenticationException
      • generateTOPTSecret

        public static java.lang.String generateTOPTSecret​(int length)
        Generate a TOPT secret
        Parameters:
        length - Secret length (e.g. 32 or 64)
        Returns:
        TOPT secret
      • generateTOPTQRCode

        public static byte[] generateTOPTQRCode​(java.lang.String label,
                                                java.lang.String secret,
                                                java.lang.String issuer,
                                                int length,
                                                int period)
        Generate a TOPT QR code (PNG)
        Parameters:
        label - Label
        secret - Secret
        issuer - Issuer
        length - TOPT code length (e.g. 6)
        period - Refresh period in seconds (e.g. 30)
        Returns:
        QR code image (PNG) or null
      • checkTOPT

        public static boolean checkTOPT​(java.lang.String secret,
                                        java.lang.String code)
        Check TOPT code
        Parameters:
        secret - Secret
        code - TOPT code
        Returns:
        True if TOPT code is valid
      • getTOTPQRCode

        public static java.lang.String getTOTPQRCode​(Grant g)
        Generate TOTP QR code data image URL for specified grant.
        Parameters:
        g - Grant
        Returns:
        Image data URL
      • getTOTPQRCode

        public static java.lang.String getTOTPQRCode​(java.lang.String login,
                                                     org.json.JSONObject settings)
        Generate TOTP QR code data image URL for specified login and sesstings.
        Parameters:
        login - Login
        settings - MFA settings
        Returns:
        Image data URL (or null if login or settings are invalid)