We are currently developing a Forge app (headless, no UI) to facilitate data synchronization between Jira Cloud and EazyBI.
We use a Forge web trigger to store the necessary data, which is then exposed via a GET endpoint to be used by EazyBI as a REST API data source. This endpoint serves sensitive data.
The Core Security Problem: How do we secure this stateless web trigger endpoint to guarantee that only the authorized EazyBI service (and not arbitrary third parties) can access it?
-
Standard Forge security mechanisms like
asUser()are not applicable here, as there is no Jira user initiating the call. -
The web trigger URL is technically public. While we can use the sharedSecret from the Forge installation to validate the call (checking for the
Authorization: Bearer tokenin the header), how do we securely provision this secret into EazyBI? -
EazyBI offers authentication options including OAuth 2.0 (client credentials flow), Basic Auth, and Token Auth.
Question: What is the recommended best practice for implementing service-to-service authentication in this specific Forge scenario?
-
Should we use the Forge sharedSecret and instruct the user to manually configure it in EazyBI as a Bearer Token?
-
Is there a native way to implement an OAuth 2.0 Client Credentials flow, where the Forge app acts as the Resource Server and EazyBI as the Client?