> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Auditer l’accès M2M

> Découvrez comment auditer l’accès M2M pour une application.

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASKED*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

export const codeExample1 = `curl -X GET --location "https://{yourDomain}/api/v2/organizations/{ORG_id}/client-grants/" \
  --header 'authorization: Bearer MGMT_API_ACCESS_TOKEN'`;

export const codeExample2 = `curl -X GET --location "https://{yourDomain}/api/v2/clients?q=client_grant.organization_id%3Aorganization_id" \
  --header 'authorization: Bearer MGMT_API_ACCESS_TOKEN'`;

export const codeExample3 = `curl -X GET --location "https://{yourDomain}/api/v2/client-grants?allow_any_organization=true" \
  --header 'authorization: Bearer MGMT_API_ACCESS_TOKEN'`;

export const codeExample4 = `curl -X GET --location "https://{yourDomain}/api/v2/clients?q=client_grant.allow_any_organization%3Atrue" \
  --header 'authorization: Bearer MGMT_API_ACCESS_TOKEN'`;

L'accès entre machines à Organizations peut être accordé en associant directement une autorisation client à une organisation ou en autorisant l’accès à toute organisation dans les paramètres d’autorisation client. Les deux scénarios peuvent être audités par l’<Tooltip href="/docs/fr-ca/glossary?term=auth0-dashboard" tip="Auth0 Dashboard
Principal produit d’Auth0 pour configurer vos services." cta="Voir le glossaire">Auth0 Dashboard</Tooltip> ou <Tooltip href="/docs/fr-ca/glossary?term=management-api" tip="Management API
Un produit permettant aux clients d’effectuer des tâches administratives." cta="Voir le glossaire">Management API</Tooltip>, où vous pouvez afficher ou récupérer une liste des autorisations de clients associées à une organisation pour une application. Pour en savoir plus sur le fonctionnement de l’accès M2M aux autorisations des organisations, veuillez lire les articles [Configurer votre application pour l’accès M2M](/docs/fr-ca/manage-users/organizations/organizations-for-m2m-applications/configure-your-application-for-m2m-access) et [Autoriser l’accès M2M](/docs/fr-ca/manage-users/organizations/organizations-for-m2m-applications/authorize-m2m-access).

## Accès accordé par association directe

Utilisez l’[Auth0 Dashboard](https://manage.auth0.com/) et la [Management API](https://auth0.com/docs/api/management/v2) pour auditer l’accès M2M pour les autorisations des clients directement associées à une organisation.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Pour consulter les autorisations d’accès à l’application client qui ont été accordées à une organisation spécifique sur Auth0 Dashboard, procédez comme suit :

    1. Naviguez vers **Organizations** et choisissez l’organisation que vous souhaitez inspecter.
    2. Sélectionnez l’onglet **Accès de communication entre machines**. Vous obtiendrez une liste paginée de toutes les applications qui peuvent accéder à une API pour cette organisation via une association directe.
    3. Choisi]\(/docs/images/pplicationpour passer en revue les API autorisées répertoriées pour cette application.

    <Frame>
      <img src="https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/fr-ca/cdy7uua7fh8z/5FVJzuu5yq8IHwpQKdYYU6/4f596be1a92877270cb2c79460c07990/Orgs_-_Acme_M2M.png" alt="" />
    </Frame>
  </Tab>

  <Tab title="Management API">
    Les autorisations des clients associées à une organisation peuvent être récupérées via le point de terminaison [Autorisations client pour l’organisation](/docs/fr-ca/api/management/v2/organizations/get-organization-client-grants) de l’API :

    <AuthCodeBlock children={codeExample1} language="bash" />

    Sinon, si vous souhaitez obtenir des informations sur les applications qui peuvent accéder à au moins une des API d’une organisation, vous pouvez utiliser le paramètre de requête `q` du point de terminaison [Obtenir les clients](/docs/fr-ca/api/management/v2/clients/get-clients) de l’API avec le terme de recherche `client_grant.organization_id:{organization_id}`. Utilisez la syntaxe Lucene, qui est similaire à la [Syntaxe de requête de recherche d’utilisateur](/docs/fr-ca/manage-users/user-search/user-search-query-syntax).

    <AuthCodeBlock children={codeExample2} language="bash" />
  </Tab>
</Tabs>

## Accès accordé à n’importe quelle organisation

Utilisez l’[Auth0 Dashboard](https://manage.auth0.com/) et la [Management API](https://auth0.com/docs/api/management/v2) pour auditer l’accès M2M pour les autorisations qui ont un accès accordé à n’importe quelle organisation.

<Tabs>
  <Tab title="Auth0 Dashboard">
    1. Naviguez vers **Organizations**.
    2. Sélectionnez l’onglet **Accès via communication entre machines**. Vous obtiendrez une liste paginée de toutes les applications qui peuvent accéder à au moins une API pour une organisation.
    3. Choisi]\(/docs/images/pplication pour passer en revue les API autorisées répertoriées pour cette application.

    <Frame>
      <img src="https://mintlify.s3.us-west-1.amazonaws.com/auth0/docs/images/fr-ca/cdy7uua7fh8z/4H3VjVTz0ZGDvV5za9y33m/21ffc94b0fcd383e2c0385ca10a79800/Organizations_-_M2M_tab.png" alt="" />
    </Frame>
  </Tab>

  <Tab title="Management API">
    Les autorisations des clients avec le paramètre `allow_any_organization` peuvent être récupérées via le point de terminaison [Obtenir les autorisations client](https://auth0.com/docs/api/management/v2/client-grants/get-client-grants) de l’API :

    <AuthCodeBlock children={codeExample3} language="bash" />

    Sinon, si vous souhaitez obtenir des informations sur les applications qui peuvent accéder à au moins une des API de n'importe quelle organisation, vous pouvez utiliser le paramètre de requête `q` du point de terminaison [Obtenir les autorisations client](https://auth0.com/docs/api/management/v2/client-grants/get-client-grants) de l'API avec le terme de recherche `client_grant.allow_any_organization:true`. Utilisez la syntaxe Lucene, qui est similaire à la [Syntaxe de requête de recherche d'utilisateur](https://auth0.com/docs/manage-users/user-search/user-search-query-syntax).

    <AuthCodeBlock children={codeExample4} language="bash" />
  </Tab>
</Tabs>

## Rechercher des applications en fonction de l’accès de l’organisation

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les résultats de recherche sont finalement cohérents.
</Callout>

Le tableau suivant montre les termes de recherche pris en charge pour interroger les applications avec le paramètre `q` sur le point de terminaison `/clients` :

| Champ                                            | Description                                                                                      |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------ |
| `client_grant.organization_id:{organization_id}` | Permet de rechercher des applications pouvant accéder à au moins une des API d’une organisation. |
| `client_grant.allow_any_organization:true`       | Permet de rechercher des applications pouvant accéder à au moins une des API d’une organisation. |

## Journaux de locataires

L’accès entre machines pour les organisations se reflète également dans les journaux du locataire. Vous pouvez vérifier l’`organization` associée à la demande dans le journal du locataire `seccft` correspondant.

L’exemple de code suivant est un exemple de journal de locataire `seccft` avec des informations sur l’organisation :

```json lines theme={null}
{
  "date": "2024-10-24T19:06:17.460Z",
  "type": "seccft",
  "description": "Client Credentials for Access Token",
  "connection_id": "",
  "client_id": "qoQKtXuhdSibs1jUeXk3mmCwXoAafGnO",
  "client_name": "jwt.io (Test Application)",
  "ip": "130.41.219.72",
  "user_agent": "Other 0.0.0 / Other 0.0.0",
  "hostname": "david-test.test-aws-abundant-lobster-6004.auth0c.com",
  "user_id": "",
  "user_name": "",
  "organization_id": "org_mPdwToiiHHOtz0SH",
  "organization_name": "cc_test",
  "audience": "https://jwt.io.com",
  "scope": "read:data",
  "$event_schema": {
    "version": "1.0.0"
  },
  "log_id": "90020241024190617517817000000000000001223372036854775862",
  "tenant_name": "david-test",
  "_id": "90020241024190617517817000000000000001223372036854775862",
  "isMobile": false,
  "id": "90020241024190617517817000000000000001223372036854775862"
}
```
