Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Liaison de session d'URL d'autorisation OAuth 2.0
AgentCore Identity permet de récupérer les jetons d'accès OAuth 2.0 pour que vos applications d'agent puissent accéder à des fournisseurs d'applications tiers ou à des ressources protégées par des fournisseurs d'identité ou des serveurs d'autorisation. Si une application ou une ressource nécessite qu'un utilisateur s'autorise explicitement à l'aide d'un flux de code d'autorisation OAuth, AgentCore Identity génère une URL d'autorisation à laquelle l'utilisateur peut accéder et autoriser l'accès. Ensuite, une fois que l'utilisateur a donné son consentement, AgentCore Identity récupère le jeton d'accès depuis l'application ou la ressource pour le compte des utilisateurs et le stocke dans le AgentCore Identity Token Vault.
Cependant, étant donné qu'un utilisateur peut accidentellement envoyer l'URL d'autorisation à un autre utilisateur et accéder à l'application ou à la ressource de cet utilisateur, votre application doit vérifier que l'utilisateur qui initie une demande d'autorisation est toujours le même que l'utilisateur qui a donné son consentement à l'application ou à la ressource. Pour ce faire, vous devez enregistrer un point de terminaison d'application HTTPS accessible au public auprès AgentCore d'Identity qui gère la vérification des utilisateurs.
Comment fonctionne la liaison de session
Le diagramme de flux suivant et les étapes correspondantes illustrent le processus de liaison de session d'URL d'autorisation OAuth 2.0 :
-
Invoquer un agent : votre code d'agent invoque
GetResourceOauth2Tokenl'API pour récupérer une URL d'autorisation, lorsqu'un utilisateur de l'agent d'origine souhaite accéder à une application ou à une ressource qui he/she en est propriétaire. -
Générer une URL d'autorisation — AgentCore Identity génère une URL d'autorisation et un URI de session auxquels l'utilisateur peut accéder et autoriser l'accès.
-
Autoriser et obtenir un jeton d'accès — L'utilisateur accède à l'URL d'autorisation et autorise votre agent à accéder à la his/her ressource. AgentCore Identity redirige ensuite le navigateur de l'utilisateur vers le point de terminaison de votre application HTTPS avec des informations contenant l'utilisateur à l'origine de la demande d'autorisation. À ce stade, le point de terminaison de votre application HTTPS détermine si l'utilisateur de l'agent d'origine est toujours le même que l'utilisateur actuellement connecté de votre application. S'ils correspondent, le point de terminaison de votre application les invoque
CompleteResourceTokenAuthpour qu' AgentCore Identity puisse récupérer et stocker le jeton d'accès. -
Re-invoke agent pour obtenir le jeton d'accès — Une fois que l'application aura renvoyé une réponse valide, votre application d'agent sera en mesure de récupérer les jetons d' OAuth2.0 accès initialement demandés pour l'utilisateur. Si les utilisateurs ne correspondent pas, votre application ne fait simplement rien ou enregistre la tentative.
En permettant à votre terminal d'application de vérifier l'identité de l'utilisateur, AgentCore Identity permet à votre application d'agent de s'assurer que c'est toujours le même utilisateur qui a lancé la demande d'autorisation et celui qui a consenti à l'accès.
Détails de l'implémentation
Les étapes suivantes vous expliquent comment configurer l'identité de la charge de travail, le fournisseur d'informations d'identification OAuth 2.0 et le client d'application OAuth 2.0 auprès du fournisseur de ressources afin de récupérer un jeton d'accès OAuth 2.0 pour votre application d'agent.
Vous pouvez vous référer à un exemple de code comme exemple d'application fonctionnelle : implémentation du serveur de rappel OAuth 2.0.
Important
Lorsque vous utilisez la AgentCore CLI agentcore dev dans un environnement local, pour simplifier votre développement et vos tests locaux, la CLI héberge le point de terminaison de rappel et appelle l'CompleteResourceTokenAuthAPI en votre nom pour vérifier la session utilisateur afin d'obtenir des jetons d'accès OAuth 2.0 afin que vous puissiez ignorer les étapes 1, 2 et 4 de la configuration suivante. Toutefois, lors du déploiement de votre code d'agent sur AgentCore Runtime, votre application Web qui se connecte à l'environnement d'exécution de l'agent doit héberger elle-même un point de terminaison de rappel HTTPS accessible au public. Le point de terminaison de rappel doit être enregistré sous l'identité de la charge de travail AllowedResourceOAuth2ReturnUrl en tant qu'appelant à UpdateWorkloadIdentity l'aide de l'ID d'agent fourni par AgentCore Runtime, puis appeler l'CompleteResourceTokenAuthAPI après avoir vérifié la session de navigateur de l'utilisateur actuel afin de sécuriser vos flux d'autorisation OAuth 2.0.
Pour implémenter la liaison de session d'URL d'autorisation OAuth 2.0
-
Création d'une URL d'application — Pour votre application de navigation orientée utilisateur, créez et hébergez une nouvelle URL accessible depuis le navigateur de l'utilisateur et capable d'accepter les demandes provenant de redirections de navigateur. Cette page doit soit rediriger vers une page d'application permettant à votre utilisateur de poursuivre sa session d'agent, SOIT afficher une page Web de base demandant à vos utilisateurs de rétablir leur session d'agent actuellement active. Dans les étapes ultérieures de la mise en œuvre, cette page est utilisée pour valider la session active de l'utilisateur actuel. Elle devrait donc également être en mesure d'accéder aux données de session utilisateur de votre application et de les gérer.
Par exemple, les utilisateurs de votre application peuvent interagir avec un agent sur une page d'application principale, par exemple
https://myagentapp.com/assistant. Vous voudrez exposer une nouvelle URL comme celle-ci pour l'instanthttps://myagentapp.com/callbackqui redirigera vers la page principale de l'application. La logique de code réelle de votre/callbackterminal sera mise à jour ultérieurement lorsque vous suivrez ce guide. -
Mettre à jour l'identité de la charge de travail avec l'URL de l'application — (Peut être ignoré si vous testez localement via la AgentCore CLI) Une fois que vous avez créé et hébergé une URL d'application vers laquelle AgentCore l'identité peut être redirigée, mettez à jour l'identité de votre charge de travail afin que l'URL de l'application soit enregistrée en tant
AllowedResourceOauth2ReturnUrlque. Assurez-vous que les informations d'identification IAM utilisées sont autorisées à effectuer des appelsCreateWorkloadIdentity, que vousUpdateWorkloadIdentitycréiez une nouvelle identité de charge de travail ou que vous mettiez à jour une identité existante.Note
Pour les identités de charge de travail créées en votre nom par AgentCore Runtime ou Gateway, le nom de l'identité de charge de travail correspondra à l'ID d'exécution ou à l'ID de passerelle émis par les services.
Exemple d'appel d'
UpdateWorkloadIdentityAPI :aws bedrock-agentcore-control update-workload-identity --name GoogleCalendarAgent \ --allowed-resource-oauth2-return-urls https://myagentapp.com/callback -
Créer un fournisseur d'informations d'identification OAuth 2.0 dans AgentCore Identity — Pour enregistrer complètement le fournisseur d'informations d'identification OAuth 2.0, vous devez être autorisé à appeler et.
CreateOauth2CredentialProviderUpdateOauth2CredentialProviderProcédez comme suit :-
Appelez
CreateOauth2CredentialProvideravec des espaces réservés pour l'ID client et le secret client. -
La réponse de l'API contiendra une URL de rappel (redirection) OAuth telle que :
https://bedrock-agentcore.amazonaws.com/identities/callback/123-456-7890Enregistrez cette valeur car elle est spécifique à chaque fournisseur créé et sera requise ultérieurement par le fournisseur de ressources OAuth 2.0.
-
Accédez à votre fournisseur de ressources (par exemple, Google ou GitHub) et créez un client d'application OAuth 2.0. Fournissez l'URL de rappel émise par le service lors de l'
CreateOauth2CredentialProviderappel au fournisseur de ressources en tant qu'URL de rappel OAuth 2.0 autorisée. -
Une fois le client d'application OAuth 2.0 créé, enregistrez l'ID client et le secret client attribués à votre client d'application car vous devez mettre à jour le fournisseur d'informations d'identification OAuth 2.0 avec ces valeurs.
-
Appelez
UpdateOauth2CredentialProvideret fournissez l'ID client et le secret client fournis par le fournisseur de ressources, en remplacement des valeurs d'espace réservé fournies lors de la création du fournisseur d'informations d'identification.
-
-
Ajouter un gestionnaire de code pour les appels CompleteResourceTokenAuth — Une fois que vous avez créé votre fournisseur d'informations d'identification OAuth 2.0, ajoutez du code et les autorisations IAM pour appeler l'
CompleteResourceTokenAuthAPI dans le gestionnaire d'URL de votre application. Lorsque vous appelez l'CompleteResourceTokenAuthAPI, votre application doit présenter le jeton ou lauser_idchaîne OAuth du fournisseur d'identité entrant d'origine qui a été utilisé pour générer le jeton d'accès à la charge de travail afin de représenter l'utilisateur et l'application agent impliqués dans le flux d'autorisation OAuth 2.0. Ces informations doivent être extraites de la session d'application active sur le navigateur de l'utilisateur (généralement via un cookie de navigateur ou dans la mémoire locale du navigateur) et NE doivent PAS être extraites du cache d'une session distante.En outre, chaque URL d'autorisation générée par AgentCore Identity est identifiée de manière unique par son propre URI de session. Cet URI de session doit également être présenté à côté de l'identifiant de l'utilisateur pour lier la session à l'utilisateur prévu.
Important
Avant que votre application n'appelle l'
CompleteResourceTokenAuthAPI, celle-ci doit vérifier que l'utilisateur actuel dispose d'une session active et valide avec votre application. Ce faisant, votre application peut associer l'utilisateur prévu à la session d'autorisation. En outre, si votre application dépend d'un service backend, vous pouvez déplacer le code qui appelle l'CompleteResourceTokenAuthAPI vers votre backend et demander à votre application de transférer le jeton OAuth du fournisseur d'identité entrant ou vers votre backend.user_idExemple de code d'application :
def _handle_3lo_callback(self, request: Request) -> JSONResponse: session_id = request.query_params.get("session_id") if not session_id: console.print("Missing session_id in OAuth2 3LO callback") return JSONResponse(status_code=400, content={"message": "missing session_id query parameter"}) session_details = validate_session_cookies(request.cookies.get('my-application-cookie')) user_id = None if oauth2_config: user_id = session_details.get(USER_ID) if not user_id: console.print(f"Missing {USER_ID} in session_details") return JSONResponse(status_code=500, content={"message": "Internal Server Error"}) console.print(f"Handling 3LO callback for workload_user_id={user_id} | session_id={session_id}", soft_wrap=True) region = agent_config.aws.region if not region: console.print("AWS Region not configured") return JSONResponse(status_code=500, content={"message": "Internal Server Error"}) identity_client = IdentityClient(region) identity_client.complete_resource_token_auth( session_uri=session_id, user_identifier=UserIdIdentifier(user_id=user_id) ) return JSONResponse(status_code=200, content={"message": "OAuth2 3LO flow completed successfully"}) -
Test : une fois la configuration terminée, vous êtes prêt à tester l'intégration. Commencez par appeler
GetResourceOauth2Tokenet, dans votre navigateur, accédez à l'URL d'autorisation qui vous est renvoyée. Après avoir terminé l'autorisation auprès du fournisseur de ressources OAuth 2.0, vous devriez voir le navigateur rediriger vers l'URL de votre application et invoquer l'API.CompleteResourceTokenAuthUne fois que l'application aura renvoyé une réponse valide, votre application d'agent sera en mesure de récupérer les jetons d'accès OAuth 2.0 initialement demandés pour l'utilisateur. Ces jetons peuvent être récupérés en appelant l'GetResourceOauth2TokenAPI.
Considérations supplémentaires
Lorsque vous implémentez la liaison de session d'URL d'autorisation OAuth 2.0, tenez compte des considérations suivantes :
-
Chaque URL d'autorisation et son identifiant de session correspondant ne sont valides que pendant 10 minutes.
-
Pour sécuriser le point de terminaison de rappel de votre application contre les attaques CSRF, nous vous recommandons vivement de générer un état opaque à inclure dans votre appel d'API.
GetResourceOAuth2TokenVotre application devrait être en mesure d'analyser cette valeur pour s'assurer qu'elle répond aux demandes initiées par votre application d'agent.