Java
On This Page
Java applications typically build into a WAR or a JAR for production.
If you deploy your application as a WAR, it's possible you have a context path. If you do, make sure that you add this to your Login redirect URI and your Logout redirect URI for your Okta app.
JAR-based Java apps usually don't have a context, and if you start them locally, they are available at http://localhost:8080
.
Heroku
The easiest way to deploy your Java app to production with Okta is to use Heroku. We provide an Okta Heroku Add-on that auto-provisions an Okta org for you and adds the appropriate applications to it.
To begin, install the Heroku CLI and run heroku login
.
You can deploy your Java application to Heroku in five steps:
Run
heroku create
.Add the Git remote that's created as a remote for your project.
git remote add heroku <heroku-repo>
Run
heroku addons:create okta
.Create a
Procfile
that sets thePORT
and your Okta configuration.web: java -Dserver.port=$PORT -Dokta.oauth2.client-id=${OKTA_OAUTH2_CLIENT_ID_WEB} -Dokta.oauth2.client-secret=${OKTA_OAUTH2_CLIENT_SECRET_WEB} -jar target/*.jar
Commit your changes and run
git push heroku master
.
If your branch isn't named master
, run:
git push --set-upstream heroku <branch-name>
Tip: If you want to use a different version of Java, create a system.properties
and add java.runtime.version=11
(or another version) to it.
You won't be able to sign in to your application until you add your Heroku app's URLs to your Login redirect URIs and Logout redirect URIs on Okta.
For more information, see Deploy a Secure Spring Boot App to Heroku.
Forcing HTTPS
You can enforce the use of HTTPS when your app is running on Heroku by adding the following configuration to your security configuration.
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requiresChannel()
.requestMatchers(r -> r.getHeader("X-Forwarded-Proto") != null)
.requiresSecure();
}
}
Docker
You can package your Java application with Docker, too. See Angular + Docker with a Big Hug from Spring Boot for a blog post that details how. Specifically, see the Dockerize Angular + Spring Boot with Jib section.