Generic selectors
Exact matches only
Search in title
Search in content

Jira Installation and first steps

Two-Factor Authentication with SecSign ID Plugin

Find out why our Two-Factor Authentication is the best, some key-facts for developers and why you should upgrade to SecSign for your business.

Learn more about the options of on-premise use and your own customized ID App in your corporate design.

Download the plugin as cloud version for a free and convenient protection.

JIRA is a web application for project management, bug tracking, respectively issue tracking and troubleshooting and was developed and published by the company Altassian.

JIRA is based on Java servlets and uses common databank systems (DBMS). As web application JIRA runs on server side and uses, for example, Apache Tomcat as Java servlet platform. In this case users access the system via the browser. JIRA is used most frequently for software development, respectively for the project management of it. Primarily, the system gets so-called tickets (issues). These tickets represent the significant information for the project management.

Effectively protect your company with SecSign ID Two-Factor Authentication for your app



Table of contents

    SecSign ID is a plugin for real two-factor authentication (2FA) for Jira. 2FA adds another layer of security to your installation by using a second token. In this case the physical token is your smartphone.

    If you seek for more information about about two-factor authentication have a look at the Jira Marketplace or our Github site.

    Questions? Feel free to get in touch with us if you need help setting up your SecSign ID plugin or to request a plugin for a not yet supported environment.

    1. Installation

    For Altassian´s installation instructions for JIRA please see JIRA Installation and Upgrade Guide.


    • Java: On server side Java is required in a runtime environment which is up to date (java runtime environment: JRE) or in a valid Java development kit (JDK). 32-bit and 64-bit JRE-versions for Windows and Linux are supported. The run time environment which was adapted to MacOSX by Apple is not officially supported by JIRA.
    • Application server: Apart from a web server, an application server is required in order to process the Java classes, respectively Java servlets. A familiar application server in this context is Apache Tomcat. JIRA is delivered with a build-in Apache Tomcat application server.

  1. Database: JIRA requires a relational database system for operation. Common and supported database systems are, for example, PostgreSQL, MySQL, Oracle as well as Microsoft SQL Server 2005, 2008, and 2012. Please see Connecting JIRA to a database. For easy evaluation JIRA is delivered with HyperSQL DataBase, respectively HSQLDB. Similar to Apache Derby, HSQLDB is a relational database system written in Java. Apart from that HSQLDB can – like Derby – run as standalone database or be integrated into Java applications. Like Apache Derby HSQLDB as well as the subsequent H2 database is a so-called lightweight database.
  2. Hardware: For general JIRA requirements for hardware as well as for specific requirements please see JIRA Requirements.
  3. 1.1 Installation of Jira on Linux (Mac OSX)

    The description of the installation of JIRA uses Linux as example. Please see Installing JIRA on Windows for installation instructions concerning Windows systems and here for installation on Solaris.

    1Java must be installed and the environment variable $JAVA_HOME must be set. Using the command ‚print_env‘, respectively ‘set‘ all environment variables for a user can be issued. Please use the following commands to define the environment variable $JAVA_HOME: find /usr/lib /usr/bin/ | grep -Ei “java” Please add the following lines in the file /etc/profile: export JAVA_HOME=/usr/lib/path-that-was-found-for-java export PATH=$JAVA_HOME/bin:$PATH Depending on the used shell the lines can also be entered into the user´s .bashrc under which JIRA is supposed to run later on.

    2Unpacking of the archive: tar -xvzf atlassian-jira-6.4.4.tar.gz

    3JIRA home must be defined. The JIRA instance must know in which directory it can be found so that JIRA can work properly. For this JIRA home is definite for each JIRA installation. In the file ‘‘ the value ‚jira.home’ must be set. After unpacking the file can be found in the directory ‘./atlassian-jira/WEB-INF/classes/’ jira.home=/home/jira/ Please keep in mind that the value of the home directory must not be a parent directory of the servlet directory: Configured jira.home ‘…/jira’ must not be a parent directory of the webapp servlet path ‘…/jira/atlassian-jira‘ Besides, the environment variable $JIRA_HOME can also be defined for the separate users if plugins and add-ons are supposed to be developed later on using the JIRA installation.
    export JIRA_HOME=/home/jira/

    3.1For the unambiguousness of the JIRA home directory it is advisable to generate a user for each installation, e.g. the user „jira“

    useradd jira
    passwd jira

    Under MacOSX:
    dscl . -create /Users/jira UserShell /bin/bash
    passwd jira

    The home directory of the new user will be defined as JIRA home. Afterwards, please change to the user „jira“

    sh-3.2# su – jira

    Now JIRA has (as user „jira“) complete access rights for the directory JIRA home and (possibly) unlimited rights for the JIRA installation directory. The access rights are necessary so that JIRA can load all templates, plugins/modules, etc. See Troubleshooting.

    jira:~ jira$ cat .bashrc
    export JAVA_HOME
    export JIRA_HOME
    export ATLAS_HOME

    4After the installation of JIRA it can be started via the shell script ‘bin/’ During this process JIRA will start all required components:

    – Apache
    – Apache Tomcat
    Apache Catalina (Servlet-Container by Tomcat)
    – HSQLDB

    For issue tracking you can find the log files, for example, in logs/catalina.out or for Apache Tomcat logs/catalina-YYYY-MM-DD.log, respectively for the web server under logs/access_log.YYYY-MM-DD

    JIRA can also be started in the foreground instead of as demon. For this, JIRA is processed with the rights of the current user. The output is shown on the console and facilitates the troubleshooting. See [#troubleshooting]

    ./ -fg

    Analogical to the start script a script is available for stopping JIRA, if it was not started in the foreground:


    After the start the JIRA server runs on port 8080 (default setting), available in the browser under http://localhost:8080/

    If port 8080 is already used by another application, e.g. a Node.js Webserver, settings for JIRA can be made in the file ‘conf/server.xml’ If JIRA starts without any error, JIRA can now be installed under http://localhost:8080/secure/SetupMode!default.jspa

    2. Jira Implementation

    The installation is carried out via the JIRA setup wizard. JIRA can be basically installed either automatically or manually. The following text describes the manual installation.

    1. Database: For test purposes the integrated database HSQLDB can be used. If you intend to use your own database, you will have to define database users as well as which DBMS will be available and on which server / under which port the database can be found, etc.
    2. Publicity: Do you want to allow public access to JIRA or should only administrators allow defined users to create, add and process?
    3. Selection of the options: Do you intend to use JIRA only for project monitoring or should it also be used for the installation of agile workflows for software development (JIRA Agile)? Should it be possible to use JIRA also as helpdesk (JIRA Service Desk)?
    4. Licensing
    5. Setting up the administrator
    6. Setting up email notifications + Avatar selection

    Afterwards, JIRA will give you a short tour. JIRA is now installed and set up.

    4. Troubleshooting

    • Please keep in mind that the value of the home directory must not be parent directory of the servlet directory: Configured jira.home ‘…/jira’ must not be a parent directory of the webapp servlet path ‘…/jira/atlassian-jira‘

    • JiraLockedError: If the following exception occurs during the invocation of http://localhost:8080/, the file permissions are incorrect. The user for whom JIRA is performed, must possess the permission to read, write and execute for all used directories .

    "JIRA startup failed, JIRA has been locked." []
    2015-05-20 15:28:38,773 http-bio-8080-exec-1 ERROR anonymous 928x1x1 - 0:0:0:0:0:0:0:1%0 /JiraLockedError [jira.template.velocity.VelocityEngineFactory$Default] Exception initialising Velocity: java.lang.RuntimeException: org.apache.velocity.util.ClassConstructionException: Cannot instantiate class for introspector.cache.classes
    java.lang.RuntimeException: org.apache.velocity.util.ClassConstructionException: Cannot instantiate class for introspector.cache.classes
    	at com.atlassian.velocity.htmlsafe.introspection.AnnotationBoxingUberspect.init(
    	at org.apache.velocity.runtime.RuntimeInstance.initializeIntrospection(
    	at org.apache.velocity.runtime.RuntimeInstance.init(
    	at org.apache.velocity.runtime.RuntimeInstance.init(
    	at com.atlassian.jira.template.velocity.VelocityEngineFactory$Default.initialise(
    	at com.atlassian.jira.template.velocity.VelocityEngineFactory$Default.access$000(
    	at com.atlassian.jira.template.velocity.VelocityEngineFactory$Default$1.create(
    	at com.atlassian.jira.template.velocity.VelocityEngineFactory$Default$1.create(
    	at com.atlassian.util.concurrent.LazyReference$
    	at com.atlassian.util.concurrent.LazyReference.getInterruptibly(
    	at com.atlassian.util.concurrent.LazyReference.get(
    	at com.atlassian.jira.template.velocity.VelocityEngineFactory$Default.getEngine(
    	at com.atlassian.jira.startup.JiraStartupChecklistFilter.getVelocityEngine(
    	at com.atlassian.jira.startup.JiraStartupChecklistFilter.doFilter(
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(
    	at com.atlassian.jira.web.filters.MultipartBoundaryCheckFilter.doFilter(
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(
    	at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(
    	at com.atlassian.jira.web.filters.JiraFirstFilter.doFilter(
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(
    	at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(
    	at com.atlassian.gzipfilter.GzipFilter.doFilter(
    	at com.atlassian.jira.web.filters.gzip.JiraGzipFilter.doFilter(
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(
    	at org.apache.catalina.core.StandardWrapperValve.invoke(
    	at org.apache.catalina.core.StandardContextValve.invoke(
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(
    	at org.apache.catalina.core.StandardHostValve.invoke(
    	at org.apache.catalina.valves.ErrorReportValve.invoke(
    	at org.apache.catalina.core.StandardEngineValve.invoke(
    	at org.apache.catalina.valves.AccessLogValve.invoke(
    	at org.apache.catalina.connector.CoyoteAdapter.service(
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
    	at java.util.concurrent.ThreadPoolExecutor$
    	at org.apache.tomcat.util.threads.TaskThread$
    Caused by: org.apache.velocity.util.ClassConstructionException: Cannot instantiate class for introspector.cache.classes
    	at org.apache.velocity.util.introspection.IntrospectorBase.(
    	at org.apache.velocity.util.introspection.Introspector.(
    	at org.apache.velocity.util.introspection.UberspectImpl.init(
    	at com.atlassian.velocity.htmlsafe.introspection.AnnotationBoxingUberspect.init(
    	... 43 more
    Caused by: org.apache.velocity.util.ClassConstructionException: java.lang.reflect.InvocationTargetException
    	at org.apache.velocity.util.ClassUtils.getNewInstance(
    	at org.apache.velocity.util.introspection.IntrospectorBase.(
    	... 46 more
    Caused by: java.lang.reflect.InvocationTargetException
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
    	at java.lang.reflect.Constructor.newInstance(
    	at org.apache.velocity.util.ClassUtils.getNewInstance(
    	... 47 more
    Caused by: java.lang.NullPointerException
    	at com.atlassian.velocity.JiraIntrospectorCache.(
    	... 52 more

    3. Available APIS

    We provide an ever growing list of APIs and plugins to easily integrate the SecSign ID Two-Factor Authentication in any project. An overview is available at Plugin and APIs.
    We do not only offer APIs in different programming languages but also plugins for CMS, Server and VPN environments, oAuth2 and many more. These plugins use our APIs and offer additional functionalities, for example user management, easy and native installation, logging or integration in firewalls or Active Directory.

    The JIRA plugin for example uses the JAVA-API. The PHP-Api and JS-API is used by WordPress, Joomla, Drupal, Typo3 and many more. The is used for the Windows and Cisco VPN and the C-API is used for protecting Unix SSH services. The Objective-C API is used by our AppleTV and iPhone/iPad apps.


    4. See for yourself

    You can experience the SecSign ID two-factor authentication and the two-factor login by simply integrating the plugin into your website or test environment. Or you can try out the login process on our website without having to register first. You already have a SecSign ID or you want one? Login now and use the portal or use our hassle free registration.

    See for yourself how fast and convenient the login process using challenge-response authentication with 2048-bit key pairs is. There is no need for passwords, and no passwords or other confidential information are ever transmitted. It is easy to integrate and simple to use.

    For more information about the patented SafeKey procedure and it's unique security can be found here.

    If you are missing an API for the programming language you are working with, feel free to contact us and we’ll find a solution with you. If you need help with the integration into an existing system or you can’t find the plugin for your content management system you are working with, don’t hesitate to contact our support team.

    Your own ID-Server

    On premise installations of SecSign ID offer the flexibility to connect with your preferred servers, services, and devices. And you can customize the SecSign ID with your own organization’s branding.


    Why upgrade to SecSign?

    On-premise or in the cloud

    Choose between our SecSign ID Cloud or operate your own on-premise Two-Factor Authentication server.

    Easy customization

    Operate your own YourBrand ID app - Two-Factor Authentication customized to your needs.

    Ready-to-use SDK

    Integrate SecSign ID Two-Factor Authentication in existing apps with our ready-to-use SDK.

    Easy user management

    Use the Two-Factor Authentication Server to secure your company Active Directory/LDAP. Your own Identity and Access Management System, for example for mandatory updates and additional security features.

    Cover all logins

    Integration in any login environment: web, local, VPN, remote desktop, mobile logins and many more.

    Plugins for all your needs

    No need for complex integration: we have plugins for almost all environments.

    SecSign 2FA