aws / aws/bedrock-agentcore-sdk-python

Support for Auth0 credential provider when using the `request_access_token` decorator and for `Identity.get_token`

Ouverte
#109 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.