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

> Découvrez comment attribuer des rôles à un utilisateur à l’aide de l’Auth0 Dashboard ou de la Management API.

# Attribuer des rôles aux utilisateurs

export const AuthCodeGroup = ({children, dropdown}) => {
  const [processedChildren, setProcessedChildren] = useState(children);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      unsubscribe = window.autorun(() => {
        const processChildren = node => {
          if (typeof node === "string") {
            let processedNode = node;
            for (const [key, value] of window.rootStore.variableStore.values.entries()) {
              const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
              processedNode = processedNode.replaceAll(new RegExp(escapedKey, "g"), value);
            }
            return processedNode;
          } else if (Array.isArray(node)) {
            return node.map(processChildren);
          } else if (node && node.props && node.props.children) {
            return {
              ...node,
              props: {
                ...node.props,
                children: processChildren(node.props.children)
              }
            };
          }
          return node;
        };
        setProcessedChildren(processChildren(children));
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  return <CodeGroup dropdown={dropdown}>{processedChildren}</CodeGroup>;
};

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) + "*****MASQUÉ*****";
          }
          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>;
};

Vous pouvez attribuer des [rôles](/docs/fr-ca/manage-users/access-control/rbac) à un utilisateur à l’aide de l’<Tooltip tip="Produit principal d’Auth0 servant à configurer vos services." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> ou de la <Tooltip tip="Produit principal d’Auth0 servant à configurer vos services." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Management+API">Management API</Tooltip>. Les rôles attribués peuvent être utilisés avec l’ensemble de fonctionnalités Authorization Core pour les API.

<div id="prerequisites">
  ## Prérequis
</div>

* Pour que le contrôle d’accès basé sur les rôles (RBAC) fonctionne correctement, vous devez l’activer pour votre API dans le Dashboard ou au moyen de la Management API. La fonctionnalité Authorization Core est différente de l’Authorization Extension. Pour comparer les deux, consultez [Authorization Core vs. Authorization Extension](/docs/fr-ca/manage-users/access-control/authorization-core-vs-authorization-extension).
* Les rôles sont sélectionnés à partir de valeurs prédéfinies. Si votre liste de rôles est vide, assurez-vous d’[créer des rôles](/docs/fr-ca/manage-users/access-control/configure-core-rbac/roles/create-roles) d’abord.

<div id="dashboard">
  ## Dashboard
</div>

Il existe deux façons d’attribuer un rôle à un utilisateur. Vous pouvez sélectionner un utilisateur dans la liste **Users**, puis lui attribuer un rôle, ou accéder à la page **User Details** (profil de l’utilisateur) d’un utilisateur précis et choisir un rôle à attribuer dans l’onglet **Roles**.

Si vous avez plus de 50 rôles, seuls les 50 premiers s’affichent dans l’onglet **Roles**. Les autres rôles peuvent être attribués au moyen de la Management API.

<div id="assign-roles-in-user-list">
  ### Attribuer des rôles dans la liste des utilisateurs
</div>

1. Accédez à [Dashboard > User Management > Users](https://manage.auth0.com/#/users).
2. Cliquez sur `...` à côté de l’utilisateur que vous voulez modifier, puis sélectionnez **Assign Roles**.
3. Choisissez le ou les rôles à attribuer, puis cliquez sur **Assign**.

<div id="assign-roles-in-user-profile">
  ### Attribuer des rôles dans le profil de l’utilisateur
</div>

Vous pouvez aussi attribuer des rôles aux utilisateurs depuis la page de leur profil.

1. Accédez à [Dashboard > User Management > Users](https://manage.auth0.com/#/users) et cliquez sur le nom de l’utilisateur.
2. Cliquez sur la vue **Roles**, puis sur **Assign Role**.
3. Choisissez le rôle que vous souhaitez attribuer, puis cliquez sur **Assign.**

<div id="management-api">
  ## Management API
</div>

Effectuez une requête `POST` vers le [point de terminaison Assign User Roles](https://auth0.com/docs/api/management/v2#!/Users/post_user_roles). Assurez-vous de remplacer les valeurs de l’espace réservé `USER_ID`, `MGMT_API_ACCESS_TOKEN` et `ROLE_ID` par votre ID d’utilisateur, votre <Tooltip tip="Jeton d’accès : information d’identification Authorization, sous la forme d’une chaîne opaque ou d’un JWT, utilisée pour accéder à une API." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=access+token">jeton d’accès</Tooltip> de la Management API et vos ID de rôle, respectivement.

<AuthCodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://{yourDomain}/api/v2/users/USER_ID/roles' \
    --header 'authorization: Bearer MGMT_API_ACCESS_TOKEN' \
    --header 'cache-control: no-cache' \
    --header 'content-type: application/json' \
    --data '{ "roles": [ "ROLE_ID", "ROLE_ID" ] }'
  ```

  ```csharp C# theme={null}
  var client = new RestClient("https://{yourDomain}/api/v2/users/USER_ID/roles");
  var request = new RestRequest(Method.POST);
  request.AddHeader("content-type", "application/json");
  request.AddHeader("authorization", "Bearer MGMT_API_ACCESS_TOKEN");
  request.AddHeader("cache-control", "no-cache");
  request.AddParameter("application/json", "{ "roles": [ "ROLE_ID", "ROLE_ID" ] }", ParameterType.RequestBody);
  IRestResponse response = client.Execute(request);
  ```

  ```go Go theme={null}
  package main

  import (
  	"fmt"
  	"strings"
  	"net/http"
  	"io/ioutil"
  )

  func main() {

  	url := "https://{yourDomain}/api/v2/users/USER_ID/roles"

  	payload := strings.NewReader("{ "roles": [ "ROLE_ID", "ROLE_ID" ] }")

  	req, _ := http.NewRequest("POST", url, payload)

  	req.Header.Add("content-type", "application/json")
  	req.Header.Add("authorization", "Bearer MGMT_API_ACCESS_TOKEN")
  	req.Header.Add("cache-control", "no-cache")

  	res, _ := http.DefaultClient.Do(req)

  	defer res.Body.Close()
  	body, _ := ioutil.ReadAll(res.Body)

  	fmt.Println(res)
  	fmt.Println(string(body))

  }
  ```

  ```java Java theme={null}
  HttpResponse<String> response = Unirest.post("https://{yourDomain}/api/v2/users/USER_ID/roles")
    .header("content-type", "application/json")
    .header("authorization", "Bearer MGMT_API_ACCESS_TOKEN")
    .header("cache-control", "no-cache")
    .body("{ "roles": [ "ROLE_ID", "ROLE_ID" ] }")
    .asString();
  ```

  ```javascript Node.JS theme={null}
  var axios = require("axios").default;

  var options = {
    method: 'POST',
    url: 'https://{yourDomain}/api/v2/users/USER_ID/roles',
    headers: {
      'content-type': 'application/json',
      authorization: 'Bearer MGMT_API_ACCESS_TOKEN',
      'cache-control': 'no-cache'
    },
    data: {roles: ['ROLE_ID', 'ROLE_ID']}
  };

  axios.request(options).then(function (response) {
    console.log(response.data);
  }).catch(function (error) {
    console.error(error);
  });
  ```

  ```php PHP theme={null}
  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://{yourDomain}/api/v2/users/USER_ID/roles",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "{ "roles": [ "ROLE_ID", "ROLE_ID" ] }",
    CURLOPT_HTTPHEADER => [
      "authorization: Bearer MGMT_API_ACCESS_TOKEN",
      "cache-control: no-cache",
      "content-type: application/json"
    ],
  ]);

  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

  if ($err) {
    echo "cURL Error #:" . $err;
  } else {
    echo $response;
  }
  ```

  ```python Python theme={null}
  import http.client

  conn = http.client.HTTPSConnection("")

  payload = "{ "roles": [ "ROLE_ID", "ROLE_ID" ] }"

  headers = {
      'content-type': "application/json",
      'authorization': "Bearer MGMT_API_ACCESS_TOKEN",
      'cache-control': "no-cache"
      }

  conn.request("POST", "/{yourDomain}/api/v2/users/USER_ID/roles", payload, headers)

  res = conn.getresponse()
  data = res.read()

  print(data.decode("utf-8"))
  ```

  ```ruby Ruby theme={null}
  require 'uri'
  require 'net/http'
  require 'openssl'

  url = URI("https://{yourDomain}/api/v2/users/USER_ID/roles")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER

  request = Net::HTTP::Post.new(url)
  request["content-type"] = 'application/json'
  request["authorization"] = 'Bearer MGMT_API_ACCESS_TOKEN'
  request["cache-control"] = 'no-cache'
  request.body = "{ "roles": [ "ROLE_ID", "ROLE_ID" ] }"

  response = http.request(request)
  puts response.read_body
  ```
</AuthCodeGroup>

| Valeur                  | Description                                                                                                                              |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `USER_ID`               | L’ID de l’utilisateur à mettre à jour.                                                                                                   |
| `MGMT_API_ACCESS_TOKEN` | [Jeton d’accès pour la Management API](https://auth0.com/docs/api/management/v2/tokens) avec les portées `read:roles` et `update:users`. |
| `ROLE_ID`               | ID du ou des rôles à ajouter à l’utilisateur indiqué.                                                                                    |

<div id="learn-more">
  ## En savoir plus
</div>

* [Gérer les rôles du contrôle d’accès par rôles](/docs/fr-ca/manage-users/access-control/configure-core-rbac/roles)
* [Voir les rôles attribués aux utilisateurs](/docs/fr-ca/manage-users/access-control/configure-core-rbac/rbac-users/view-user-roles)
* [Créer des rôles](/docs/fr-ca/manage-users/access-control/configure-core-rbac/roles/create-roles)
* [Supprimer des rôles](/docs/fr-ca/manage-users/access-control/configure-core-rbac/roles/delete-roles)
* [Retirer des rôles aux utilisateurs](/docs/fr-ca/manage-users/access-control/configure-core-rbac/rbac-users/remove-roles-from-users)
* [Ajouter des permissions aux rôles](/docs/fr-ca/manage-users/access-control/configure-core-rbac/roles/add-permissions-to-roles)
