{"componentChunkName":"component---src-templates-simple-markdown-js","path":"/openapi/oag/guides/overview/","matchPath":"","result":{"data":{"markdownRemark":{"html":"<h1 style=\"position:relative;\"><a href=\"#okta-access-gateway-api\" aria-label=\"okta access gateway api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"okta-access-gateway-api\"></div>Okta Access Gateway API</h1>\n<p>The Okta Access Gateway API enables you to configure your Access Gateway configuration through API requests. For information about using Access Gateway through the Admin Console, see the Access Gateway <a href=\"https://help.okta.com/okta_help.htm?type=oag&#x26;id=ext_oag_main\">documentation</a>.</p>\n<p>Access Gateway is a reverse proxy-based virtual appliance that protects on-premises applications that rely on HTTP headers, Kerberos tokens, and other legacy methods. It offers URL-based authentication and protects access to on-premises apps that don't support federation with user authentication and single sign-on capabilities of Okta. Since Access Gateway is behind the firewall, it lets external users access on-premises web-based apps without the need for traditional VPNs. When it's deployed, all browser traffic flows first to Access Gateway and then to the back-end protected app. This allows Access Gateway to monitor every request that a user accesses, perform authorization, and add the appropriate headers and tokens to the request.</p>\n<blockquote>\n<p><strong>Note:</strong> The Access Gateway API is available on version <code class=\"language-text\">2025.10.0</code> and later.</p>\n</blockquote>\n<h2 style=\"position:relative;\"><a href=\"#authentication\" aria-label=\"authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"authentication\"></div>Authentication</h2>\n<p>To use Access Gateway APIs you must first enable the API on Access Gateway which generates a client ID and the private and public key pair. See <a href=\"https://help.okta.com/okta_help.htm?type=oag&#x26;id=api-enable-disable\">Enable the Access Gateway API</a>.</p>\n<p>Using the private key retrieved from Access Gateway, sign a JSON Web Token (JWT) with the following header and payload:</p>\n<blockquote>\n<p><strong>Note:</strong> For information about creating and signing a JWT, see <a href=\"https://developer.okta.com/docs/guides/build-self-signed-jwt/java/main/\">Build a JWT for Client Authentication</a> and <a href=\"https://support.okta.com/help/s/article/how-to-generate-jwt-for-okta-access-gateway-apis\">How to generate a JWT for Okta Access Gateway APIs</a>.</p>\n</blockquote>\n<p>Header:</p>\n<div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"76095623108282300000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`{\n  &quot;alg&quot;: &quot;RS256&quot;,\n  &quot;typ&quot;: &quot;JWT&quot;\n}`, `76095623108282300000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-76095623108282300000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"alg\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"RS256\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"typ\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"JWT\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n      </div>\n<p>Payload:</p>\n<div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"14712480451180476000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`{\n  &quot;iss&quot;: &quot;<client_id>&quot;,\n  &quot;sub&quot;: &quot;<client_id>&quot;,\n  &quot;aud&quot;: &quot;https://<oag-hostname>&quot;,\n  &quot;exp&quot;: &quot;<5 minutes into the future>&quot;,\n  &quot;iat&quot;: &quot;<Current timestamp>&quot;,\n  &quot;scope&quot;: &quot;<Scopes requested with the access token, which controls access to Access Gateway resources>&quot;\n}`, `14712480451180476000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-14712480451180476000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"iss\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;client_id>\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"sub\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;client_id>\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"aud\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://&lt;oag-hostname>\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"exp\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;5 minutes into the future>\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"iat\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;Current timestamp>\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"scope\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"&lt;Scopes requested with the access token, which controls access to Access Gateway resources>\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n      </div>\n<p>See the following table for descriptions of the claims in the JWT payload:</p>\n<table>\n<thead>\n<tr>\n<th>Claim</th>\n<th>Description</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">iss</code></td>\n<td>Required. The issuer of the token. This value must be the same as the <code class=\"language-text\">client_id</code> of the application that you're accessing.</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sub</code></td>\n<td>Required. The subject of the token. This value must be the same as the <code class=\"language-text\">client_id</code> of the application that you're accessing.</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">aud</code></td>\n<td>Required. The full URL of the resource that you're trying to access using the JWT to authenticate. For example: <code class=\"language-text\">https://&lt;oag-hostname></code>.</td>\n<td>String</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">exp</code></td>\n<td>Required. The token expiration time in seconds since January 1, 1970 UTC (UNIX timestamp), for example, <code class=\"language-text\">1555594819</code>. This claim fails the request if the expiration time is more than one hour in the future or if the token is already expired.</td>\n<td>Integer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">iat</code></td>\n<td>Optional. When the token was issued in seconds since January 1, 1970 UTC (UNIX timestamp), for example, <code class=\"language-text\">1555591219</code>. If specified, it must be a time before the request is received.</td>\n<td>Integer</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">scope</code></td>\n<td>Required. The scopes requested with the <code class=\"language-text\">AUTHN_TOKEN</code>, which control access to Access Gateway resources.</td>\n<td>String</td>\n</tr>\n</tbody>\n</table>\n<p>The signed JWT is used as an <code class=\"language-text\">AUTHN_TOKEN</code> to retrieve the <code class=\"language-text\">ACCESS_TOKEN</code>. Send a request to the <code class=\"language-text\">/api/v2/oauth/token</code> endpoint\nwith the request payload containing the following parameters as URL-encoded form data:</p>\n<div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"59770852252564180000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`'grant_type': 'client_credentials'\n'client_assertion_type': 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'\n'client_assertion': '<signed_jwt>'\n'scope': '<Scopes requested with the access token, which controls access to Access Gateway resources>'`, `59770852252564180000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-59770852252564180000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">'grant_type': 'client_credentials'\n'client_assertion_type': 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'\n'client_assertion': '&lt;signed_jwt>'\n'scope': '&lt;Scopes requested with the access token, which controls access to Access Gateway resources>'</code></pre></div>\n      </div>\n<p>The <code class=\"language-text\">ACCESS_TOKEN</code> is returned in the response.</p>\n<p>All calls to the Okta Access Gateway API need to have an HTTP <code class=\"language-text\">Authorization</code> header with a value of\n<code class=\"language-text\">{ACCESS_TOKEN}</code>.</p>\n<p>For more information about the request for an <code class=\"language-text\">ACCESS_TOKEN</code>, see the <a href=\"https://developer.okta.com/docs/api/openapi/oag/oag/tag/AccessTokens/\">Access Tokens API</a>.</p>\n<blockquote>\n<p><strong>Note:</strong> Access tokens may expire at any time. Any code that uses access tokens must be prepared to handle HTTP 401 Unauthorized errors by creating a new <code class=\"language-text\">AUTHN_TOKEN</code> and requesting an <code class=\"language-text\">ACCESS_TOKEN</code>.</p>\n</blockquote>\n<h2 style=\"position:relative;\"><a href=\"#scopes\" aria-label=\"scopes permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"scopes\"></div>Scopes</h2>\n<p>Use the following scopes in your <code class=\"language-text\">AUTHN_TOKEN</code> to control access to Access Gateway resources:</p>\n<table>\n<thead>\n<tr>\n<th>Scope</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">okta.oag.app.manage</code></td>\n<td>Allows the app to create and manage apps in your Access Gateway.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">okta.oag.app.read</code></td>\n<td>Allows the app to read app details in your Access Gateway.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">okta.oag.cert.read</code></td>\n<td>Allows the app to read certificate details.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">okta.oag.idp.manage</code></td>\n<td>Allows the app to create and manage identity providers.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">okta.oag.idp.read</code></td>\n<td>Allows the app to read identity providers.</td>\n</tr>\n</tbody>\n</table>","headings":[{"value":"Okta Access Gateway API","depth":1},{"value":"Authentication","depth":2},{"value":"Scopes","depth":2}]},"contentItem":{"data":{"lastModified":"2025-11-03T21:49:20.000Z","enableToc":null,"disableLastModified":null,"tocMaxDepth":null,"requestLogin":false}},"siteConfig":{"enableToc":false,"disableLastModified":true,"tocMaxDepth":4}},"pageContext":{"matchPath":"","id":"55be494c-0540-549a-9d7d-863ff52e80d4__redocly content/openapi/oag/guides/overview/","seo":{"title":"Okta Access Gateway API","description":null,"image":"","keywords":null,"jsonLd":null,"lang":null,"siteUrl":null},"pageId":"openapi/oag/guides/overview.md","pageBaseUrl":"/openapi/oag/guides/overview","type":"markdown","toc":{"enable":true,"maxDepth":4,"headings":[{"depth":1,"value":"Okta Access Gateway API","id":"okta-access-gateway-api"},{"depth":2,"value":"Authentication","id":"authentication"},{"depth":2,"value":"Scopes","id":"scopes"}]},"data":{"title":""},"catalogInfo":null,"link":"/openapi/oag/guides/overview/","sidebarName":"reference","isLanding":false,"showPrevButton":null,"showNextButton":null,"apiVersions":null,"apiVersionId":null,"isDefaultApiVersion":null}},"staticQueryHashes":["1123603147","1302185487","1344209882","1398840060","1520077861","1975142765","2667623876","2950305614","3240152602","3743992808","561138138"]}