OIDC tokens and roles claims
ZendHQ requires a valid OpenID Connect id_token
issued by the identity provider. This token must be a JWT containing the claims listed in the following table.
Claim | Description |
---|---|
preferred_username |
The preferred username of the user |
oid |
The object ID of the user |
iss |
The issuer of the token |
aud |
The audience of the token |
exp |
The expiration time of the token |
nbf |
The not-before time of the token |
roles |
An array of strings representing the user's roles |
The roles
claim determines what features a user can access within ZendHQ. These roles must be included in the token and follow a specific naming convention.
ZendHQ uses any roles that follow the format zendhq.<service>[.<permission>]
, where
-
<service> is the name of a valid service (as specified in Valid services)
-
<permission> is optional and specifies a valid permission (as listed in Valid permissions)
Omitting the optional permission grants all permissions for the given service.
Valid services
The following table specifies valid services.
Service | Description |
---|---|
conf |
User has access to configuration, including monitoring rules |
ct |
User has access to code traces |
jq |
User has access to job queue |
mon |
User has access to monitoring events and issues |
zray |
User has access to Z-Ray |
Valid permissions
The following table specifies valid permissions.
Service | Description |
---|---|
read |
User has read access |
write |
User has write access |
execute |
User has intrusive access |
Example roles claims
Roles claim for an administrator with full access to all the services
{
"roles": [
"zendhq.conf",
"zendhq.ct",
"zendhq.jq",
"zendhq.mon",
"zendhq.zray"
]
}
Roles claim for a developer
{
"roles": [
"zendhq.conf.read",
"zendhq.ct.read",
"zendhq.jq.read",
"zendhq.jq.write",
"zendhq.mon.read",
"zendhq.zray.read",
"zendhq.zray.write"
]
}