KB Article #183140
Using the OAuth 2.0 Authentication Plugin with the Okta provider
Summary
This article provides information how to configure an Authorization Code flow in SecureTransport with OKTA as Identity Provider for user and administrator authentication.
Resolution
Configure OKTA
Login to the OKTA server and create a New Application (Native).
Provide a name for the application and select Resource Owner Password.
Select assignments and then Save.
Edit the Client Credentials page and select Client secret. Copy the client secret and store it for later use.
Put a Redirect URI. Type the address of your ST Server (or Edge, or Load Balancer) in the field; this will be the URL where the users/administrators will be redirected to after successful authentication.
Go to Directory → People and create a user. Provide a name and an email address.
Activate the user and assign it to the Application.
Configure SecureTransport
Install the OAuth Authentication plugin for SecureTransport as described in KB 180803.
Go to the Admin UI → Server Configuration page and set the HTTP daemon redirect, setting the following parameters:
Option | Value |
Http.AllowedAuthenticationParameters | code
|
Http.AllowedAuthenticationParametersMaxSize | 32768
|
Http.FdxAuthReply | PREAUTH
|
Http.RedirectWhiteList | (.*)
|
Http.Security.SameSite | Lax
|
If administrators authentication will be used with OKTA, set the following parameters:
Option | Value |
Admin.Security.SameSite | Lax
|
LoginSettings.Admin.PREAUTH | true
|
Configure the OAuth Authentication plugin under the Admin UI → Server Configuration, setting the below parameters as shown. Keep in mind that all option names are prefixed with Plugins.Authentication.oauth-authentication-plugin..
Option | Value |
authorizationCodeParameter | code
|
authorizationHeader | AUTHORIZATION
|
authorizationUrl | https://ADDRESS_OF_OKTA_SERVER/oauth2/default/v1/authorize
|
cipherSuites | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_EMPTY_RENEGOTIATION_INFO_SCSV
|
clientId | <The clientID from the Application in OKTA>
|
clientSecret | <The secret created and copied from the Application in OKTA>
|
connectTimeout | 10000
|
introspectionEndpoint | <empty> (you must clean the pre-existing string from this field)
|
keysUrl | https://ADDRESS_OF_OKTA_SERVER/oauth2/default/v1/keys
|
oidcEnabled | true
|
protocols | TLSv1.2, TLSv1.3
|
redirectUri | https://${plugin.localAddress}
|
revokeUrl | https://ADDRESS_OF_OKTA_SERVER/oauth2/default/v1/revoke
|
scope | openid
|
signingKey | <empty> (you must clean the pre-existing string from this field)
|
socketTimeout | 10000
|
tokenUrl | https://ADDRESS_OF_OKTA_SERVER/oauth2/default/v1/token
|
tokenVerificationMode | jwt
|
userIdentityAttribute | sub
|
useSecure | true
|
validateTokenSignature | true
|
verifyCertificate | true
|
Create a user in ST, as described in KB 180803 and then test the login to ST with it. In this article the oidcEnabled option is enabled, the ID token will be used to define the user identity. The ST account username must match the value of the id token attribute chosen as userIdentityAttribute - in this example the attribute is sub, which would have value looking like 00uc2k1jucUxSnVAg123