# Roles and IAM

## Overview

Identity and Access Management refers to the process of identifying, authorizing, and authenticating participants to interact with the data exchange hub.&#x20;

Role-based access control is implemented at two levels:

1. IAM for Client Gateways: Roles are used to govern each Client Gateway’s access to and permissions within a given application, including the gateway’s ability to interact with the Message Broker, access and read/write information within topics, and authenticating messages to ensure that both sender and recipients are known. IAM for Client Gateways is accomplished using a self-sovereign identity framework, in which each actor participating creates a unique identifier and uses it to enrol their gateway instance in one or more roles.
2. IAM for Users: Each actor participating can govern internal access to their respective Client Gateway by configuring two separate user types: Admin Users, who have permissions to the full suite of features including channel management, API management, and messaging, and Messaging Users, who only have permissions to send, view, and acknowledge messages in the Client Gateway UI. IAM for Users is accomplished with a conventional username/password framework.

***

### User Guide

### Pre-requisites

* User logged into Switchboard
* An organization was created
* An application was created

#### Create a Role

1. In the Application Management page, click on the action button right next to the application that you want to add a new role

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FdBkfSWBieccYbITyJNo1%2FScreenshot%202025-06-13%20at%2011.26.12%E2%80%AFAM.png?alt=media&#x26;token=4d68651b-4182-4e00-aaee-f6f5ace733d1" alt=""><figcaption><p>Create role</p></figcaption></figure>

2. Fill up the mandatory and optional fields in the Create Role pop-up form

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FGPK18spvlZkK10lhVnuv%2FScreenshot%202025-06-13%20at%2011.29.32%E2%80%AFAM.png?alt=media&#x26;token=b41a22a8-78ab-42e8-8ee5-4271ff46d089" alt="" width="375"><figcaption><p>Step 1: New role</p></figcaption></figure>

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2F6wRRXta9iv0ukYcVwwhp%2Fimage.png?alt=media&#x26;token=3fca944a-5a25-45ef-a30d-fbee99c027e9" alt="" width="375"><figcaption><p>Step 2: Set role issuers</p></figcaption></figure>

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FQdOzMyZhN1oZXy5BM6uj%2Fimage.png?alt=media&#x26;token=44c304a5-a47a-4df4-9e97-b15d9dd5180f" alt="" width="375"><figcaption><p>Step 3: Set role revokers</p></figcaption></figure>

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FiHpPavwMsBTPZocCzkhr%2Fimage.png?alt=media&#x26;token=36cd89ba-fa81-44c7-b328-b4838adff109" alt="" width="375"><figcaption><p>Step 4: Set restrictions</p></figcaption></figure>

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FCzNaknCOUySD456lTMSC%2Fimage.png?alt=media&#x26;token=4f07f292-15bc-4c22-b8b8-a2526defd80d" alt="" width="375"><figcaption><p>Step 5: Set validity period</p></figcaption></figure>

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FdEKkf2PYx8VeOF73nBxO%2Fimage.png?alt=media&#x26;token=9c874f00-3968-4d50-9cde-b9fe13bb3023" alt="" width="375"><figcaption><p>Step 6: Set requestor fields</p></figcaption></figure>

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FozgcREgozlG5G9GT1oU3%2Fimage.png?alt=media&#x26;token=bccc0d74-4e68-4d13-8927-3778e980ffe2" alt="" width="375"><figcaption><p>Step 7: Set issuer fields</p></figcaption></figure>

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FNErg1j4ic5bqaymTgUvP%2Fimage.png?alt=media&#x26;token=890ec3d4-0328-473b-ae03-b756c36fc8cb" alt="" width="375"><figcaption><p>Step 8: Confirm Details</p></figcaption></figure>

#### Modify a Role

1. In the Role Governance page, click on the action button right next to the role that you want to edit

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FVbDmBGhNkSgbpJMoiLxR%2FScreenshot%202025-06-13%20at%2011.51.01%E2%80%AFAM.png?alt=media&#x26;token=17bf2788-43ea-453b-8f93-313749e5bfce" alt=""><figcaption><p>Edit role</p></figcaption></figure>

2. Proceed to update your role details, only role name is not allowed to be changed

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FPHfiHLXOq5exTV0ogucz%2FScreenshot%202025-06-13%20at%2011.55.19%E2%80%AFAM.png?alt=media&#x26;token=f526ff5c-f364-4c8d-a4d6-0b3896f674a1" alt="" width="375"><figcaption><p>Update role</p></figcaption></figure>

#### Request a Role

1. Once a role has been set up, proceed to click on action to `Copy Role Enrolment URL` and share it with the new user that wishes to enrol
2. The user will be prompted to sign in using their wallet
3. Fill in the form and submit. The system then will send the enrolment request to the issuer(s) who had previously been specified to approve the role

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FMiPBqhjxGwuh8kIp2fj4%2Fimage.png?alt=media&#x26;token=a8d533dc-7f43-48e5-b776-b84dfe431382" alt=""><figcaption><p>Enrolment form</p></figcaption></figure>

#### Approve/Reject a Role Request

1. Sign in to Switchboard as the issuer who can approve the requested role
2. Check the Task Manager located in the top navigation for notification

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FvAdu6vF2mcUibF0zv87h%2Fimage.png?alt=media&#x26;token=8b2469d4-3f15-4ec1-84e3-132fb41a8d8c" alt="" width="350"><figcaption><p>Task Manager list</p></figcaption></figure>

3. Your enrolments screen should display the request from the new user

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FGYPdesxnXLA8cTWxpkE3%2Fimage.png?alt=media&#x26;token=1f9da6fb-4303-4609-9178-1e006c9aaa25" alt=""><figcaption><p>Enrolment Requests</p></figcaption></figure>

4. `View Request` pop-up under the three vertical dots button contains information about the requestor, chosen role, and the fields from the enrolment form. If you approve this request, you have issued a *verified claim* that the new user can add to that user’s DID document and thereby access your application in the appropriate role. Alternatively, you may also choose to Revoke the request

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2FwyNNbq8q6awgpvSWLZa2%2Fimage.png?alt=media&#x26;token=e5ecf014-72c7-4259-9d86-6566b998d018" alt="" width="375"><figcaption><p>“View Request” pop-up</p></figcaption></figure>

#### Revoke a Role

For approved roles, they may be revoked both onchain and offchain. This option is available in the Enrolment Requests tab. Click on "View Request" option under the three vertical dots button to review before revoke.&#x20;

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2Fjw3c3pWdlbkQQhLznrEN%2FScreenshot%202025-08-08%20at%2012.28.39%E2%80%AFPM.png?alt=media&#x26;token=737a62d6-dafa-4ec9-b45c-7bd139827cf1" alt="" width="375"><figcaption><p>Revoke a role</p></figcaption></figure>

#### Sync Roles to Your DID

Once a role is approve, you should add this newly issued claim to your DID document, so that you have the credentials you need in order to access the application with the appropriate role. In My Enrolments tab, use the “Publish” option under the three vertical dots button or under Issuance Status to do this.

<figure><img src="https://4257445316-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fnf3YeoQlQerc93GsC2Me%2Fuploads%2Fiva0wyfaurX6sSjnBVEA%2Fimage.png?alt=media&#x26;token=8a90d844-ff0d-42b8-bf2a-9d52fffc942d" alt="" width="375"><figcaption><p>Publish credential to DID document </p></figcaption></figure>
