aws / aws/bedrock-agentcore-sdk-python
Support for Auth0 credential provider when using the `request_access_token` decorator and for `Identity.get_token`
- Langage dominant
- Python
- Étoiles
- 761
- Forks
- 147
- Merge moyen
- 1 j 23 h
- PR mergées (30 j)
- 7
Description
**Is your feature request related to a problem? Please describe.**
In order to get an access_token from Auth0, you need to pass an additional `audience` parameter in the request.
Using boto3 directly this can be accomplished with:
```
workload_access_token=BedrockAgentCoreContext.get_workload_access_token()
resp = acr.get_resource_oauth2_token(
workloadIdentityToken=workload_access_token, resourceCredentialProviderName='resource-provider-oauth-gateway',
scopes=[],
customParameters={'audience': ''},
oauth2Flow='M2M')
print(resp['access_token'])
```
The `request_access_token` decorator does not support passing that parameter and the request fails since the returned token is an opaque token and not a valid JWT.
```
raise error_class(parsed_response, operation_name)
botocore.errorfactory.ValidationException: An error occurred (ValidationException) when calling the GetResourceOauth2Token operation: Error parsing ClientCredentials response
```
**Describe the solution you'd like**
Add a `customParameters` parameter to the decorator
**Describe alternatives you've considered**
One can use the boto3 API directly, but introduces friction to the developer experience
**Additional context**
The new signature should be:
```
def requires_access_token(
*,
provider_name: str,
into: str = "access_token",
scopes: List[str],
on_auth_url: Optional[Callable[[str], Any]] = None,
auth_flow: Literal["M2M", "USER_FEDERATION"],
callback_url: Optional[str] = None,
custom_parameters: Optional[dict] = None,
force_authentication: bool = False,
token_poller: Optional[TokenPoller] = None,
) -> Callable:
```
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par localiser le décorateur requires_access_token et les points d’entrée Identity.get_token, puis suivez la manière dont leurs paramètres de requête du fournisseur d’identifiants sont assemblés. La signature proposée dans l’issue identifie custom_parameters comme l’entrée requise ; le travail est considéré comme terminé lorsque les paramètres d’audience Auth0 peuvent parvenir aux deux flux et que le token renvoyé est accepté sans utiliser boto3 directement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- aws, python
- Domaine
- authentication, backend
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100