# Custom headers
# About this guide
Follow this guide to learn how to use the X-TrustedTwin
custom header to enhance the rule functionality through using variables passed by the user in the request.
The guide contains the following sections:
Section | Contents |
---|---|
X-TrustedTwin custom header | Introduction to the X-TrustedTwin custom header. |
Introduction | Context and goals of the scenario. |
Preparation | In this section we create a role, a user, and a Twin. We will use these objects to illustrate how the X-TrustedTwin custom header works. |
Scenarios | Example scenarios using the X-TrustedTwin header. |
In this guide we use cURL to provide examples. For more information about cURL, please see our cURL quickstart guide.
# X-TrustedTwin
custom header
The X-TrustedTwin
header enhances the rule functionality through using variables passed by the user in the request to the Trusted Twin API. To learn more about the X-TrustedTwin
custom header, please consult the Custom headers section.
# About the scenarios
In our scenarios, we want a user only to be able to access a Twin if the Twin serial number in the description of a Twin is equal to the serial number passed in the X-TrustedTwin
header in the request. This way there is no need to create multiple users (one per Twin) to allow for this level of access granularity.
# Preparation
First, let's create a role. The role should allow to access a given Twin only if the serial number passed in the X-TrustedTwin
header (DICT.serial
) is equal to the serial number of the Twin (TWIN.serial
):
Next, let's create a user with this role:
And let's create a Twin with the serial number 123 ({"serial": "123"}
):
# Scenarios
Let's test what the user can see depending on the X-TrustedTwin
header passed in the request to retrieve the Twin.
# No X-TrustedTwin
header in the request
Let's start with a request where we don't pass the X-TrustedTwin
header:
The response returns a 403 status code and information that the Twin is not accessible:
# Request with X-TrustedTwin
header {"serial": "123"}
Next, let's pass the encoded {"serial": "123"}
dictionary in the X-TrustedTwin
header (eyJzZXJpYWwiOiAiMTIzIn0=
):
The response returns the details of the Twin:
# Request with X-TrustedTwin
header {"serial": "345"}
Next, let's try to pass the encoded {"serial": "345"}
dictionary in the X-TrustedTwin
header (eyJzZXJpYWwiOiAiMzQ1In0=
):
The response returns a 403 status code with information that the Twin is not accessible to the user:
# Resources
Please consult the Custom headers section for more information on the X-TrustedTwin
custom header.
Was this article helpful?