Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Enlace de sesión URL de autorización de OAuth 2.0
AgentCore Identity permite recuperar los tokens de acceso de OAuth 2.0 para que las aplicaciones de sus agentes accedan a proveedores de aplicaciones de terceros o a recursos protegidos por proveedores de identidad o servidores de autorización. Si una aplicación o un recurso requieren que un usuario autorice de forma explícita mediante un flujo de código de autorización de OAuth, AgentCore Identity genera una URL de autorización para que el usuario navegue hasta ella y dé su consentimiento para acceder a ella. Luego, cuando el usuario da su consentimiento, AgentCore Identity recupera el token de acceso de la aplicación o el recurso en nombre de los usuarios y lo almacena en la bóveda de tokens de AgentCore identidad.
Sin embargo, dado que un usuario puede enviar accidentalmente la URL de autorización a otro usuario y obtener acceso a la aplicación o el recurso de ese usuario, la aplicación debe comprobar que el usuario que inicia la solicitud de autorización sigue siendo el mismo usuario que ha dado su consentimiento a la aplicación o el recurso. Para ello, debe registrar un punto final de aplicación HTTPS disponible al público con una AgentCore identidad que se encargue de la verificación del usuario.
Cómo funciona la vinculación de sesiones
El siguiente diagrama de flujo y los pasos correspondientes muestran el proceso de enlace de sesión con la URL de autorización de OAuth 2.0:
-
Agente de invocación: el código de su agente invoca la
GetResourceOauth2TokenAPI para recuperar una URL de autorización cuando un usuario del agente originario desea acceder a alguna aplicación o recurso de su propiedad. he/she -
Generar URL de autorización: AgentCore Identity genera una URL de autorización y una URI de sesión para que el usuario navegue hasta ellas y dé su consentimiento para acceder a ellas.
-
Autorizar y obtener el token de acceso: el usuario navega hasta la URL de autorización y otorga su consentimiento para que el agente acceda al his/her recurso. Después, AgentCore Identity redirige el navegador del usuario al punto final de la aplicación HTTPS con la información que contiene el usuario originario de la solicitud de autorización. En este punto, el punto final de la aplicación HTTPS determina si el usuario del agente original sigue siendo el mismo que el usuario de la aplicación que ha iniciado sesión en ese momento. Si coinciden, el punto final de la aplicación se invoca
CompleteResourceTokenAuthpara que AgentCore Identity pueda buscar y almacenar el token de acceso. -
Re-invoke agente para obtener el token de acceso: una vez que la aplicación devuelva una respuesta válida, la aplicación de agente podrá recuperar los tokens de OAuth2.0 acceso que se solicitaron originalmente para el usuario. Si los usuarios no coinciden, la aplicación simplemente no hace nada o registra el intento.
Al permitir que el punto final de la aplicación verifique la identidad del usuario, AgentCore Identity permite que la aplicación del agente se asegure de que siempre es el mismo usuario que inició la solicitud de autorización y el que dio su consentimiento para acceder.
Detalles de la implementación
Los pasos siguientes le guiarán para configurar la identidad de la carga de trabajo, el proveedor de credenciales de OAuth 2.0 y el cliente de la aplicación OAuth 2.0 del proveedor de recursos para recuperar un token de acceso de OAuth 2.0 para su aplicación de agente.
Puedes consultar el código de ejemplo como ejemplo de una aplicación que funciona: la implementación del servidor de devolución de llamadas OAuth 2.0. https://github.com/awslabs/amazon-bedrock-agentcore-samples/blob/main/01-features/05-authenticate-and-authorize/02-outbound-auth/02-outbound-auth-3lo/oauth2_callback_server.py
importante
Cuando utilizas la AgentCore CLI agentcore dev en un entorno local, para simplificar el desarrollo y las pruebas locales, la CLI aloja el punto final de devolución de llamada y llama a la CompleteResourceTokenAuth API en tu nombre para verificar la sesión del usuario y obtener los tokens de acceso de OAuth 2.0, de modo que puedas saltarte los pasos 1, 2 y 4 de la siguiente configuración. Sin embargo, al implementar el código de agente en AgentCore Runtime, la aplicación web que se conecta al tiempo de ejecución del agente debe alojar en sí misma un punto final de devolución de llamada HTTPS de acceso público, el punto final de devolución de llamada debe registrarse en la identidad de la carga de trabajo como una AllowedResourceOAuth2ReturnUrl llamada UpdateWorkloadIdentity con el ID de agente proporcionado por AgentCore Runtime y, a continuación, llamar a la CompleteResourceTokenAuth API después de verificar la sesión de navegador del usuario actual para proteger los flujos de autorización de OAuth 2.0.
Para implementar la URL de autorización de OAuth 2.0, el enlace entre sesiones y URL
-
Crea una URL de aplicación: para tu aplicación de navegador orientada al usuario, crea y aloja una nueva URL a la que se pueda acceder desde el navegador del usuario y que pueda aceptar solicitudes de redireccionamientos del navegador. Esta página debe redirigir a la página de una aplicación para que el usuario pueda continuar con su sesión de agente o mostrar alguna página web básica en la que se indique a los usuarios que devuelvan la sesión de agente que tienen activa actualmente. En las etapas posteriores de la implementación, esta página se usa para validar la sesión activa del usuario actual, por lo que también debería poder acceder a los datos de la sesión de usuario de la aplicación y mantenerlos.
Por ejemplo, es posible que los usuarios de su aplicación interactúen con un agente en una página principal de la aplicación, como
https://myagentapp.com/assistant. Querrás mostrar una nueva URL comohttps://myagentapp.com/callbackesa, de momento te redirigirá a la página principal de la aplicación. La lógica de código real de su/callbackterminal se actualizará más adelante, siguiendo esta guía. -
Actualice la identidad de la carga de trabajo con la URL de la aplicación: (se puede omitir si se realiza la prueba de forma local mediante la AgentCore CLI) Una vez que haya creado y alojado una URL de aplicación para que AgentCore Identity la redirija, actualice la identidad de la carga de trabajo para que la URL de la aplicación quede registrada como
AllowedResourceOauth2ReturnUrlAsegúrese de que las credenciales de IAM utilizadas tengan permisos para realizar llamadasCreateWorkloadIdentityo enUpdateWorkloadIdentityfunción de si está creando una nueva identidad de carga de trabajo o actualizando una existente.nota
En el caso de las identidades de carga de trabajo creadas en tu nombre por AgentCore Runtime o Gateway, el nombre de la identidad de la carga de trabajo se corresponderá con el ID de tiempo de ejecución o el ID de puerta de enlace que emitan los servicios.
Ejemplo de llamada a la
UpdateWorkloadIdentityAPI:aws bedrock-agentcore-control update-workload-identity --name GoogleCalendarAgent \ --allowed-resource-oauth2-return-urls https://myagentapp.com/callback -
Cree un proveedor de credenciales de OAuth 2.0 en AgentCore Identity: para registrar completamente el proveedor de credenciales de OAuth 2.0, necesita permisos para llamar a y.
CreateOauth2CredentialProviderUpdateOauth2CredentialProviderSiga estos pasos:-
Llama
CreateOauth2CredentialProvidercon marcadores de posición para el ID y el secreto del cliente. -
La respuesta de la API contendrá una URL de devolución de llamada (redireccionamiento) de OAuth, como la siguiente:
https://bedrock-agentcore.amazonaws.com/identities/callback/123-456-7890Registra este valor, ya que es específico para cada proveedor que se crea y el proveedor de recursos de OAuth 2.0 lo necesitará más adelante.
-
Ve a tu proveedor de recursos (por ejemplo, Google o GitHub) y crea un cliente de aplicación OAuth 2.0. Indica la URL de devolución de llamada emitida por el servicio desde la
CreateOauth2CredentialProviderllamada al proveedor de recursos como una URL de devolución de llamada de OAuth 2.0 permitida. -
Una vez que se haya creado el cliente de la aplicación OAuth 2.0, registre el ID y el secreto del cliente asignados al cliente de la aplicación, ya que tendrá que actualizar el proveedor de credenciales de OAuth 2.0 con estos valores.
-
Llama
UpdateOauth2CredentialProvidery proporciona el ID de cliente y el secreto de cliente proporcionados por el proveedor de recursos, en lugar de los valores de marcador que se proporcionaron al crear el proveedor de credenciales.
-
-
Añade un controlador de código para realizar llamadas CompleteResourceTokenAuth: una vez que hayas creado tu proveedor de credenciales de OAuth 2.0, agrega el código y los permisos de IAM para llamar a la API en el
CompleteResourceTokenAuthcontrolador de URL de tu aplicación. Al llamar a laCompleteResourceTokenAuthAPI, tu aplicación debe presentar lauser_idcadena o el token de OAuth del proveedor de identidad entrante original que se utilizó para generar el token de acceso a la carga de trabajo para representar al usuario y a la aplicación del agente involucrados en el flujo de autorización de OAuth 2.0. Esta información debe obtenerse de la sesión activa de la aplicación en el navegador del usuario (normalmente mediante una cookie del navegador o en el almacenamiento local del navegador) y NO debe extraerse de ninguna caché de sesión remota.Además, cada URL de autorización que genera AgentCore Identity se identifica de forma exclusiva con su propia URI de sesión. Este URI de sesión también debe presentarse junto con el identificador de usuario para vincular la sesión con el usuario previsto.
importante
Antes de que la aplicación llame a la
CompleteResourceTokenAuthAPI, la aplicación debe verificar que el usuario actual tiene una sesión activa y válida con la aplicación. De este modo, la aplicación puede asociar al usuario previsto a la sesión de autorización. Además, si tienes un servicio de backend del que depende tu aplicación, puedes mover el código que llama a laCompleteResourceTokenAuthAPI a tu backend y hacer que tu aplicación reenvíe el token OAuth del proveedor de identidad entrante o a tu backend.user_idEjemplo de código de aplicación:
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"}) -
Prueba: una vez que haya completado la configuración, estará listo para probar la integración. Comience por llamar
GetResourceOauth2Tokeny, en su navegador, vaya a la URL de autorización que se devuelve. Tras completar la autorización en el proveedor de recursos de OAuth 2.0, verás que el navegador te redirige a la URL de tu aplicación e invoca la API.CompleteResourceTokenAuthUna vez que la aplicación devuelva una respuesta válida, tu aplicación de agente podrá recuperar los tokens de acceso de OAuth 2.0 que se solicitaron originalmente para el usuario. Estos tokens se pueden obtener llamando a la API.GetResourceOauth2Token
Consideraciones adicionales
Al implementar el enlace de sesión con URL de autorización de OAuth 2.0, ten en cuenta las siguientes consideraciones:
-
Cada URL de autorización y su identificador de sesión correspondiente solo son válidos durante 10 minutos.
-
Para proteger el punto final de devolución de llamadas de su aplicación contra los ataques de CSRF, le recomendamos encarecidamente que genere un estado opaco para incluirlo en la llamada a la API.
GetResourceOAuth2TokenSu aplicación debería poder analizar este valor para asegurarse de que atiende las solicitudes iniciadas por su aplicación de agente.