proxy

package
v0.0.0-test-multiarch Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2024 License: GPL-3.0 Imports: 27 Imported by: 0

README

Smart Core Proxy Driver

This driver maps a local Smart Core Trait to a remote Smart Core Trait. You configure it by specifying some remote host and port 10.100.1.100:23557, the driver will attempt to inspect the remote node by asking the parent trait what children exist. Each child will be announced with the root node for the controller.

Config for this driver looks similar to this:

{
  "type": "proxy", "name": "area-controller-01",
  "nodes": [
    {
      "host": ":23557",
      "tls": {
        "insecureSkipVerify": true,
        "insecureNoClientCert": true
      }
    }
  ]
}

The proxy server uses the controllers standard method of connecting to other Smart Core nodes. This means that if this controller is enrolled with a manager then connections to other enrolled nodes will be trusted and those nodes will trust this controller. When running with self-signed certificates this has the effect of never being able to connect to another node as that node will not trust our self signed certificates.

You may configure the driver to not send a client cert - disabling mTLS - by setting the nodes.tls.insecureNoClientCert property to true. Disabling the verification of server certificates is accomplished by setting nodes.tls.insecureSkipVerify to true. These properties should not be used in production environments!

OAuth 2 support (tenant proxying)

The proxy driver supports using access tokens to authenticate to the remote node. Each node can be configured using an oauth2 section to set the token endpoint and credentials. This is designed to be used with Smart Core's built-in OAuth 2 server, using the tenant token system. The client credentials grant type is used. When enabled, access tokens will automatically be fetched where necessary and refreshed when expired. The same TLS client configuration is used for connecting to the token server specified in tokenEndpoint as the proxied gRPC server specified in host.

Example Node Configuration
{
  "host": "1.2.3.4:23557",
  "oauth2": {
    "tokenEndpoint": "https://1.2.3.4:8443/oauth2/token",
    "clientId": "foobarclientid",
    "clientSecretFile": "/run/secrets/client-secret"
  }
}

Documentation

Index

Constants

View Source
const DriverName = "proxy"

Variables

View Source
var Factory driver.Factory = factory{}

Functions

This section is empty.

Types

type Driver

type Driver struct {
	*service.Service[config.Root]
	// contains filtered or unexported fields
}

func (*Driver) Clear

func (d *Driver) Clear()

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL