Skip to main content

Authorization

NetFoundry authorization is based on resource actions: discrete privileges scoped to a resource type. Accounts come in two flavors — User and ApiAccount — and either can be granted any resource action. See the Authorization API reference for a full list of resource types and actions.

This guide uses curl and jq. Set NETFOUNDRY_API_TOKEN before you start — see Authentication if you don't have a token yet.

Grant a resource action to an identity​

Objective​

Grant permission to Alice to reset any user's secondary authentication factor (MFA).

Steps​

  1. Find the ID of the identity you want to grant the action to. This example looks up Alice by email:

    ACCOUNT=$(
    curl -s "https://gateway.production.netfoundry.io/identity/v1/identities" \
    --header "Authorization: Bearer ${NETFOUNDRY_API_TOKEN}" \
    | jq -r '.[]|select(.email == "alice@example.com")|.id'
    )
  2. Find the ID of the resource type you want to scope the action to. This example uses user-identity:

    RESOURCE_TYPE=$(
    curl -s "https://gateway.production.netfoundry.io/auth/v1/resource-types" \
    --header "Authorization: Bearer ${NETFOUNDRY_API_TOKEN}" \
    | jq -r '.[]|select(.code == "user-identity")|.id'
    )
  3. Find the ID of the resource action to grant. This filters for update-reset-mfa:

    RESOURCE_ACTION=$(
    curl -s "https://gateway.production.netfoundry.io/auth/v1/resource-actions?resourceTypeId=${RESOURCE_TYPE}" \
    --header "Authorization: Bearer ${NETFOUNDRY_API_TOKEN}" \
    | jq -r '.[]|select(.code == "update-reset-mfa")|.id'
    )
  4. Grant the action to the identity:

    curl -s -X POST "https://gateway.production.netfoundry.io/auth/v1/identity-resource-actions" \
    --header "Authorization: Bearer ${NETFOUNDRY_API_TOKEN}" \
    --header "Content-Type: application/json" \
    --data '{
    "identityId": "'"${ACCOUNT}"'",
    "resourceActionId": "'"${RESOURCE_ACTION}"'",
    "path": []
    }'
  5. Verify the action is now granted:

    curl -s "https://gateway.production.netfoundry.io/auth/v1/grants?resourceActionId=${RESOURCE_ACTION}&identityId=${ACCOUNT}" \
    --header "Authorization: Bearer ${NETFOUNDRY_API_TOKEN}" \
    | jq .