Skip to main content

Pinned to release v0.9.1. For the current default branch, see Wallet Backend Configuration Reference.

Configuration Reference

This document describes all configuration options for go-wallet-backend. Configuration is loaded from a YAML file and can be overridden by environment variables.

Environment variables use the prefix WALLET_ for the main backend and REGISTRY_ for the registry server.

Table of Contents


server

Environment prefix: WALLET_SERVER

YAML KeyEnv VariableTypeDescription
server.hostWALLET_SERVER_HOSTstring
server.portWALLET_SERVER_PORTinteger
server.admin_hostWALLET_SERVER_ADMIN_HOSTstringAdmin API bind address (defaults to Host)
server.admin_portWALLET_SERVER_ADMIN_PORTintegerInternal admin API port (0 to disable)
server.engine_hostWALLET_SERVER_ENGINE_HOSTstringWebSocket engine bind address (defaults to Host)
server.engine_portWALLET_SERVER_ENGINE_PORTintegerWebSocket engine port (defaults to Port if 0)
server.registry_hostWALLET_SERVER_REGISTRY_HOSTstringRegistry bind address (defaults to Host)
server.registry_portWALLET_SERVER_REGISTRY_PORTintegerVCTM registry port (defaults to 8097)
server.admin_tokenWALLET_SERVER_ADMIN_TOKENstringBearer token for admin API (auto-generated if empty)
server.admin_token_pathWALLET_SERVER_ADMIN_TOKEN_PATHstringPath to file containing admin token
server.rp_idWALLET_SERVER_RP_IDstring
server.rp_originWALLET_SERVER_RP_ORIGINstringRPOrigin is the legacy single-origin setting. Kept for backward compatibility. New deployments should use RPOrigins. When both are set, RPOrigin is prepended.
server.rp_originsWALLET_SERVER_RP_ORIGINSstring list
server.rp_nameWALLET_SERVER_RP_NAMEstring
server.base_urlWALLET_SERVER_BASE_URLstring
server.cors.allowed_originsWALLET_SERVER_CORS_ALLOWED_ORIGINSstring listAllowedOrigins is a list of origins that may access the resource. Use "*" to allow all origins (default for development).
server.cors.allowed_methodsWALLET_SERVER_CORS_ALLOWED_METHODSstring listAllowedMethods is a list of HTTP methods allowed for cross-origin requests.
server.cors.allowed_headersWALLET_SERVER_CORS_ALLOWED_HEADERSstring listAllowedHeaders is a list of request headers allowed in cross-origin requests.
server.cors.exposed_headersWALLET_SERVER_CORS_EXPOSED_HEADERSstring listExposedHeaders is a list of headers that browsers are allowed to access.
server.cors.allow_credentialsWALLET_SERVER_CORS_ALLOW_CREDENTIALSbooleanAllowCredentials indicates whether the request can include credentials. Cannot be true when AllowedOrigins is "*".
server.cors.max_ageWALLET_SERVER_CORS_MAX_AGEintegerMaxAge indicates how long (in seconds) the results of a preflight request can be cached.
server.external_urls.backend_urlWALLET_SERVER_EXTERNAL_URLS_BACKEND_URLstringBackendURL is the external URL for the backend service (for engine → backend calls)
server.external_urls.engine_urlWALLET_SERVER_EXTERNAL_URLS_ENGINE_URLstringEngineURL is the external URL for the engine service (for WebSocket connections)
server.external_urls.registry_urlWALLET_SERVER_EXTERNAL_URLS_REGISTRY_URLstringRegistryURL is the external URL for the registry service (for VCTM lookups)
server.external_urls.admin_urlWALLET_SERVER_EXTERNAL_URLS_ADMIN_URLstringAdminURL is the external URL for the admin API (for inter-service admin calls)
server.served_by_headerWALLET_SERVER_SERVED_BY_HEADERstringServedByHeader sets the X-Served-By response header value. If nil (not configured), defaults to the system hostname. If set to empty string, the header is disabled.
server.tls.enabledWALLET_SERVER_TLS_ENABLEDbooleanEnabled enables TLS for the HTTP listeners
server.tls.cert_fileWALLET_SERVER_TLS_CERT_FILEstringCertFile is the path to the TLS certificate file
server.tls.key_fileWALLET_SERVER_TLS_KEY_FILEstringKeyFile is the path to the TLS private key file
server.tls.min_versionWALLET_SERVER_TLS_MIN_VERSIONstringMinVersion is the minimum TLS version (tls12 or tls13, default: tls12)
server.admin_tls.enabledWALLET_SERVER_ADMIN_TLS_ENABLEDbooleanEnabled enables TLS for the HTTP listeners
server.admin_tls.cert_fileWALLET_SERVER_ADMIN_TLS_CERT_FILEstringCertFile is the path to the TLS certificate file
server.admin_tls.key_fileWALLET_SERVER_ADMIN_TLS_KEY_FILEstringKeyFile is the path to the TLS private key file
server.admin_tls.min_versionWALLET_SERVER_ADMIN_TLS_MIN_VERSIONstringMinVersion is the minimum TLS version (tls12 or tls13, default: tls12)

storage

Environment prefix: WALLET_STORAGE

YAML KeyEnv VariableTypeDescription
storage.typeWALLET_STORAGE_TYPEstringmemory, sqlite, mongodb
storage.sqlite.pathWALLET_STORAGE_SQLITE_DB_PATHstring
storage.mongodb.uriWALLET_STORAGE_MONGODB_URIstring
storage.mongodb.databaseWALLET_STORAGE_MONGODB_DATABASEstring
storage.mongodb.timeoutWALLET_STORAGE_MONGODB_TIMEOUTintegerseconds
storage.mongodb.password_pathWALLET_STORAGE_MONGODB_PASSWORD_PATHstringPath to file containing MongoDB password
storage.mongodb.tls_enabledWALLET_STORAGE_MONGODB_TLS_ENABLEDbooleanTLS/mTLS configuration
storage.mongodb.ca_pathWALLET_STORAGE_MONGODB_CA_PATHstringPath to CA certificate for server verification
storage.mongodb.cert_pathWALLET_STORAGE_MONGODB_CERT_PATHstringPath to client certificate for mTLS
storage.mongodb.key_pathWALLET_STORAGE_MONGODB_KEY_PATHstringPath to client key for mTLS

logging

Environment prefix: WALLET_LOGGING

YAML KeyEnv VariableTypeDescription
logging.levelWALLET_LOGGING_LEVELstringdebug, info, warn, error
logging.formatWALLET_LOGGING_FORMATstringjson, text

jwt

Environment prefix: WALLET_JWT

YAML KeyEnv VariableTypeDescription
jwt.secretWALLET_JWT_SECRETstring
jwt.secret_pathWALLET_JWT_SECRET_PATHstringPath to file containing JWT secret
jwt.expiry_hoursWALLET_JWT_EXPIRY_HOURSinteger
jwt.refresh_daysWALLET_JWT_REFRESH_DAYSinteger
jwt.issuerWALLET_JWT_ISSUERstring

wallet_provider

Environment prefix: WALLET_WALLET_PROVIDER

YAML KeyEnv VariableTypeDescription
wallet_provider.private_key_pathWALLET_WALLET_PROVIDER_PRIVATE_KEY_PATHstring
wallet_provider.certificate_pathWALLET_WALLET_PROVIDER_CERTIFICATE_PATHstring
wallet_provider.ca_cert_pathWALLET_WALLET_PROVIDER_CA_CERT_PATHstring

trust

Environment prefix: WALLET_TRUST

YAML KeyEnv VariableTypeDescription
trust.pdp_urlWALLET_TRUST_PDP_URLstringPDPURL is the URL of the AuthZEN PDP (Policy Decision Point) for trust evaluation. When set, operates in "default deny" mode - trust decisions require PDP approval. When empty, operates in "allow all" mode - requests are always considered trusted.
trust.default_endpointWALLET_TRUST_DEFAULT_ENDPOINTstringDefaultEndpoint is deprecated. Use PDPURL instead. Retained for backward compatibility - if PDPURL is empty and DefaultEndpoint is set, DefaultEndpoint is used. Deprecated: This field will be removed in a future release.
trust.registry_urlWALLET_TRUST_REGISTRY_URLstringRegistryURL is the URL for the VCTM registry service.
trust.timeoutWALLET_TRUST_TIMEOUTintegerTimeout is the HTTP timeout for trust evaluation requests (seconds).
trust.insecure_skip_verifyWALLET_TRUST_INSECURE_SKIP_VERIFYbooleanInsecureSkipVerify disables TLS certificate verification for PDP requests. Use only in development or when the PDP uses a self-signed certificate.
trust.ca_cert_pathWALLET_TRUST_CA_CERT_PATHstringCACertPath is the path to a PEM-encoded CA certificate used to verify the PDP's TLS certificate. Set this when the PDP is signed by an internal/private CA.
trust.issuer.pdp_urlWALLET_TRUST_ISSUER_PDP_URLstringPDPURL overrides the global PDP URL for this specific flow. Empty inherits from global. Set to "none" to explicitly disable trust.
trust.verifier.pdp_urlWALLET_TRUST_VERIFIER_PDP_URLstringPDPURL overrides the global PDP URL for this specific flow. Empty inherits from global. Set to "none" to explicitly disable trust.

session_store

Environment prefix: WALLET_SESSION_STORE

YAML KeyEnv VariableTypeDescription
session_store.typeWALLET_SESSION_STORE_TYPEstringType is the session store type: "memory" or "redis"
session_store.redis.addressWALLET_SESSION_STORE_REDIS_ADDRESSstring
session_store.redis.passwordWALLET_SESSION_STORE_REDIS_PASSWORDstring
session_store.redis.dbWALLET_SESSION_STORE_REDIS_DBinteger
session_store.redis.key_prefixWALLET_SESSION_STORE_REDIS_KEY_PREFIXstring
session_store.default_ttl_hoursWALLET_SESSION_STORE_DEFAULT_TTL_HOURSintegerDefaultTTL is the default session TTL in hours

features

Environment prefix: WALLET_FEATURES

YAML KeyEnv VariableTypeDescription
features.proxy_enabledWALLET_FEATURES_PROXY_ENABLEDbooleanProxyEnabled controls whether the /proxy endpoint is available. Set to false to disable the proxy (requires WebSocket engine for flows). Default: true (for backward compatibility)
features.websocket_requiredWALLET_FEATURES_WEBSOCKET_REQUIREDbooleanWebSocketRequired forces WebSocket transport for credential flows. When true, the proxy endpoint will return an error directing clients to use the WebSocket transport instead. Default: false
features.credential_storage_enabledWALLET_FEATURES_CREDENTIAL_STORAGE_ENABLEDbooleanCredentialStorageEnabled controls whether server-side credential storage endpoints (/storage/vc/*) are available. By default, credentials are stored exclusively in the encrypted client-side private_data blob and the server-side storage path is unused. Set to true only if you need backward-compatible server-side credential storage. Default: false (server-side credential storage disabled)

security

Environment prefix: WALLET_SECURITY

YAML KeyEnv VariableTypeDescription
security.auth_rate_limit.enabledWALLET_SECURITY_AUTH_RATE_LIMIT_ENABLEDbooleanEnabled controls whether rate limiting is active
security.auth_rate_limit.max_attemptsWALLET_SECURITY_AUTH_RATE_LIMIT_MAX_ATTEMPTSintegerMaxAttempts is the maximum number of login/registration attempts per window Default: 10
security.auth_rate_limit.window_secondsWALLET_SECURITY_AUTH_RATE_LIMIT_WINDOW_SECONDSintegerWindowSeconds is the time window for rate limiting (in seconds) Default: 60 (1 minute)
security.auth_rate_limit.lockout_secondsWALLET_SECURITY_AUTH_RATE_LIMIT_LOCKOUT_SECONDSintegerLockoutSeconds is how long to lock out after exceeding the limit Default: 300 (5 minutes)
security.aaguid_blacklist.enabledWALLET_SECURITY_AAGUID_BLACKLIST_ENABLEDbooleanEnabled controls whether AAGUID blacklist checking is active
security.aaguid_blacklist.aaguidsWALLET_SECURITY_AAGUID_BLACKLIST_AAGUIDSstring listAAGUIDs is a list of blocked AAGUIDs (hex-encoded UUIDs without dashes) Example: ["00000000000000000000000000000000"] to block zero AAGUID
security.aaguid_blacklist.reject_unknownWALLET_SECURITY_AAGUID_BLACKLIST_REJECT_UNKNOWNbooleanRejectUnknown rejects authenticators with zero/unknown AAGUIDs Default: false (permissive - allows unknown authenticators)
security.challenge_cleanup.enabledWALLET_SECURITY_CHALLENGE_CLEANUP_ENABLEDbooleanEnabled controls whether the cleanup worker runs
security.challenge_cleanup.interval_secondsWALLET_SECURITY_CHALLENGE_CLEANUP_INTERVAL_SECONDSintegerIntervalSeconds is how often to run cleanup (in seconds) Default: 300 (5 minutes)
security.token_blacklist.enabledWALLET_SECURITY_TOKEN_BLACKLIST_ENABLEDbooleanEnabled controls whether token blacklist checking is active
security.token_blacklist.cleanup_interval_secondsWALLET_SECURITY_TOKEN_BLACKLIST_CLEANUP_INTERVAL_SECONDSintegerCleanupIntervalSeconds is how often to clean up expired blacklist entries Default: 3600 (1 hour)
security.webauthn.attestation_conveyanceWALLET_SECURITY_WEBAUTHN_ATTESTATION_CONVEYANCEstringAttestationConveyance controls how the RP requests attestation from authenticators. Valid values: "none", "indirect", "direct", "enterprise" Default: "none" (recommended for most deployments - avoids certificate validation issues) Use "direct" only if you need to verify authenticator makes/models.

http_client

Environment prefix: WALLET_HTTP_CLIENT

YAML KeyEnv VariableTypeDescription
http_client.proxy_urlWALLET_HTTP_CLIENT_PROXY_URLstringProxyURL is the URL of the HTTP proxy for egress requests (e.g., http://proxy:8080)
http_client.timeoutWALLET_HTTP_CLIENT_TIMEOUTintegerTimeout is the timeout for HTTP requests in seconds (default: 30)
http_client.insecure_skip_verifyWALLET_HTTP_CLIENT_INSECURE_SKIP_VERIFYbooleanInsecureSkipVerify disables TLS certificate verification (not recommended for production)
http_client.allow_private_ipsWALLET_HTTP_CLIENT_ALLOW_PRIVATE_IPSbooleanAllowPrivateIPs permits outbound requests to private/internal/loopback/link-local ranges. Required when credential issuers run on Docker, k8s internal networks, or localhost. Default: false (private/loopback/cloud-metadata IPs are blocked by the SSRF DialContext). Set to true when issuers are hosted on internal networks (dev/staging environments). Env: WALLET_HTTP_CLIENT_ALLOW_PRIVATE_IPS
http_client.allow_httpWALLET_HTTP_CLIENT_ALLOW_HTTPbooleanAllowHTTP permits non-TLS (plain HTTP) connections for metadata resolution. Default: false (HTTPS required). Use only for local development. Env: WALLET_HTTP_CLIENT_ALLOW_HTTP

authzen_proxy

Environment prefix: WALLET_AUTHZEN_PROXY

YAML KeyEnv VariableTypeDescription
authzen_proxy.enabledWALLET_AUTHZEN_PROXY_ENABLEDbooleanEnabled controls whether the /v1/evaluate endpoint is available. Default: true (set in defaultConfig)
authzen_proxy.pdp_urlWALLET_AUTHZEN_PROXY_PDP_URLstringPDPURL is the backend PDP URL to proxy requests to. If empty, uses the global trust.pdp_url configuration.
authzen_proxy.timeoutWALLET_AUTHZEN_PROXY_TIMEOUTintegerTimeout is the timeout for PDP requests in seconds. Default: 30
authzen_proxy.rules_fileWALLET_AUTHZEN_PROXY_RULES_FILEstringRulesFile is the path to a SPOCP rules file for query authorization. If empty, default wallet rules are used.
authzen_proxy.allow_resolutionWALLET_AUTHZEN_PROXY_ALLOW_RESOLUTIONbooleanAllowResolution controls whether resolution-only requests are allowed. Resolution requests fetch metadata (DID documents, entity configs) without key validation. Default: true
authzen_proxy.fail_open_on_tenant_lookup_errorWALLET_AUTHZEN_PROXY_FAIL_OPEN_ON_TENANT_LOOKUP_ERRORbooleanFailOpenOnTenantLookupError controls behavior when per-tenant PDP lookup fails. If false (default), tenant lookup errors return an error to the client. If true, falls back to the global PDP URL on lookup errors. Security note: fail-closed (false) prevents bypassing per-tenant security policies.

Registry Server

The registry server (cmd/registry) has its own configuration file. It serves VCTM (Verifiable Credential Type Metadata) fetched from upstream registries.

Environment prefix: REGISTRY

registry.server

Server configuration

Environment prefix: REGISTRY_SERVER

YAML KeyEnv VariableTypeDescription
server.hostREGISTRY_SERVER_HOSTstring
server.portREGISTRY_SERVER_PORTinteger
server.served_by_headerREGISTRY_SERVER_SERVEDBYHEADERstring
server.tls.enabledREGISTRY_SERVER_TLS_ENABLEDbooleanEnabled enables TLS for the HTTP listeners
server.tls.cert_fileREGISTRY_SERVER_TLS_CERT_FILEstringCertFile is the path to the TLS certificate file
server.tls.key_fileREGISTRY_SERVER_TLS_KEY_FILEstringKeyFile is the path to the TLS private key file
server.tls.min_versionREGISTRY_SERVER_TLS_MIN_VERSIONstringMinVersion is the minimum TLS version (tls12 or tls13, default: tls12)

registry.source

Source is the legacy single-registry source configuration. Use Sources for multi-registry support. If Sources is empty, Source is used.

Environment prefix: REGISTRY_SOURCE

YAML KeyEnv VariableTypeDescription
source.urlREGISTRY_SOURCE_URLstringURL of the upstream registry index. Supports both the legacy vctm-registry.json format and the TS11-compliant /api/v1/schemas.json endpoint – the format is auto-detected from the response.
source.local_overridesREGISTRY_SOURCE_LOCAL_OVERRIDESstring listLocalOverrides is a list of local file or directory paths containing VCTM JSON files. These are loaded at startup and take priority over entries fetched from the remote registry. Directories are scanned for *.json files. Entries are keyed by their "vct" field.
source.poll_intervalREGISTRY_SOURCE_POLL_INTERVALdurationPollInterval is how often to poll the upstream registry for updates
source.timeoutREGISTRY_SOURCE_TIMEOUTdurationTimeout for HTTP requests to the upstream registry

registry.sources

Sources is an ordered list of remote registry URLs to fetch from. Schemas fetched from later sources in the list overwrite earlier ones, allowing a registry to extend or override another. When non-empty, the Source.URL field is ignored for remote fetching (Source.PollInterval and Source.LocalOverrides remain global settings). (list of entries, each with the fields below)

Environment prefix: REGISTRY_SOURCES

YAML KeyEnv VariableTypeDescription
sources[*].urlREGISTRY_SOURCES_URLstringURL of the upstream registry index. Supports both the legacy vctm-registry.json format and the TS11-compliant /api/v1/schemas.json endpoint – the format is auto-detected from the response.
sources[*].timeoutREGISTRY_SOURCES_TIMEOUTdurationTimeout for HTTP requests to this source. Zero means no per-source timeout (the shared http.Client timeout applies).

registry.cache

Cache configuration

Environment prefix: REGISTRY_CACHE

YAML KeyEnv VariableTypeDescription
cache.pathREGISTRY_CACHE_PATHstringPath to the cache file (JSON format)
cache.max_ageREGISTRY_CACHE_MAX_AGEdurationMaxAge is the maximum age of cached data before forcing a refresh

registry.dynamic_cache

DynamicCache configuration for on-demand URL fetching

Environment prefix: REGISTRY_DYNAMIC_CACHE

YAML KeyEnv VariableTypeDescription
dynamic_cache.enabledREGISTRY_DYNAMIC_CACHE_ENABLEDbooleanEnabled controls whether dynamic URL fetching is active
dynamic_cache.default_ttlREGISTRY_DYNAMIC_CACHE_DEFAULT_TTLdurationDefaultTTL is the default cache TTL for dynamically fetched VCTMs when no HTTP cache headers are present
dynamic_cache.max_ttlREGISTRY_DYNAMIC_CACHE_MAX_TTLdurationMaxTTL is the maximum cache TTL to respect from HTTP headers Values larger than this will be capped
dynamic_cache.min_ttlREGISTRY_DYNAMIC_CACHE_MIN_TTLdurationMinTTL is the minimum cache TTL; shorter values from HTTP headers will be bumped up to this value
dynamic_cache.timeoutREGISTRY_DYNAMIC_CACHE_TIMEOUTdurationTimeout for HTTP requests when fetching VCTMs dynamically
dynamic_cache.allowed_hostsREGISTRY_DYNAMIC_CACHE_ALLOWED_HOSTSstring listAllowedHosts is an optional list of host patterns (regexps) that are allowed for dynamic fetching. If empty, all HTTPS hosts are allowed.

registry.image_embed

ImageEmbed configuration for embedding images as data URIs

Environment prefix: REGISTRY_IMAGE_EMBED

YAML KeyEnv VariableTypeDescription
image_embed.enabledREGISTRY_IMAGE_EMBED_ENABLEDbooleanEnabled controls whether image embedding is active
image_embed.max_image_sizeREGISTRY_IMAGE_EMBED_MAX_IMAGE_SIZEintegerMaxImageSize is the maximum size in bytes for images to embed Images larger than this will be left as URLs
image_embed.timeoutREGISTRY_IMAGE_EMBED_TIMEOUTdurationTimeout for fetching individual images
image_embed.concurrent_fetchesREGISTRY_IMAGE_EMBED_CONCURRENT_FETCHESintegerConcurrentFetches is the maximum number of concurrent image fetches

registry.filter

Filter configuration for include/exclude patterns

Environment prefix: REGISTRY_FILTER

YAML KeyEnv VariableTypeDescription
filter.include_patternsREGISTRY_FILTER_INCLUDE_PATTERNSstring listIncludePatterns are regexps that VCT IDs must match to be included If empty, all VCT IDs are included (unless excluded)
filter.exclude_patternsREGISTRY_FILTER_EXCLUDE_PATTERNSstring listExcludePatterns are regexps that cause VCT IDs to be excluded

registry.rate_limit

Rate limiting configuration

Environment prefix: REGISTRY_RATE_LIMIT

YAML KeyEnv VariableTypeDescription
rate_limit.enabledREGISTRY_RATE_LIMIT_ENABLEDbooleanEnabled controls whether rate limiting is active
rate_limit.authenticated_rpmREGISTRY_RATE_LIMIT_AUTHENTICATED_RPMintegerAuthenticatedRPM is requests per minute for authenticated clients
rate_limit.unauthenticated_rpmREGISTRY_RATE_LIMIT_UNAUTHENTICATED_RPMintegerUnauthenticatedRPM is requests per minute for unauthenticated clients
rate_limit.burst_multiplierREGISTRY_RATE_LIMIT_BURST_MULTIPLIERintegerBurstMultiplier allows bursts of this multiple of the rate limit

registry.jwt

JWT configuration for authentication

Environment prefix: REGISTRY_JWT

YAML KeyEnv VariableTypeDescription
jwt.secretREGISTRY_JWT_SECRETstringSecret is the shared secret for validating JWT signatures (HMAC)
jwt.issuerREGISTRY_JWT_ISSUERstringIssuer is the expected issuer claim in the JWT
jwt.require_authREGISTRY_JWT_REQUIRE_AUTHbooleanRequireAuth requires authentication for all requests (if false, unauthenticated access is allowed)

registry.logging

Logging configuration

Environment prefix: REGISTRY_LOGGING

YAML KeyEnv VariableTypeDescription
logging.levelREGISTRY_LOGGING_LEVELstringdebug, info, warn, error
logging.formatREGISTRY_LOGGING_FORMATstringjson, text

registry.http_client

HTTPClient configuration for outbound requests (proxy, TLS settings)

Environment prefix: REGISTRY_HTTP_CLIENT

YAML KeyEnv VariableTypeDescription
http_client.proxy_urlREGISTRY_HTTP_CLIENT_PROXY_URLstringProxyURL is the URL of the HTTP proxy for egress requests (e.g., http://proxy:8080)
http_client.timeoutREGISTRY_HTTP_CLIENT_TIMEOUTintegerTimeout is the timeout for HTTP requests in seconds (default: 30)
http_client.insecure_skip_verifyREGISTRY_HTTP_CLIENT_INSECURE_SKIP_VERIFYbooleanInsecureSkipVerify disables TLS certificate verification (not recommended for production)
http_client.allow_private_ipsREGISTRY_HTTP_CLIENT_ALLOW_PRIVATE_IPSbooleanAllowPrivateIPs permits outbound requests to private/internal/loopback/link-local ranges. Required when credential issuers run on Docker, k8s internal networks, or localhost. Default: false (private/loopback/cloud-metadata IPs are blocked by the SSRF DialContext). Set to true when issuers are hosted on internal networks (dev/staging environments). Env: WALLET_HTTP_CLIENT_ALLOW_PRIVATE_IPS
http_client.allow_httpREGISTRY_HTTP_CLIENT_ALLOW_HTTPbooleanAllowHTTP permits non-TLS (plain HTTP) connections for metadata resolution. Default: false (HTTPS required). Use only for local development. Env: WALLET_HTTP_CLIENT_ALLOW_HTTP