Skip to main content

Public client policy

Bounds what a dynamically-registered or CIMD client may ask for at REGISTRATION: which grant types, scopes, resource indicators and client authentication methods are permitted, and whether open registration is allowed at all. It does not decide what an already-registered client is entitled to — that is client_entitlements, scoped by a binding.

  • Control id: public_client_policy
  • Shape: deny. Segment bindings do not reach this control, because its Rego does not read settings through pbac.segments.settings.
  • Entry points: token, register

Policy data​

pbac.operator.controls.public_client_policy​

  • Role: operator
  • Written by: operator
  • Schema: src/main/resources/schemas/operator-public-client-policy.v1.json
SettingTypeDefault
enabledbooleannone in the schema
cimd.allowed_grant_typesarray of stringnone in the schema
cimd.allowed_scopesarray of stringnone in the schema
cimd.allowed_resource_indicatorsarray of stringnone in the schema
cimd.allowed_auth_methodsarray of one of none, client_secret_post, client_secret_basic, private_key_jwtnone in the schema
dcr.allowed_grant_typesarray of stringnone in the schema
dcr.allowed_scopesarray of stringnone in the schema
dcr.allowed_resource_indicatorsarray of stringnone in the schema
dcr.allowed_auth_methodsarray of one of none, client_secret_post, client_secret_basic, private_key_jwtnone in the schema

Reads​

  • context.client.client_type
  • request.cimd_client_id_url
  • request.grant_types
  • request.token_endpoint_auth_method

Emits​

  • deny
  • reason
  • deny_reasons

Reason codes​

CodeCategoryEntry pointSetting
no_overlapping_grant_typescontrolregisterpbac.operator.controls.public_client_policy#dcr.allowed_grant_types
auth_method_not_allowedcontrolregisterpbac.operator.controls.public_client_policy#dcr.allowed_auth_methods
public_client_credentialscontroltokenpbac.operator.controls.public_client_policy#enabled

Implementation​

KindReferenceFilesRole
rego_inlineoauth.registeropa/policies/oauth/register.regodecides
rego_inlineoauth.tokenopa/policies/oauth/token.regodecides
rego_readerpbac.operator.controls.public_client_policyopa/policies/oauth/public_client.regoreads