Login into the Dashboard using Okta - Guide
This is an end-to-end worked example of how you can use Okta and our Tyk Identity Broker (TIB) to log in to your Dashboard. This guide assumes the following:
- You already have authorised access to Tyk’s Dashboard. If you haven’t, get the authorisation key by following this doc.
- For simplicity, you are running TIB locally on port 3010
- You are able to edit TIB’s configuration file.
Okta’s side
-
Create a developer account on the Okta Developer site. You’ll get a domain such as
https://<okta-org>.okta.com/.well-known/openid-configuration -
Login and create a Web Application as follows:
- Under
Application, clickAdd Application - Choose
Web - Change the name of the app
- Tick
Authorization Code - Click
Done
Note: These instruction are for the new Okta’s
Developer Console, for theClassic UIinstructions are slightly different. - Under
-
Add a callback to TIB in your application:
- Under
General, clickEditand update theLogin redirect URIsfield with the endpoint on TIBhttp://localhost:3010/auth/{PROFILE-NAME-IN-TIB}/openid-connect/callback. {PROFILE-NAME-IN-TIB}- this can be any string you choose, as long as you use the same one for the profile in TIB.
- Under
-
Permissions to login via Okta: Under the
Assignmentstab, make sure group assignments is set to everyone (for now, you will change this later!). -
This is how it should look like after step #4

TIB’s Side
-
Set the profile in
profiles.jsonas follows:- Copy from your Okta client the
cliend IDtoProviderConfig.UseProviders[].key - Copy from your Okta client the
Client secrettoProviderConfig.UseProviders[].secret - Add Okta’s discovery url
"https://<okta-org>.okta.com/.well-known/openid-configuration"toProviderConfig.UseProviders[].DiscoverURL
Example of a
profiles.jsonfile: - Copy from your Okta client the
[{
"ActionType": "GenerateOrLoginUserProfile",
"ID": "{PROFILE-NAME-IN-TIB}",
"OrgID": "5a54a74550200d0001975584",
"IdentityHandlerConfig": {
"DashboardCredential": "{DASHBOARD-SECRET}"
},
"ProviderConfig": {
"CallbackBaseURL": "http://{TIB-DOMAIN}:{TIB-PORT}",
"FailureRedirect": "http://{DASHBOARD-DOMAIN}:{DASHBOARD-PORT}/?fail=true",
"UseProviders": [
{
"Key": "{Okta-App-Client-ID}",
"Secret": "{Okta-App-Client-SECRET}",
"Scopes": ["openid", "email"],
"DiscoverURL": "https://<okta-org>.okta.com/.well-known/openid-configuration",
"Name": "openid-connect"
}
]
},
"ProviderName": "SocialProvider",
"ReturnURL": "http://{DASHBOARD-DOMAIN}:{DASHBOARD-PORT}/tap",
"Type": "redirect"
}]
- Start TIB by running the binary (
profiles.jsonis in the same CWD) See Install TIB for detailed instructions on how to install TIB - Test that it works:
From the broswer call
http://localhost:3010/auth/{PROFILE-NAME-IN-TIB}/openid-connect- If it’s working you’ll be redirected to Okta’s web page and will be asked to enter your Okta user name and password.
- If you were successfully authenticated by Okta then you’ll be redirected to the Tyk Dashboard and login into it without going through the login page. Job’s done!
- If you need to update your profile then you can use TIB’s REST API as follows:
curl http://{TIB-DOMAIN}:{TIB-PORT}/api/profiles/{PROFILE-NAME-IN-TIB} -H "Authorization: {MY-SECRET}" -H "Content-type: application/json" -X PUT --data "@./my-new-dashboard-profile.json" | prettyjson
- POST and DELETE calls apply as normal
- You can post a few profiles to TIB.
- See TIB REST API for more details.
The magic - The flow behind the scenes:
- The initial call to the endpoint on TIB was redirected to Okta
- Okta identified the user
- Okta redirected the call back to TIB endpoint (according to the callback you set up on the client earlier in step 3) and from TIB
- TIB, via REST API call to the dashboard, created a nonce and a special session attached to it.
- TIB redirected the call to the dashboard to a special endpoint
/tap( it was defined on the profile underReturnURL) with the nonce that was created. - The Dashboard on the
/tapendpoint finds the session that is attached to thenonce, login the user and redirect to the dashboard first page
Enhancements
Once it’s working you can also add two more enhancements - SSO and MFA
SSO login into the Dashboard via a login page
You will need to:
- set up a web server with a login page and a form for user and password
- Update tyk_analytics.conf to redirect logins to that url
Explicit details are in steps 6-7
Multi-Factor-Authentication (MFA) Support
MFA works out-of-the-box in Tyk since luckily Okta supports it. you would need to add it to the configuration of the account holder. Under Security --> Multifactor --> Factor types you can choose the types you want. For instance I chose Google Authenticator.
-
While trying to login to the Dashboard, Okta enforced the MFA and asked me to use the Google Authenticator:

-
I had to download the Google Authenticator and identify with the generated code

-
I successfully authenticated with Google Authenticator

Common Error
If you get a 400 Bad Request it means the profile name in the login endpoint is not identical to the profile name in the callback that you set up on Okta’s app:
- On Okta’s app -
Login redirect URIs:http://localhost:3010/auth/{PROFILE-NAME-IN-TIB}/openid-connect/callback. - The endpoint to test -
http://localhost:3010/auth/{PROFILE-NAME-IN-TIB}/openid-connect
