# The server section specifies the HTTP and gRPC server settings,# including whether or not TLS is enabled and the certificate and# key file locations.server:rate_limit:100 http:enabled:trueport:3476 tls:enabled:truecert: /etc/letsencrypt/live/yourdomain.com/fullchain.pemkey: /etc/letsencrypt/live/yourdomain.com/privkey.pem grpc:port:3478 tls:enabled:truecert: /etc/letsencrypt/live/yourdomain.com/fullchain.pemkey: /etc/letsencrypt/live/yourdomain.com/privkey.pem# The logger section sets the logging level for the service.logger:level: info# The profiler section enables or disables the pprof profiler and# sets the port number for the profiler endpoint.profiler:enabled:trueport:6060# The authn section specifies the authentication method for the service.authn:enabled:truemethod: preshared preshared:keys:[]# The tracer section enables or disables distributed tracing and sets the# exporter and endpoint for the tracing data.tracer:exporter: zipkinendpoint: http://localhost:9411/api/v2/spansenabled:true# The meter section enables or disables metrics collection and sets the# exporter and endpoint for the collected metrics.meter:exporter: otlpendpoint: localhost:4318enabled:true# The service section sets various service-level settings, including whether# or not to use a circuit breaker, and cache sizes for schema, permission,# and relationship data.service:circuit_breaker:false watch:enabled:false schema: cache:number_of_counters: 1_000max_cost: 10MiB permission:bulk_limit:100concurrency_limit:100 cache:number_of_counters: 10_000max_cost: 10MiB# The database section specifies the database engine and connection settings,# including the URI for the database, whether or not to auto-migrate the database,# and connection pool settings.database:engine: postgresuri: postgres://user:password@host:5432/db_nameauto_migrate:falsemax_open_connections:20max_idle_connections:1max_connection_lifetime: 300smax_connection_idle_time: 60s garbage_collection:enabled:trueinterval: 200hwindow: 200htimeout: 5m# distributed configuration settingsdistributed:# Indicates whether the distributed mode is enabled or notenabled:true# The address of the distributed service.# Using a Kubernetes DNS name suggests this service runs in a Kubernetes cluster# under the 'default' namespace and is named 'permify'address:"kubernetes:///permify.default"# The port on which the service is exposedport:"5000"
Permify supports OpenID Connect (OIDC). OIDC provides an identity layer on top of OAuth 2.0 to address the shortcomings
of using OAuth 2.0 for establishing identity.
With this authentication method, you be able to integrate your existing Identity Provider (IDP) to validate JSON Web
Tokens (JWTs) using JSON Web Keys (JWKs). By doing so, only trusted tokens from the IDP will be accepted for
authentication.
Authentication method can be either oidc or preshared.
[ ]
enabled
false
Switch option to enable or disable authentication config.
[x]
audience
-
The audience identifies the intended recipients of the token, typically the API or resource server. It ensures tokens are used only by the authorized party.
[x]
issuer
-
This is the URL of the provider that is responsible for authenticating users. You will use this URL to discover information about the provider in step 1 of the authentication process.
[x]
refresh_interval
15m
The interval at which the authentication information should be refreshed to ensure that it remains valid and up-to-date.
[x]
backoff_interval
12s
The delay between retries when attempting to authenticate if the key is not found. The system will retry at intervals, which may vary, to avoid constant retry attempts.
[x]
backoff_frequency
-
The duration to wait before retrying after a failed authentication attempt. This helps to manage the load on the authentication service by introducing a delay between retries, ensuring that repeated failures do not overwhelm the service or lead to excessive requests. This value should be configured according to the expected response times and reliability of the authentication provider.
[x]
backoff_max_retries
5
The maximum number of retry attempts to make if key is not found.
[x]
valid_methods
[“RS256”,“HS256”]
A list of accepted signing methods for tokens. This ensures that only tokens signed using one of the specified algorithms will be considered valid.
Configurations for the database that points out where your want to store your authorization data (relation tuples,
audits, decision logs, authorization model)
Configurations for the permify service and how it should behave. You can configure the circuit breaker pattern,
configuration watcher, and service specific options for permission and schema services (rate limiting, concurrency
limiting, cache size).
pprof is a performance profiler for Go programs. It allows developers to analyze and understand the performance
characteristics of their code by generating detailed profiles of program execution
A consistent hashing ring ensures data distribution that minimizes reorganization when nodes are added or removed,
improving scalability and performance in distributed systems.”