This article discusses proxy votes or ideas portal custom domains. You need to be an Ideas Advanced customer to access these integrations. Please contact us if you would like a live demo or would like to try using it in your account.

If your Aha! account was created before October 20, 2020, you may have access to these integrations, but you will need to upgrade to Ideas Advanced for any future enhancements.

Aha! Roadmaps | Portal SSO | JSON Web Token

JSON web token (JWT) is a technique that can be used for single sign-on (SSO) between a custom application and another application. In this case JWT can be used for SSO to an Aha! Roadmaps ideas portal so that users of your web application can login to the portal and submit ideas using their application credentials.

Note: If you have multiple ideas portals and want to use a single JWT identity provider configuration between all of them, you may be interested in the Ideas Advanced plan.

Click any of the following links to skip ahead:

Configuration

To do this, you will need to open your ideas portal settings. Navigate to Settings ⚙️ → Account → Ideas portals or Ideas → Overview. You will need to be an administrator with customizations permissions to configure an ideas portal.

  • From your account settings, click the name of the ideas portal whose settings you wish to edit.

  • From Ideas → Overview, click the Pencil icon by the name of the ideas portal whose settings you wish to edit.

Once your ideas portal settings are open, navigate to Users → SSO.

  1. Click Add new provider.

  2. Choose JSON Web Token as your identity provider Type. Click Save.

  3. The JSON Web Token configuration will display. Fill in the remaining optional fields.

  4. Click Enable SSO to enable the configuration.

Top

Remote login URL

This field is required. It must contain the URL that users should be redirected to in in order to authenticate before redirecting back to Aha! Roadmaps.

Top

Remote logout URL

This field is optional. Use it if you want to send your users to a specific URL after they have logged out of the portal.

Top

Access for Aha! Roadmaps users

Aha! Roadmaps ideas portals prompt the user for their email address to determine if they already have an Aha! Roadmaps login. If the email entered is not registered in Aha! Roadmaps they will be redirected to SSO based upon your configuration. If their email address is registered in Aha! Roadmaps they will be re-directed to login via Aha! Roadmaps to ensure they do not have two separate logins.

This setting is selected by default, and can be disabled by unchecking the box Access for Aha! users in Users → SSO → JSON Web Token.

Note: It is possible to invite an ideas portal user from your ideas portal settings who has not been configured with the identity provider your portal is using. The user will not be able to log in to the ideas portal until they can be authenticated by the identity provider.

When using SSO, email addresses should be managed within the identity provider system. If an email address is modified within Aha! Roadmaps, the email address will be reset to the value in the identity provider system.

Note: Disabling this option on custom CNAME portals will prevent Aha! Roadmaps users from accessing the portal.

Top

The JWT single sign-on process

When a user authenticates using SSO they go through the following process:

  1. The user navigates to your private ideas portal, e.g. https://myaccount.ideas.aha.io, or if you are using a custom domain, your CNAME, e.g. https://ideas.yourcompany.com.

  2. Aha! Roadmaps recognizes that your account is configured to use JWT.

  3. The user's browser is redirected to your application using the Remote login URL that you configured on the JSON Web Token (JWT) configuration screen.

  4. Your application recognizes that it has received a JWT authentication request.

  5. Your application authenticates the user.

  6. Your application builds a JWT response and redirects the user back to your ideas portal using the URL https://myaccount.ideas.aha.io/auth/jwt/callback, including the JWT response.

  7. Aha! Roadmaps validates the JWT response. If this user has never accessed the ideas portal before a new portal user record is created.

  8. The user is granted access to the private ideas portal.

Note: All of the communication between Aha! Roadmaps and your application happens via URL parameters in the user's browser and there is no direct communication between the systems.

It is possible to start the process at step 5 without the user visiting Aha! Roadmaps first.

Top

Building the JWT response

When it receives a JWT authentication request your application must wait for a JWT response. The response should include a HS256-encoded token containing these fields:

  • iat - The integer time the response was created in seconds since the Unix epoch.

  • jti - A randomly created token that uniquely identifies this response.

  • first_name - the first name of the user that was authenticated.

  • last_name - the last name of the user that was authenticated.

  • email - the email address of the user that was authenticated. The email address is used to uniquely identify the user within the Aha! Roadmaps ideas portal.

Here is sample Ruby code to generate a response:

iat = Time.now.utc.to_i
jti = "#{iat}/#{rand(36**64).to_s(36)}"
payload = JWT.encode(
{
iat: iat,
jti: jti,
first_name: "John",
last_name: "Doe",
email: "john.doe@aha.io",
},
secret_key)

Here is a sample URL used for login:

"https://#{subdomain}.ideas.aha.io/auth/jwt/callback?jwt=#{payload}"

which generates a JWT like:

{ "iat": 158258345634, "jti": "1234567890abcdefg", "first_name": "John", "last_name": "Doe", "email": "john.doe@aha.io" }

Top

Redirecting the user to a specific page after login

After a user successfully logs in to your portal, you can direct them to a specific URL.

The request to the SSO page will contain a parameter named return_to. If this parameter is included in the JWT response then the user will be redirected to that page after the login process completes. e.g.

"https://#{subdomain}.ideas.aha.io/auth/jwt/callback?jwt=#{payload}&return_to=/ideas/APP-I-469"

Top

Single sign-out

Single sign-out allows the user to sign out of one application and be automatically signed out of both applications. Single sign-out is optional.

There are two parts of single sign-out:

  1. Sign-out from the idea portal. Enter a Remote logout URL in the JWT configuration. When the user logs out of the idea portal they will be redirected to this URL. Your application should detect the access of this URL and also log the user out of the application.

  2. Sign-out from your application. When the user logs out of your application you should redirect them to the /portal_session/logout URL of the ideas portal. This will log the user out of the ideas portal as well. The user will be redirected back to your application to log in again.

For those who prefer a SAML single sign-on process, Aha! Roadmaps also provides this capability.

Top

Share your SSO configuration between portals (Advanced plan)

If you have added Ideas Advanced functionality to your Aha! Roadmaps account, the process to create and assign an identity provider looks a little different.

  1. Follow the same steps to enable SSO for your ideas portal listed above.

  2. Navigate to Settings ⚙️→ Account → Ideas portals or Ideas → Overview. You will need to be an administrator with customizations permissions to configure an ideas portal.

    1. From your account settings, click the name of the ideas portal you wish to edit.

    2. From Ideas → Overview, click the pencil icon by the name of the ideas portal you wish to edit.

  3. Once you have your portal settings open, navigate to the Users tab, then the SSO section.

  4. Select Add new provider from the Identify Provider dropdown.

    1. Name: Name your identity provider.
      Note: We recommend that you name your provider something easily recognizable to the different portals that might want to use it, like Employees, or Customers.

    2. Type: Choose JWT as your identity provider type.

    3. Click Save and continue in Aha!

    4. Enter the remaining fields following the JWT configuration instructions.

  5. Click Enable SSO to enable your identity provider.

To share your identity provider configuration between multiple ideas portals:

  1. Open each portal's settings.

  2. Once you have your portal settings open, navigate to the Users tab, then the SSO section.

  3. Select the identity provider you just created from the Identity provider dropdown.

  4. Congratulations! You just shared your configuration with another portal.

  5. Repeat these steps for each portal you wish to use the shared Identity provider configuration.

You can manage your identity provider configuration — and the portals that use it — from the Identity providers tab in Settings ⚙️→ Account → Ideas portals.

Top

Troubleshooting

If you run into trouble, we have gathered common SSO configuration issues into one article, along with common resolutions.

The best place to start in most of these situations is the integration log messages for your SSO configuration. Those messages will help diagnose and solve the problem.

Top

If you get stuck, please reach out to our Customer Success team. Our team is made up entirely of product experts and responds fast.

Aha! Roadmaps
    Strategic roadmaps
    Integrations
    Aha! Ideas
    Aha! Develop
    Announcements
    © 2021 Aha! Labs Inc.All rights reserved