Skip to content

Commit 054aa70

Browse files
removing all references to JWT
1 parent 176bfad commit 054aa70

File tree

18 files changed

+32
-450
lines changed

18 files changed

+32
-450
lines changed

gatsby-config.js

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -168,24 +168,6 @@ module.exports = {
168168
{
169169
path: "guides/authentication/ServerToServerAuthentication/ims.md",
170170
title: "API Reference"
171-
},
172-
{
173-
pages: [
174-
{
175-
path: "guides/authentication/JWT/jwt-certificate.md",
176-
title: "Create a Public Key Certificate"
177-
},
178-
{
179-
path: "guides/authentication/JWT/scopes.md",
180-
title: "JWT Metascopes"
181-
},
182-
{
183-
path: "guides/authentication/JWT/samples.md",
184-
title: "JWT Sample Code"
185-
}
186-
],
187-
path: "guides/authentication/JWT/index.md",
188-
title: "Service Account (JWT) credential"
189171
}
190172
],
191173
path: "guides/authentication/ServerToServerAuthentication/index.md",

manifest.yaml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,6 @@ pages:
7575
url: /src/pages/guides/authentication/ServerToServerAuthentication/faqs.md
7676
- title: API Reference
7777
url: /src/pages/guides/authentication/ServerToServerAuthentication/ims.md
78-
- title: Service Account (JWT) credential
79-
url: /src/pages/guides/authentication/JWT/index.md
80-
pages:
81-
- title: Create a Public Key Certificate
82-
url: /src/pages/guides/authentication/JWT/jwt-certificate.md
83-
- title: JWT Metascopes
84-
url: /src/pages/guides/authentication/JWT/scopes.md
85-
- title: JWT Sample Code
86-
url: /src/pages/guides/authentication/JWT/samples.md
8778
- title: API Key Authentication
8879
url: /src/pages/guides/authentication/APIKeyAuthentication/index.md
8980
- title: Tools

src/pages/config.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@
4040
- [Migration Guide](guides/authentication/ServerToServerAuthentication/migration.md)
4141
- [Migration FAQs](guides/authentication/ServerToServerAuthentication/faqs.md)
4242
- [API Reference](guides/authentication/ServerToServerAuthentication/ims.md)
43-
- [Service Account (JWT) credential](guides/authentication/JWT/index.md)
44-
- [Create a Public Key Certificate](guides/authentication/JWT/jwt-certificate.md)
45-
- [JWT Metascopes](guides/authentication/JWT/scopes.md)
46-
- [JWT Sample Code](guides/authentication/JWT/samples.md)
4743
- [API Key Authentication](guides/authentication/APIKeyAuthentication/index.md)
4844
- [Tools](guides/authentication/Tools/index.md)
4945
- [OAuth 2.0 Playground](guides/authentication/Tools/o-auth-playground.md)
Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
# Frequently Asked Questions
22

3-
### Where can I find the sample code for Service Account (JWT) authentication?
4-
Code Samples are available for the following languages -
5-
1. [Java](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-java)
6-
2. [DotNet](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-dotnet)
7-
3. [Python](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-python)
8-
4. [NodeJS](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-node)
9-
5. [PHP](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-php)
10-
11-
### How to use the private key for generating a JWT?
12-
Please copy the full content of private key including `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----` to generate a correct JWT token.
3+
<InlineAlert slots="text"/>
4+
5+
As of June 30, 2025, Service Account (JWT) credentials have reached their end of life and are no longer supported. All server-to-server integrations must use the [OAuth Server-to-Server credentials](../authentication/ServerToServerAuthentication/implementation.md). View the [migration guide](../authentication/ServerToServerAuthentication/migration.md) to know more.

src/pages/guides/authentication/JWT/index.md

Lines changed: 1 addition & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -2,119 +2,4 @@
22

33
<InlineAlert slots="text"/>
44

5-
The Service Account (JWT) credentials have been deprecated in favor of the OAuth Server-to-Server credentials. Your applications using the Service Account (JWT) credentials will stop working after Jun 30, 2025. You must migrate to the new credential by **Jun 30, 2025**, to ensure your application continues functioning. [Learn more](../ServerToServerAuthentication/migration.md).
6-
7-
To establish a secure service-to-service Adobe I/O API session, you must create a JSON Web Token (JWT) that encapsulates the identity of your integration, and then exchange it for an access token. Every request to an Adobe service must include the access token in the `Authorization` header, along with the API Key (Client ID) that was generated when you created the [Service Account Integration](../service-account-integration.md) in the [Adobe Developer Console](https://developer.adobe.com/console/).
8-
9-
## Authentication Workflow
10-
11-
## Creating a JSON Web Token
12-
13-
A JSON Web Token for Service Account authentication requires a particular set of claims, and must be signed using a valid digital signing certificate. We recommend that you use one of the publicly available libraries or tools for building your JWT. Examples are provided for some popular languages.
14-
15-
### Required Claims for a Service Account JWT
16-
17-
Your JWT must contain the following claims:
18-
19-
| Claim | Description|
20-
|---|---|
21-
| exp | _Required_. The expiration parameter is a required parameter measuring the absolute time since 01/01/1970 GMT. You must ensure that the expiration time is later than the time of issue. After this time, the JWT is no longer valid. **Recommendation**: Have a very short lived token (a few minutes) - such that it expires soon after it has been exchanged for an IMS access token. Every time a new access token is required, one such JWT is signed and exchanged. This is secure approach. Longer lived tokens that are re-used to obtain access tokens as needed are not recommended. |
22-
| iss | _Required_. The issuer, your **Organization ID** from the Adobe Developer Console integration, in the format `org_ident@AdobeOrg`. Identifies your organization that has been configured for access to the Adobe I/O API.|
23-
| sub | _Required_. The subject, your **Technical Account ID** from the Adobe Developer Console integration, in the format: `[email protected]`.|
24-
| aud | _Required_. The audience for the token, your **API Key** from the Adobe Developer Console integration, in the format: `https://ims-na1.adobelogin.com/c/api_key`.|
25-
| Metascopes | _Required_. The API-access claim configured for your organization: [JWT Metascopes](scopes.md), in the format: `"https://ims-na1.adobelogin.com/s/meta_scope": true`|
26-
27-
The following is a sample payload to be signed and encoded.
28-
29-
```json
30-
{
31-
"exp": 1550001438,
32-
"iss": "C74F69D7594880280.....@AdobeOrg",
33-
34-
"https://ims-na1.adobelogin.com/s/ent_dataservices_sdk": true,
35-
"aud": "https://ims-na1.adobelogin.com/c/a64f5f10849a410a97ffdac8ae1....."
36-
}
37-
```
38-
39-
### Sign and Encode your JWT
40-
41-
The JWT must be signed and base-64 encoded for inclusion in the access request. The JWT libraries provide functions to perform these tasks.
42-
43-
- The token must be signed using the private key for a digital signing certificate that is associated with your API key. You can associate more than one certificate with an API key. If you do so, you can use the private key of any associated certificate to sign your JWT. For more information about private key/public certificate, see [Create a public key certificate](./jwt-certificate.md#using-the-public-key-certificate-for-service-account-integration).
44-
45-
**Algorithm**: **RS256** (RSA Signature with SHA-256) is an asymmetric algorithm, and it uses a public/private key pair: the identity provider has a private (secret) key used to generate the signature, and the consumer of the JWT (i.e. Adobe Developer Console) gets a public key to validate the signature.
46-
47-
### Using JWT Libraries and Creation Tools
48-
49-
Most modern languages have JWT libraries available. We recommend you use one of these libraries (or other JWT-compatible libraries) before trying to hand-craft the JWT.
50-
51-
Other JWT tools are publicly available, such as the [JWT.IO](https://jwt.io/), a handy web-based encoder/decoder for JWTs.
52-
53-
Examples are provided for several popular languages.
54-
55-
| Language | Library |
56-
| -------- | --------------------------- |
57-
| Java | `atlassian-jwt` `jsontoken` |
58-
| Node.js | `jsonwebtoken` |
59-
| Python | `pyjwt` |
60-
61-
### Additional JWT Libraries and Creation Tools
62-
63-
The following JWT libraries are available, in addition to the Java, Node.js, and Python libraries for which we have provided examples.
64-
65-
| Language | Library |
66-
| -------- | ----------------------------------- |
67-
| Ruby | `ruby-jwt` |
68-
| PHP | `firebase php-jwt` `luciferous jwt` |
69-
| .NET | `jwt` |
70-
| Haskell | `haskell-jwt` |
71-
72-
## Exchanging JWT to retrieve an access token
73-
74-
To initiate an API session, use the JWT to obtain an access token from Adobe by making a POST request to Adobe Identity Management Service (IMS).
75-
76-
- Send a POST request to:
77-
78-
`https://ims-na1.adobelogin.com/ims/exchange/jwt`
79-
80-
- The body of the request should contain URL-encoded parameters with your Client ID (API Key), Client Secret, and JWT:
81-
82-
`client_id={api_key_value}&client_secret={client_secret_value}&jwt_token={base64_encoded_JWT}`
83-
84-
### Request parameters
85-
86-
Pass URL-encoded parameters in the body of your POST request:
87-
88-
| Parameter | Description |
89-
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
90-
| client_id | The API key generated for your integration. |
91-
| client_secret | The client secret generated for your integration. |
92-
| jwt_token | A base-64 encoded JSON Web Token that encapsulates the identity of your integration, signed with a private key that corresponds to a public key certificate attached to the integration. |
93-
94-
### Responses
95-
96-
When a request has been understood and at least partially completed, it returns with HTTP status 200. On success, the response contains a valid access token. Pass this token in the Authorization header in all subsequent requests to an Adobe service.
97-
98-
A failed request can result in a response with an HTTP status of 400 or 401 and one of the following error messages in the response body:
99-
100-
|Response|Description|
101-
|--- |--- |
102-
|400 invalid_client|Integration does not exist. This applies both to the client_id parameter and the aud in the JWT. The client_id parameter and the aud field in the JWT do not match.|
103-
|401 invalid_client|Integration does not have the exchange_jwt scope. This indicates an improper client configuration. Contact the Adobe I/O team to resolve it. The client ID and client secret combination is invalid.|
104-
|400 invalid_token|JWT is missing or cannot be decoded. JWT has expired. In this case, the error_description contains more details. The exp or jti field of the JWT is not an integer.|
105-
|400 invalid_signature|The JWT signature does not match any certificates attached to the integration. The signature does not match the algorithm specified in the JWT header.|
106-
|400 invalid_scope|Indicates a problem with the requested scope for the token. Specific scope problems can be:Metascopes in the JWT do not match metascopes in the binding.Metascopes in the JWT do not match target client scopes.Metascopes in the JWT contain a scope or scopes that do not exist.The JWT has no metascopes.|
107-
|400 bad_request|The JWT payload can be decoded and decrypted, but its contents are incorrect. This can occur when values for fields such as sub, iss, exp, or jti are not in the proper format.|
108-
109-
110-
### Example
111-
112-
```
113-
========================= REQUEST ==========================
114-
POST https://ims-na1.adobelogin.com/ims/exchange/jwt
115-
-------------------------- body ----------------------------
116-
client_id={myClientId}&client_secret={myClientSecret}&jwt_token={myJSONWebToken}
117-
------------------------- headers --------------------------
118-
Content-Type: application/x-www-form-urlencoded
119-
Cache-Control: no-cache
120-
```
5+
As of June 30, 2025, Service Account (JWT) credentials have reached their end of life and are no longer supported. All server-to-server integrations must use the [OAuth Server-to-Server credentials](../authentication/ServerToServerAuthentication/implementation.md). View the [migration guide](../authentication/ServerToServerAuthentication/migration.md) to know more.

src/pages/guides/authentication/JWT/jwt-certificate.md

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,4 @@
22

33
<InlineAlert slots="text"/>
44

5-
The Service Account (JWT) credentials have been deprecated in favor of the OAuth Server-to-Server credentials. Your applications using the Service Account (JWT) credentials will stop working after Jun 30, 2025. You must migrate to the new credential by **Jun 30, 2025**, to ensure your application continues functioning. [Learn more](../ServerToServerAuthentication/migration.md).
6-
7-
Create a private key and a public certificate. Make sure you store these securely.
8-
9-
## MacOS and Linux:
10-
11-
Open a terminal and execute the following command:
12-
13-
`openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout private.key -out certificate_pub.crt`
14-
15-
![Generate public certificate](../Images/auth_jwtqs_00.png "Generate Public certificate")
16-
17-
## Windows:
18-
19-
1. Download an OpenSSL client to generate public certificates; for example, you can try the [OpenSSL Windows client](https://bintray.com/vszakats/generic/download_file?file_path=openssl-1.1.1-win64-mingw.zip).
20-
21-
2. Extract the folder and copy it to the **C:/libs/** location.
22-
23-
3. Open a command-line window and execute the following commands:
24-
25-
```
26-
set OPENSSL_CONF=C:/libs/openssl-1.1.1-win64-mingw/openssl.cnf
27-
28-
cd C:/libs/openssl-1.1.1-win64-mingw/
29-
30-
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout private.key -out certificate_pub.crt
31-
```
32-
![Generate public certificate windows](../Images/auth_jwtqs_000.png "Generate Public certificate windows")
33-
34-
4. Once you&rsquo;ve completed the steps for your chosen platform, continue in the Adobe Developer Console.
35-
36-
## Using the Public Key Certificate for Service Account Integration
37-
38-
1. Upload the public certificate (certificate_pub.crt) as a part of creating the integration.
39-
40-
![Upload public certificate](../Images/auth_jwtqs_03.png "Upload public certificate")
41-
42-
2. Your integration should now be created with the appropriate public certificate and claims.
43-
44-
![Integration created](../Images/auth_jwtqs_04.png "Integration created")
5+
As of June 30, 2025, Service Account (JWT) credentials have reached their end of life and are no longer supported. All server-to-server integrations must use the [OAuth Server-to-Server credentials](../authentication/ServerToServerAuthentication/implementation.md). View the [migration guide](../authentication/ServerToServerAuthentication/migration.md) to know more.

src/pages/guides/authentication/JWT/samples.md

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,4 @@
33

44
<InlineAlert slots="text"/>
55

6-
The Service Account (JWT) credentials have been deprecated in favor of the OAuth Server-to-Server credentials. Your applications using the Service Account (JWT) credentials will stop working after Jun 30, 2025. You must migrate to the new credential by **Jun 30, 2025**, to ensure your application continues functioning. [Learn more](../ServerToServerAuthentication/migration.md).
7-
8-
The following samples demonstrate JWT generation and exchanging it with Adobe IMS endpoint to retrieve an access token.
9-
10-
### Node.js Example
11-
[Github repo](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-node) where you can find a complete sample Node.js code to generate a JWT and exchanging it with Adobe IMS Endpoint to retrieve an access token.
12-
13-
### Java Example
14-
[Github repo](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-java) where you can find a complete sample Java code to generate a JWT and exchanging it with Adobe IMS Endpoint to retrieve an access token.
15-
16-
### Python Example
17-
[Github repo](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-python) where you can find a complete sample Python code to generate a JWT and exchanging it with Adobe IMS Endpoint to retrieve an access token.
18-
19-
### C#.NET Example
20-
[Github repo](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-dotnet) where you can find a complete sample C#.NET code to generate a JWT and exchanging it with Adobe IMS Endpoint to retrieve an access token.
21-
22-
### PHP Example
23-
[Github repo](https://github.com/AdobeDocs/adobe-dev-console/tree/main/samples/adobe-jwt-php) where you can find PHP code example for JWT creation and reference method that exchanges JWT with Adobe IMS Endpoint to retrieve an access token.
6+
As of June 30, 2025, Service Account (JWT) credentials have reached their end of life and are no longer supported. All server-to-server integrations must use the [OAuth Server-to-Server credentials](../authentication/ServerToServerAuthentication/implementation.md). View the [migration guide](../authentication/ServerToServerAuthentication/migration.md) to know more.

0 commit comments

Comments
 (0)