Skip to main content
The Fiskil Data Provider platform makes requests to your resource server to provide your users’ data to authorized clients. You must authenticate the request from Fiskil to ensure no unauthorized parties can access the user data. The Fiskil Data Provider platform uses signed JWT tokens that can be verified to authenticate Fiskil as the one requesting your data.

Backend Authentication Flow

The diagram below illustrates how authentication works between the Fiskil Data Provider and your Resource Server:

JWT

The Fiskil Data Provider uses JSON Web Tokens (JWTs) to authenticate to your Resource Server. JWTs are well-suited to Open Data platforms since they support fine-grained access control and short lifetimes. Requests to your API include a JWT in the Authorization header using the Bearer scheme. Each JWT is signed by the Data Provider. The public keys are exposed via a JWKS endpoint (shared during onboarding). Tokens include a kid JOSE header so your server can select the correct JWK. The JWKS URL for your instance is available in the Console under Settings → Domains.

Validating the JWT

Once you have the public key you must validate the JWT. When you validate the JWT, ensure that:
  • The signature is valid.
  • The token is not expired (check the exp claim).
  • The sub and iss claims match your Data Provider subdomain (provided during onboarding).
  • The aud is the URI of the resource being requested on the Data API.
  • The jti has not been used before.

Node.js Implementation Example

Here’s a complete Node.js example showing how to validate JWTs from Fiskil’s Data Provider:
This example stores used JTIs in memory. For production systems, use a distributed cache like Redis to prevent replay attacks across multiple server instances.
Consider implementing JTI cleanup logic to remove expired entries and prevent memory leaks. You can use the exp claim to determine when to clean up each JTI.

Example: authenticated request

The example below shows a JWT used to authenticate a request to a hypothetical utilities provider, Acme Company.
For security and readability, avoid logging full tokens. Log only minimal metadata (for example, the jti).

Decoded JWT

Claims

JWT is a battle-tested specification for sharing cryptographically secured claims. Use a production-grade library to fetch JWKS and verify JWTs in your chosen programming language. For more information on JWT see the references below.

JWT.IO — JSON Web Tokens Introduction

JWT.IO — JSON Web Tokens Libraries

Firewall

While JWT is sufficient to authenticate the Data Provider with your API, we recommend adding a firewall IP allow-list to further protect your data.
  • Fiskil provides IP addresses for allow-listing during onboarding.
  • The IP addresses are also available in the Console under Settings → Resource Server.

Final Notes

Security is a complex topic and often a trade-off is being made between strictness and ease-of-use. If the above security mechanisms do not meet your expectations then please reach out to the Fiskil team and we can discuss alternative security schemes to ensure a smooth onboarding process while protecting your customers’ sensitive information.