[source-salesforce] Add OAuth 2.0 JWT Bearer authentication
- Linguagem predominante
- Python
- Estrelas
- 22.1k
- Forks
- 5.4k
- Merge médio
- 5h
- PRs com merge (30d)
- 671
Descrição
## Topic
Add Salesforce's OAuth 2.0 JWT Bearer Token flow as a second authentication method for `source-salesforce`.
## Relevant information
**Connector:** source-salesforce
**Current released version:** 2.7.23
**Type:** Enhancement / feature request (backwards-compatible, additive)
### Problem / motivation
`source-salesforce` only supports the OAuth 2.0 **refresh-token** flow (`client_id` + `client_secret` + `refresh_token`). That flow requires:
* human authorization, which isn't always available
* storing a long-lived client secret + refresh token
Salesforce's [OAuth 2.0 JWT Bearer Token flow](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm&type=5) is the standard answer for this: the client signs a short-lived RS256 JWT with the connected app's private key and exchanges it for an access token — **no refresh token and no client secret required**.
### Proposed solution
Add JWT bearer as a parallel auth method selected by an `auth_type` field, keeping the existing refresh-token path unchanged
### Scope / impact
- minor version bump: existing OAuth configs remain valid. no config migration, no impact to existing connections
### Willingness to contribute
- [x] Yes, I want to contribute.
Implementation + unit tests + docs are ready; happy to open a PR once this is triaged/assigned. Verified locally: 113 unit tests pass (5 new JWT tests) and `check` against a live JWT-configured connected app returns `SUCCEEDED`.
Guia de contribuição
Direção de pesquisa
Start by locating the source-salesforce authentication configuration and the existing refresh-token flow, then review how an auth_type field could select the JWT Bearer path. Run the connector's unit tests and the check command against a JWT-configured connected app. Done means RS256 JWT authentication, unit tests, and docs are added while existing OAuth configurations remain unchanged.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- api, authentication, backend
- Tipo de issue
- Funcionalidade
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Pouca atividade
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 48/100