S'authentifier à l'aide d'OAuth en deux étapes avec le gestionnaire d'authentification

Pour permettre à vos agents de s'authentifier auprès d'outils externes tels que ServiceNow ou Salesforce en utilisant leur propre autorité, configurez l'authentification sortante à l'aide de fournisseurs d'authentification OAuth à deux étapes (identifiants client) dans le gestionnaire d'authentification Agent Identity.

En gérant les identifiants et les jetons, les fournisseurs d'authentification OAuth à deux étapes éliminent le besoin de code personnalisé pour gérer les flux d'authentification.

Workflow OAuth en deux étapes

Les fournisseurs d'authentification OAuth en deux étapes utilisent l'identité de l'agent et ne nécessitent pas le consentement de l'utilisateur. Google gère le stockage des identifiants client. Lorsque vous utilisez l'Agent Development Kit (ADK), il récupère et injecte automatiquement les jetons d'accès obtenus dans les en-têtes d'appel de l'outil.

Avant de commencer

  1. Vérifiez que vous avez choisi la bonne méthode d'authentification.
  2. Activez l'API Agent Identity si ce n'est pas déjà fait.

    Rôles requis pour activer les API

    Pour activer des API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer l'API

  3. Créer et déployer un agent

  4. Obtenez l'ID client et le code secret du client de l'application tierce à laquelle vous souhaitez vous connecter.

  5. Vérifiez que vous disposez des rôles requis pour effectuer cette tâche.

Rôles requis

Pour obtenir les autorisations nécessaires pour créer et utiliser un fournisseur d'authentification d'identité d'agent à deux étapes, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour créer et utiliser un fournisseur d'authentification d'identité d'agent à deux étapes. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer et utiliser un fournisseur d'authentification d'identité d'agent à deux étapes :

  • Pour créer des fournisseurs d'authentification : agentidentity.authProviders.create
  • Pour utiliser des fournisseurs d'authentification :
    • agentidentity.authProviders.retrieveCredentials
    • aiplatform.endpoints.predict
    • aiplatform.sessions.create

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Créer un fournisseur d'authentification à deux étapes

Créez un fournisseur d'authentification pour définir la configuration et les identifiants des applications tierces.

Pour créer un fournisseur d'authentification à deux étapes, utilisez la console Cloud de Confiance , la Google Cloud CLI ou l'API REST.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Registre d'agents.

    Accéder au registre d'agents

  2. Cliquez sur le nom de l'agent pour lequel vous souhaitez créer un fournisseur d'authentification.
  3. Cliquez sur Identité.
  4. Dans la section Fournisseurs d'authentification, cliquez sur Ajouter un fournisseur d'authentification.
  5. Dans le volet Ajouter un fournisseur d'authentification, saisissez un nom et une description.

    Le nom ne peut contenir que des lettres minuscules, des chiffres ou des traits d'union. Il ne peut pas se terminer par un trait d'union et doit commencer par une lettre minuscule.

  6. Dans la liste OAuth Type (Type d'OAuth), sélectionnez OAuth (2 legged) (OAuth en deux étapes).
  7. Cliquez sur Créer et continuer.
  8. Pour autoriser l'identité de votre agent à utiliser le fournisseur d'authentification, cliquez sur Accorder l'accès.

    Ce processus attribue automatiquement le rôle Utilisateur d'identité d'agent (roles/agentidentity.user) à l'identité de l'agent sur la ressource du fournisseur d'authentification.

  9. Dans la section Identifiants du fournisseur d'authentification, saisissez les informations suivantes :
    • ID client
    • Code secret du client
    • URL du jeton
  10. Cliquez sur Ajouter une configuration de fournisseur.

Le fournisseur d'authentification que vous venez de créer apparaît dans la liste Fournisseurs d'authentification.

gcloud CLI

  1. Créez le fournisseur d'authentification :

    gcloud agent-identity auth-providers create AUTH_PROVIDER_NAME \
        --location="LOCATION" \
        --two-legged-oauth-client-id="CLIENT_ID" \
        --two-legged-oauth-client-secret="CLIENT_SECRET" \
        --two-legged-oauth-token-url="TOKEN_URL"
  2. Vérifiez que votre fournisseur d'authentification apparaît dans la liste et que son état est ENABLED :
    gcloud agent-identity auth-providers list \
       --project="PROJECT_ID" \
       --location="LOCATION"
  3. Accordez des autorisations d'accès pour permettre à votre agent et à votre environnement de développement local de récupérer les identifiants auprès du fournisseur d'authentification. Pour autoriser votre agent déployé et votre compte utilisateur personnel à accéder au fournisseur d'authentification, attribuez le rôle Utilisateur de l'identité de l'agent (roles/agentidentity.user) sur la ressource du fournisseur d'authentification :

    1. Accordez l'accès à l'ID SPIFFE de votre agent déployé (Agent Identity) :

      gcloud agent-identity auth-providers add-iam-policy-binding AUTH_PROVIDER_NAME \
          --project="PROJECT_ID" \
          --location="LOCATION" \
          --role="roles/agentidentity.user" \
          --member="principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/ENGINE_ID"
    2. Accordez l'accès à votre compte utilisateur personnel pour le développement et les tests locaux (adk web) :

      gcloud agent-identity auth-providers add-iam-policy-binding AUTH_PROVIDER_NAME \
          --project="PROJECT_ID" \
          --location="LOCATION" \
          --role="roles/agentidentity.user" \
          --member="user:USER_EMAIL"

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Cloud de Confiance .
  • LOCATION : emplacement où votre fournisseur d'authentification et votre agent sont déployés (par exemple, us-west1).
  • AUTH_PROVIDER_NAME : nom de votre fournisseur d'authentification (par exemple, jira-mcp-2lo-authprovider).
  • CLIENT_ID : ID client OAuth que vous avez généré à partir du service tiers.
  • CLIENT_SECRET : code secret du client OAuth que vous avez généré à partir du service tiers.
  • TOKEN_URL : URL du serveur de jetons (par exemple, https://oauth2.googleapis.com/token).
  • ORGANIZATION_ID : l'ID de votre organisation Cloud de Confiance .
  • PROJECT_NUMBER : numéro de votre projet Cloud de Confiance .
  • ENGINE_ID : ID de votre agent de moteur de raisonnement déployé.
  • USER_EMAIL : l'adresse e-mail de votre compte utilisateur personnel.

REST

  1. Créez le fournisseur d'authentification :

    La méthode authProviders.create de l'API Agent Identity crée un fournisseur d'authentification OAuth à deux étapes dans un projet et un emplacement.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Cloud de Confiance . Les ID de projet sont des chaînes alphanumériques, telles que my-project.
    • LOCATION : emplacement où votre fournisseur d'authentification et votre agent sont déployés (par exemple, us-west1).
    • AUTH_PROVIDER_NAME : nom de votre fournisseur d'authentification (par exemple, jira-mcp-2lo-authprovider). Le nom ne peut contenir que des lettres minuscules, des chiffres ou des traits d'union. Il ne peut pas se terminer par un trait d'union et doit commencer par une lettre minuscule.
    • CLIENT_ID : ID client OAuth que vous avez généré à partir du service tiers.
    • CLIENT_SECRET : code secret du client OAuth que vous avez généré à partir du service tiers.
    • TOKEN_URL : URL du serveur de jetons (par exemple, https://oauth2.googleapis.com/token).

    Méthode HTTP et URL :

    POST https://agentidentity.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authProviders?authProviderId=AUTH_PROVIDER_NAME

    Corps JSON de la requête :

    {
      "authProviderTypeParams": {
        "twoLeggedOauth": {
          "clientId": "CLIENT_ID",
          "clientSecret": "CLIENT_SECRET",
          "tokenUrl": "TOKEN_URL"
        }
      }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

    {
      "name": "projects/my-project/locations/us-west1/authProviders/jira-mcp-2lo-authprovider",
      "createTime": "2026-04-03T21:15:41.367155Z",
      "updateTime": "2026-04-03T21:15:41.367155Z",
      "authProviderTypeParams": {
        "twoLeggedOauth": {
          "clientId": "my-oauth-client-id",
          "tokenUrl": "https://oauth2.googleapis.com/token"
        }
      },
      "state": "ENABLED"
    }
    
  2. Pour permettre à votre agent déployé et à votre compte utilisateur personnel de récupérer les identifiants auprès du fournisseur d'authentification, attribuez le rôle Utilisateur de l'identité de l'agent (roles/agentidentity.user) sur la ressource du fournisseur d'authentification :

    La méthode authProviders.setIamPolicy de l'API Agent Identity définit la stratégie d'autorisation sur la ressource du fournisseur d'authentification.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Cloud de Confiance . Les ID de projet sont des chaînes alphanumériques, telles que my-project.
    • LOCATION : emplacement où votre fournisseur d'authentification et votre agent sont déployés (par exemple, us-west1).
    • AUTH_PROVIDER_NAME : nom de votre fournisseur d'authentification.
    • ORGANIZATION_ID : l'ID de votre organisation Cloud de Confiance.
    • PROJECT_NUMBER : numéro de projet numérique Cloud de Confiance du projet dans lequel votre agent est déployé (par exemple, 987654321098).
    • ENGINE_ID : ID de votre agent de moteur de raisonnement déployé.
    • USER_EMAIL : l'adresse e-mail de votre compte utilisateur personnel.

    Méthode HTTP et URL :

    POST https://agentidentity.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authProviders/AUTH_PROVIDER_NAME:setIamPolicy

    Corps JSON de la requête :

    {
      "policy": {
        "bindings": [
          {
            "role": "roles/agentidentity.user",
            "members": [
              "principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/ENGINE_ID",
              "user:USER_EMAIL"
            ]
          }
        ]
      }
    }
    

    Pour envoyer votre requête, développez l'une des options suivantes :

    Vous devriez recevoir une réponse JSON de ce type :

    {
      "version": 1,
      "etag": "BwYKmjvelug=",
      "bindings": [
        {
          "role": "roles/agentidentity.user",
          "members": [
            "principal://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/987654321098/locations/us-west1/reasoningEngines/112233445566778899",
            "user:alex@example.com"
          ]
        }
      ]
    }
    

S'authentifier dans le code de votre agent

Pour authentifier votre agent, vous pouvez utiliser l'ADK.

ADK

Référencez le fournisseur d'authentification dans le code de votre agent à l'aide de l'ensemble d'outils MCP dans l'ADK.

from google.adk.agents import Agent
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider, GcpAuthProviderScheme
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset
from google.adk.auth.auth_tool import AuthConfig

# Register the Google Cloud Auth Provider so the CredentialManager can use it.
CredentialManager.register_auth_provider(GcpAuthProvider())

# Create the Google Cloud Auth Provider scheme
# Note: If using the legacy V1 API, the resource name uses 'connectors'
# instead of 'authProviders': projects/.../connectors/...
auth_scheme = GcpAuthProviderScheme(
    name="projects/PROJECT_ID/locations/LOCATION/authProviders/AUTH_PROVIDER_NAME"
)

# Configure an MCP tool with the authentication scheme.
toolset = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="https://YOUR_MCP_SERVER_URL"),
    auth_scheme=auth_scheme,
)

# Initialize the agent with the authenticated tools.
agent = Agent(
    name="AGENT_NAME",
    model="gemini-2.5-flash",
    instruction="AGENT_INSTRUCTIONS",
    tools=[toolset],
)

ADK

Référencez le fournisseur d'authentification dans le code de votre agent à l'aide d'un outil de fonction authentifié dans l'ADK.

import httpx
from google.adk.agents import Agent
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider
from google.adk.integrations.agent_identity import GcpAuthProviderScheme
from google.adk.apps import App
from google.adk.auth.auth_credential import AuthCredential
from google.adk.auth.auth_tool import AuthConfig
from google.adk.tools.authenticated_function_tool import AuthenticatedFunctionTool
from vertexai import agent_engines

# First, register Cloud de Confiance auth provider
CredentialManager.register_auth_provider(GcpAuthProvider())

# Create Auth Config
# Note: If using the legacy V1 API, the resource name uses 'connectors'
# instead of 'authProviders': projects/.../connectors/...
spotify_auth_config = AuthConfig(
    auth_scheme=GcpAuthProviderScheme(
        name=(
            "projects/PROJECT_ID/locations/"
            "LOCATION/authProviders/"
            "AUTH_PROVIDER_NAME"
        )
    )
)

# Use the Auth Config in Authenticated Function Tool
spotify_search_track_tool = AuthenticatedFunctionTool(
    func=spotify_search_track, auth_config=spotify_auth_config
)

# Sample function tool
async def spotify_search_track(credential: AuthCredential, query: str) -> str | list:
    token = None
    if credential.http and credential.http.credentials:
        token = credential.http.credentials.token

    if not token:
        return "Error: No authentication token available."

    async with httpx.AsyncClient() as client:
        response = await client.get(
            "https://api.spotify.com/v1/search",
            headers={"Authorization": f"Bearer {token}"},
            params={"q": query, "type": "track", "limit": 1},
        )
        # Add your own logic here

agent = Agent(
    name="AGENT_NAME",
    model="MODEL_NAME",
    instruction="AGENT_INSTRUCTIONS",
    tools=[spotify_search_track_tool],
)

app = App(
    name="APP_NAME",
    root_agent=agent,
)

vertex_app = agent_engines.AdkApp(app_name=app)

ADK

Référencez le fournisseur d'authentification dans le code de votre agent à l'aide de l'ensemble d'outils MCP du registre d'agents dans l'ADK.

Vous ne créez pas de schéma d'authentification pour ce flux. La liaison sortante du serveur MCP enregistre déjà le fournisseur d'authentification à utiliser.

from google.adk.agents import Agent
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider
from google.adk.integrations.agent_registry import AgentRegistry

# First, register Cloud de Confiance auth provider
CredentialManager.register_auth_provider(GcpAuthProvider())

# Set Agent Registry. LOCATION must be the same region as the auth provider.
registry = AgentRegistry(project_id="PROJECT_ID", location="LOCATION")

# The auth provider is resolved from the MCP server's outbound binding.
toolset = registry.get_mcp_toolset(
    mcp_server_name=(
        "projects/PROJECT_ID/locations/"
        "LOCATION/mcpServers/"
        "agentregistry-00000000-0000-0000-0000-000000000000"
    ),
)

agent = Agent(
    name="AGENT_NAME",
    model="MODEL_NAME",
    instruction="AGENT_INSTRUCTIONS",
    tools=[toolset],
)

  

Installer les dépendances pour les tests en local

Pour tester votre agent localement dans un environnement virtuel, installez les dépendances nécessaires suivantes :

  1. Créez et activez un environnement virtuel :
    python3 -m venv env
    source env/bin/activate
  2. Installez les packages requis :
    pip install google-cloud-aiplatform[agent_engines,adk] google-adk[agent-identity]

Déployer l'agent

Lorsque vous déployez votre agent sur Cloud de Confiance by S3NS, assurez-vous que l'identité de l'agent est activée.

Agents CLI

Si vous utilisez Agent Development Kit (ADK) et la CLI Agent, procédez comme suit pour déployer votre agent avec l'identité d'agent activée :

  1. Dans le dossier de votre application d'agent, créez un fichier de configuration nommé .agent_engine_config.json pour activer l'identité de l'agent :

    echo '{ "identity_type": "AGENT_IDENTITY" }' > AGENT_NAME/.agent_engine_config.json
  2. Déployez votre agent sur Agent Runtime sur Gemini Enterprise Agent Platform :

    uv run adk deploy agent_engine AGENT_NAME \
        --project="PROJECT_ID" \
        --region="LOCATION"

    Remplacez les éléments suivants :

    • AGENT_NAME : nom du dossier de votre application d'agent (par exemple, maps_agent).
    • PROJECT_ID : ID de votre projet Cloud de Confiance.
    • LOCATION : région prise en charge dans laquelle vous souhaitez déployer l'agent (par exemple, us-west1).

SDK Python

Si vous effectuez un déploiement de manière programmatique à l'aide du SDK Vertex AI pour Python, utilisez l'option identity_type=AGENT_IDENTITY :

import vertexai
from vertexai import types
from vertexai.agent_engines import AdkApp
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider

# Initialize the Vertex AI client with v1beta1 API for Agent Identity support
client = vertexai.Client(
    project="PROJECT_ID",
    location="LOCATION",
    http_options=dict(api_version="v1beta1")
)

# Register the auth provider in set_up() so that it runs in the deployed
# container. Use the proper wrapper class for your Agent Framework (for example, AdkApp).
class AuthenticatedAdkApp(AdkApp):
    def set_up(self):
        CredentialManager.register_auth_provider(GcpAuthProvider())
        super().set_up()

app = AuthenticatedAdkApp(agent=agent)

# Deploy the agent with Agent Identity enabled
remote_app = client.agent_engines.create(
    agent=app,
    config={
        "identity_type": types.IdentityType.AGENT_IDENTITY,
        "requirements": [
            "google-cloud-aiplatform[agent_engines,adk]",
            "google-adk[agent-identity,mcp]>=2.7.1",
        ],
    },
)

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Cloud de Confiance .
  • LOCATION : région prise en charge dans laquelle vous souhaitez déployer l'agent (par exemple, us-west1).

Étapes suivantes