mirror of
https://github.com/absmach/supermq.git
synced 2026-06-23 06:40:19 +00:00
NOISSUE - Fix Auth typo (#1319)
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
This commit is contained in:
@@ -24,7 +24,7 @@ MF_JAEGER_URL=jaeger:6831
|
||||
|
||||
## Core Services
|
||||
|
||||
### AuthN
|
||||
### Auth
|
||||
MF_AUTH_LOG_LEVEL=debug
|
||||
MF_AUTH_HTTP_PORT=8189
|
||||
MF_AUTH_GRPC_PORT=8181
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
# Auth - Authentication and Authorization service
|
||||
|
||||
Auth service provides authentication features as an API for managing authentication keys. User service is using AuthN service gRPC API to obtain login token or password reset token. Authentication key consists of the following fields:
|
||||
Auth service provides authentication features as an API for managing authentication keys. User service is using Auth service gRPC API to obtain login token or password reset token. Authentication key consists of the following fields:
|
||||
- ID - key ID
|
||||
- Type - one of the three types described below
|
||||
- IssuerID - an ID of the Mainflux User who issued the key
|
||||
@@ -50,8 +50,8 @@ default values.
|
||||
| MF_AUTH_DB_SSL_CERT | Path to the PEM encoded certificate file | |
|
||||
| MF_AUTH_DB_SSL_KEY | Path to the PEM encoded key file | |
|
||||
| MF_AUTH_DB_SSL_ROOT_CERT | Path to the PEM encoded root certificate file | |
|
||||
| MF_AUTH_HTTP_PORT | Authn service HTTP port | 8180 |
|
||||
| MF_AUTH_GRPC_PORT | Authn service gRPC port | 8181 |
|
||||
| MF_AUTH_HTTP_PORT | Auth service HTTP port | 8180 |
|
||||
| MF_AUTH_GRPC_PORT | Auth service gRPC port | 8181 |
|
||||
| MF_AUTH_SERVER_CERT | Path to server certificate in pem format | |
|
||||
| MF_AUTH_SERVER_KEY | Path to server key in pem format | |
|
||||
| MF_AUTH_SECRET | String used for signing tokens | auth |
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// Copyright (c) Mainflux
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Package api contains implementation of AuthN service HTTP API.
|
||||
// Package api contains implementation of Auth service HTTP API.
|
||||
package api
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright (c) Mainflux
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Package grpc contains implementation of AuthN service gRPC API.
|
||||
// Package grpc contains implementation of Auth service gRPC API.
|
||||
package grpc
|
||||
|
||||
@@ -27,7 +27,7 @@ type grpcServer struct {
|
||||
members kitgrpc.Handler
|
||||
}
|
||||
|
||||
// NewServer returns new AuthnServiceServer instance.
|
||||
// NewServer returns new AuthServiceServer instance.
|
||||
func NewServer(tracer opentracing.Tracer, svc auth.Service) mainflux.AuthServiceServer {
|
||||
return &grpcServer{
|
||||
issue: kitgrpc.NewServer(
|
||||
|
||||
+2
-2
@@ -48,7 +48,7 @@ var (
|
||||
// Authn specifies an API that must be fullfiled by the domain service
|
||||
// implementation, and all of its decorators (e.g. logging & metrics).
|
||||
// Token is a string value of the actual Key and is used to authenticate
|
||||
// an Authn service request.
|
||||
// an Auth service request.
|
||||
type Authn interface {
|
||||
// Issue issues a new Key, returning its token value alongside.
|
||||
Issue(ctx context.Context, token string, key Key) (Key, string, error)
|
||||
@@ -67,7 +67,7 @@ type Authn interface {
|
||||
Identify(ctx context.Context, token string) (Identity, error)
|
||||
}
|
||||
|
||||
// Authz specifies an API for authorization, authorization will be implemented
|
||||
// Authz specifies an API for the authorization and will be implemented
|
||||
// by evaluation of policies.
|
||||
type Authz interface {
|
||||
// Authorize checks access rights
|
||||
|
||||
+7
-7
@@ -36,7 +36,7 @@ Thing configuration also contains the so-called `external ID` and `external key`
|
||||
The service is configured using the environment variables presented in the following table. Note that any unset variables will be replaced with their default values.
|
||||
|
||||
| Variable | Description | Default |
|
||||
|-------------------------------|-------------------------------------------------------------------------|----------------------- |
|
||||
|-------------------------------|-------------------------------------------------------------------------|----------------------------------|
|
||||
| MF_BOOTSTRAP_LOG_LEVEL | Log level for Bootstrap (debug, info, warn, error) | error |
|
||||
| MF_BOOTSTRAP_DB_HOST | Database host address | localhost |
|
||||
| MF_BOOTSTRAP_DB_PORT | Database host port | 5432 |
|
||||
@@ -63,8 +63,8 @@ The service is configured using the environment variables presented in the follo
|
||||
| MF_BOOTSTRAP_ES_DB | Bootstrap service event source database | 0 |
|
||||
| MF_BOOTSTRAP_EVENT_CONSUMER | Bootstrap service event source consumer name | bootstrap |
|
||||
| MF_JAEGER_URL | Jaeger server URL | localhost:6831 |
|
||||
| MF_AUTH_GRPC_URL | AuthN service gRPC URL | localhost:8181 |
|
||||
| MF_AUTH_GRPC_TIMEOUT | AuthN service gRPC request timeout in seconds | 1s |
|
||||
| MF_AUTH_GRPC_URL | Auth service gRPC URL | localhost:8181 |
|
||||
| MF_AUTH_GRPC_TIMEOUT | Auth service gRPC request timeout in seconds | 1s |
|
||||
|
||||
## Deployment
|
||||
|
||||
@@ -109,8 +109,8 @@ version: "3.7"
|
||||
MF_BOOTSTRAP_ES_DB: [Bootstrap service event source database]
|
||||
MF_BOOTSTRAP_EVENT_CONSUMER: [Bootstrap service event source consumer name]
|
||||
MF_JAEGER_URL: [Jaeger server URL]
|
||||
MF_AUTH_GRPC_URL: [AuthN service gRPC URL]
|
||||
MF_AUTH_GRPC_TIMEOUT: [AuthN service gRPC request timeout in seconds]
|
||||
MF_AUTH_GRPC_URL: [Auth service gRPC URL]
|
||||
MF_AUTH_GRPC_TIMEOUT: [Auth service gRPC request timeout in seconds]
|
||||
```
|
||||
|
||||
To start the service outside of the container, execute the following shell script:
|
||||
@@ -147,8 +147,8 @@ MF_BOOTSTRAP_SERVER_KEY=[Path to server key] \
|
||||
MF_SDK_BASE_URL=[Base SDK URL for the Mainflux services] \
|
||||
MF_SDK_THINGS_PREFIX=[SDK prefix for Things service] \
|
||||
MF_JAEGER_URL=[Jaeger server URL] \
|
||||
MF_AUTH_GRPC_URL=[AuthN service gRPC URL] \
|
||||
MF_AUTH_GRPC_TIMEOUT=[AuthN service gRPC request timeout in seconds] \
|
||||
MF_AUTH_GRPC_URL=[Auth service gRPC URL] \
|
||||
MF_AUTH_GRPC_TIMEOUT=[Auth service gRPC request timeout in seconds] \
|
||||
$GOBIN/mainflux-bootstrap
|
||||
```
|
||||
|
||||
|
||||
+5
-2
@@ -63,6 +63,7 @@ type Service interface {
|
||||
RevokeCert(ctx context.Context, token, thingID string) (Revoke, error)
|
||||
}
|
||||
|
||||
// Config defines the service parameters
|
||||
type Config struct {
|
||||
LogLevel string
|
||||
ClientTLS bool
|
||||
@@ -73,8 +74,8 @@ type Config struct {
|
||||
BaseURL string
|
||||
ThingsPrefix string
|
||||
JaegerURL string
|
||||
AuthnURL string
|
||||
AuthnTimeout time.Duration
|
||||
AuthURL string
|
||||
AuthTimeout time.Duration
|
||||
SignTLSCert tls.Certificate
|
||||
SignX509Cert *x509.Certificate
|
||||
SignRSABits int
|
||||
@@ -104,10 +105,12 @@ func New(auth mainflux.AuthServiceClient, certs Repository, sdk mfsdk.SDK, confi
|
||||
}
|
||||
}
|
||||
|
||||
// Revoke defines the conditions to revoke a certificate
|
||||
type Revoke struct {
|
||||
RevocationTime time.Time `mapstructure:"revocation_time"`
|
||||
}
|
||||
|
||||
// Cert defines the certificate paremeters
|
||||
type Cert struct {
|
||||
OwnerID string `json:"owner_id" mapstructure:"owner_id"`
|
||||
ThingID string `json:"thing_id" mapstructure:"thing_id"`
|
||||
|
||||
+13
-13
@@ -64,8 +64,8 @@ const (
|
||||
defESDB = "0"
|
||||
defESConsumerName = "bootstrap"
|
||||
defJaegerURL = ""
|
||||
defAuthnURL = "localhost:8181"
|
||||
defAuthnTimeout = "1s"
|
||||
defAuthURL = "localhost:8181"
|
||||
defAuthTimeout = "1s"
|
||||
|
||||
envLogLevel = "MF_BOOTSTRAP_LOG_LEVEL"
|
||||
envDBHost = "MF_BOOTSTRAP_DB_HOST"
|
||||
@@ -93,8 +93,8 @@ const (
|
||||
envESDB = "MF_BOOTSTRAP_ES_DB"
|
||||
envESConsumerName = "MF_BOOTSTRAP_EVENT_CONSUMER"
|
||||
envJaegerURL = "MF_JAEGER_URL"
|
||||
envAuthnURL = "MF_AUTH_GRPC_URL"
|
||||
envAuthnTimeout = "MF_AUTH_GRPC_TIMEOUT"
|
||||
envAuthURL = "MF_AUTH_GRPC_URL"
|
||||
envAuthTimeout = "MF_AUTH_GRPC_TIMEOUT"
|
||||
)
|
||||
|
||||
type config struct {
|
||||
@@ -116,8 +116,8 @@ type config struct {
|
||||
esDB string
|
||||
esConsumerName string
|
||||
jaegerURL string
|
||||
authnURL string
|
||||
authnTimeout time.Duration
|
||||
authURL string
|
||||
authTimeout time.Duration
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -143,7 +143,7 @@ func main() {
|
||||
authConn := connectToAuth(cfg, logger)
|
||||
defer authConn.Close()
|
||||
|
||||
auth := authapi.NewClient(authTracer, authConn, cfg.authnTimeout)
|
||||
auth := authapi.NewClient(authTracer, authConn, cfg.authTimeout)
|
||||
|
||||
svc := newService(auth, db, logger, esClient, cfg)
|
||||
errs := make(chan error, 2)
|
||||
@@ -178,9 +178,9 @@ func loadConfig() config {
|
||||
SSLRootCert: mainflux.Env(envDBSSLRootCert, defDBSSLRootCert),
|
||||
}
|
||||
|
||||
authnTimeout, err := time.ParseDuration(mainflux.Env(envAuthnTimeout, defAuthnTimeout))
|
||||
authTimeout, err := time.ParseDuration(mainflux.Env(envAuthTimeout, defAuthTimeout))
|
||||
if err != nil {
|
||||
log.Fatalf("Invalid %s value: %s", envAuthnTimeout, err.Error())
|
||||
log.Fatalf("Invalid %s value: %s", envAuthTimeout, err.Error())
|
||||
}
|
||||
encKey, err := hex.DecodeString(mainflux.Env(envEncryptKey, defEncryptKey))
|
||||
if err != nil {
|
||||
@@ -212,8 +212,8 @@ func loadConfig() config {
|
||||
esDB: mainflux.Env(envESDB, defESDB),
|
||||
esConsumerName: mainflux.Env(envESConsumerName, defESConsumerName),
|
||||
jaegerURL: mainflux.Env(envJaegerURL, defJaegerURL),
|
||||
authnURL: mainflux.Env(envAuthnURL, defAuthnURL),
|
||||
authnTimeout: authnTimeout,
|
||||
authURL: mainflux.Env(envAuthURL, defAuthURL),
|
||||
authTimeout: authTimeout,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -311,9 +311,9 @@ func connectToAuth(cfg config, logger logger.Logger) *grpc.ClientConn {
|
||||
logger.Info("gRPC communication is not encrypted")
|
||||
}
|
||||
|
||||
conn, err := grpc.Dial(cfg.authnURL, opts...)
|
||||
conn, err := grpc.Dial(cfg.authURL, opts...)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("Failed to connect to authn service: %s", err))
|
||||
logger.Error(fmt.Sprintf("Failed to connect to auth service: %s", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
|
||||
+15
-15
@@ -56,8 +56,8 @@ const (
|
||||
defBaseURL = "http://localhost"
|
||||
defThingsPrefix = ""
|
||||
defJaegerURL = ""
|
||||
defAuthnURL = "localhost:8181"
|
||||
defAuthnTimeout = "1s"
|
||||
defAuthURL = "localhost:8181"
|
||||
defAuthTimeout = "1s"
|
||||
|
||||
defSignCAPath = "ca.crt"
|
||||
defSignCAKeyPath = "ca.key"
|
||||
@@ -88,8 +88,8 @@ const (
|
||||
envBaseURL = "MF_SDK_BASE_URL"
|
||||
envThingsPrefix = "MF_SDK_THINGS_PREFIX"
|
||||
envJaegerURL = "MF_JAEGER_URL"
|
||||
envAuthnURL = "MF_AUTH_GRPC_URL"
|
||||
envAuthnTimeout = "MF_AUTH_GRPC_TIMEOUT"
|
||||
envAuthURL = "MF_AUTH_GRPC_URL"
|
||||
envAuthTimeout = "MF_AUTH_GRPC_TIMEOUT"
|
||||
|
||||
envSignCAPath = "MF_CERTS_SIGN_CA_PATH"
|
||||
envSignCAKey = "MF_CERTS_SIGN_CA_KEY_PATH"
|
||||
@@ -125,8 +125,8 @@ type config struct {
|
||||
baseURL string
|
||||
thingsPrefix string
|
||||
jaegerURL string
|
||||
authnURL string
|
||||
authnTimeout time.Duration
|
||||
authURL string
|
||||
authTimeout time.Duration
|
||||
// Sign and issue certificates
|
||||
// without 3rd party PKI
|
||||
signCAPath string
|
||||
@@ -167,7 +167,7 @@ func main() {
|
||||
authConn := connectToAuth(cfg, logger)
|
||||
defer authConn.Close()
|
||||
|
||||
auth := authapi.NewClient(authTracer, authConn, cfg.authnTimeout)
|
||||
auth := authapi.NewClient(authTracer, authConn, cfg.authTimeout)
|
||||
|
||||
svc := newService(auth, db, logger, nil, tlsCert, caCert, cfg, pkiClient)
|
||||
errs := make(chan error, 2)
|
||||
@@ -201,9 +201,9 @@ func loadConfig() config {
|
||||
SSLRootCert: mainflux.Env(envDBSSLRootCert, defDBSSLRootCert),
|
||||
}
|
||||
|
||||
authnTimeout, err := time.ParseDuration(mainflux.Env(envAuthnTimeout, defAuthnTimeout))
|
||||
authTimeout, err := time.ParseDuration(mainflux.Env(envAuthTimeout, defAuthTimeout))
|
||||
if err != nil {
|
||||
log.Fatalf("Invalid %s value: %s", envAuthnTimeout, err.Error())
|
||||
log.Fatalf("Invalid %s value: %s", envAuthTimeout, err.Error())
|
||||
}
|
||||
|
||||
signRSABits, err := strconv.Atoi(mainflux.Env(envSignRSABits, defSignRSABits))
|
||||
@@ -222,8 +222,8 @@ func loadConfig() config {
|
||||
baseURL: mainflux.Env(envBaseURL, defBaseURL),
|
||||
thingsPrefix: mainflux.Env(envThingsPrefix, defThingsPrefix),
|
||||
jaegerURL: mainflux.Env(envJaegerURL, defJaegerURL),
|
||||
authnURL: mainflux.Env(envAuthnURL, defAuthnURL),
|
||||
authnTimeout: authnTimeout,
|
||||
authURL: mainflux.Env(envAuthURL, defAuthURL),
|
||||
authTimeout: authTimeout,
|
||||
|
||||
signCAKeyPath: mainflux.Env(envSignCAKey, defSignCAKeyPath),
|
||||
signCAPath: mainflux.Env(envSignCAPath, defSignCAPath),
|
||||
@@ -277,9 +277,9 @@ func connectToAuth(cfg config, logger logger.Logger) *grpc.ClientConn {
|
||||
logger.Info("gRPC communication is not encrypted")
|
||||
}
|
||||
|
||||
conn, err := grpc.Dial(cfg.authnURL, opts...)
|
||||
conn, err := grpc.Dial(cfg.authURL, opts...)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("Failed to connect to authn service: %s", err))
|
||||
logger.Error(fmt.Sprintf("Failed to connect to auth service: %s", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
@@ -323,8 +323,8 @@ func newService(auth mainflux.AuthServiceClient, db *sqlx.DB, logger mflog.Logge
|
||||
BaseURL: cfg.baseURL,
|
||||
ThingsPrefix: cfg.thingsPrefix,
|
||||
JaegerURL: cfg.jaegerURL,
|
||||
AuthnURL: cfg.authnURL,
|
||||
AuthnTimeout: cfg.authnTimeout,
|
||||
AuthURL: cfg.authURL,
|
||||
AuthTimeout: cfg.authTimeout,
|
||||
SignTLSCert: tlsCert,
|
||||
SignX509Cert: x509Cert,
|
||||
SignHoursValid: cfg.signHoursValid,
|
||||
|
||||
+1
-1
@@ -294,7 +294,7 @@ func connectToAuth(cfg config, logger logger.Logger) *grpc.ClientConn {
|
||||
|
||||
conn, err := grpc.Dial(cfg.authnURL, opts...)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("Failed to connect to authn service: %s", err))
|
||||
logger.Error(fmt.Sprintf("Failed to connect to auth service: %s", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
|
||||
+13
-13
@@ -59,8 +59,8 @@ const (
|
||||
defCACerts = ""
|
||||
defChannelID = ""
|
||||
defNatsURL = "nats://localhost:4222"
|
||||
defAuthnURL = "localhost:8181"
|
||||
defAuthnTimeout = "1s"
|
||||
defAuthURL = "localhost:8181"
|
||||
defAuthTimeout = "1s"
|
||||
|
||||
envLogLevel = "MF_TWINS_LOG_LEVEL"
|
||||
envHTTPPort = "MF_TWINS_HTTP_PORT"
|
||||
@@ -79,8 +79,8 @@ const (
|
||||
envCACerts = "MF_TWINS_CA_CERTS"
|
||||
envChannelID = "MF_TWINS_CHANNEL_ID"
|
||||
envNatsURL = "MF_NATS_URL"
|
||||
envAuthnURL = "MF_AUTH_GRPC_URL"
|
||||
envAuthnTimeout = "MF_AUTH_GRPC_TIMEOUT"
|
||||
envAuthURL = "MF_AUTH_GRPC_URL"
|
||||
envAuthTimeout = "MF_AUTH_GRPC_TIMEOUT"
|
||||
)
|
||||
|
||||
type config struct {
|
||||
@@ -100,8 +100,8 @@ type config struct {
|
||||
channelID string
|
||||
natsURL string
|
||||
|
||||
authnURL string
|
||||
authnTimeout time.Duration
|
||||
authURL string
|
||||
authTimeout time.Duration
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -158,9 +158,9 @@ func loadConfig() config {
|
||||
log.Fatalf("Invalid value passed for %s\n", envClientTLS)
|
||||
}
|
||||
|
||||
authnTimeout, err := time.ParseDuration(mainflux.Env(envAuthnTimeout, defAuthnTimeout))
|
||||
authTimeout, err := time.ParseDuration(mainflux.Env(envAuthTimeout, defAuthTimeout))
|
||||
if err != nil {
|
||||
log.Fatalf("Invalid %s value: %s", envAuthnTimeout, err.Error())
|
||||
log.Fatalf("Invalid %s value: %s", envAuthTimeout, err.Error())
|
||||
}
|
||||
|
||||
dbCfg := twmongodb.Config{
|
||||
@@ -185,8 +185,8 @@ func loadConfig() config {
|
||||
caCerts: mainflux.Env(envCACerts, defCACerts),
|
||||
channelID: mainflux.Env(envChannelID, defChannelID),
|
||||
natsURL: mainflux.Env(envNatsURL, defNatsURL),
|
||||
authnURL: mainflux.Env(envAuthnURL, defAuthnURL),
|
||||
authnTimeout: authnTimeout,
|
||||
authURL: mainflux.Env(envAuthURL, defAuthURL),
|
||||
authTimeout: authTimeout,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ func createAuthClient(cfg config, tracer opentracing.Tracer, logger logger.Logge
|
||||
}
|
||||
|
||||
conn := connectToAuth(cfg, logger)
|
||||
return authapi.NewClient(tracer, conn, cfg.authnTimeout), conn.Close
|
||||
return authapi.NewClient(tracer, conn, cfg.authTimeout), conn.Close
|
||||
}
|
||||
|
||||
func connectToAuth(cfg config, logger logger.Logger) *grpc.ClientConn {
|
||||
@@ -239,9 +239,9 @@ func connectToAuth(cfg config, logger logger.Logger) *grpc.ClientConn {
|
||||
logger.Info("gRPC communication is not encrypted")
|
||||
}
|
||||
|
||||
conn, err := grpc.Dial(cfg.authnURL, opts...)
|
||||
conn, err := grpc.Dial(cfg.authURL, opts...)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("Failed to connect to authn service: %s", err))
|
||||
logger.Error(fmt.Sprintf("Failed to connect to auth service: %s", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
|
||||
+28
-28
@@ -66,10 +66,10 @@ const (
|
||||
|
||||
defTokenResetEndpoint = "/reset-request" // URL where user lands after click on the reset link from email
|
||||
|
||||
defAuthnTLS = "false"
|
||||
defAuthnCACerts = ""
|
||||
defAuthnURL = "localhost:8181"
|
||||
defAuthnTimeout = "1s"
|
||||
defAuthTLS = "false"
|
||||
defAuthCACerts = ""
|
||||
defAuthURL = "localhost:8181"
|
||||
defAuthTimeout = "1s"
|
||||
|
||||
envLogLevel = "MF_USERS_LOG_LEVEL"
|
||||
envDBHost = "MF_USERS_DB_HOST"
|
||||
@@ -101,10 +101,10 @@ const (
|
||||
|
||||
envTokenResetEndpoint = "MF_TOKEN_RESET_ENDPOINT"
|
||||
|
||||
envAuthnTLS = "MF_AUTH_CLIENT_TLS"
|
||||
envAuthnCACerts = "MF_AUTH_CA_CERTS"
|
||||
envAuthnURL = "MF_AUTH_GRPC_URL"
|
||||
envAuthnTimeout = "MF_AUTH_GRPC_TIMEOUT"
|
||||
envAuthTLS = "MF_AUTH_CLIENT_TLS"
|
||||
envAuthCACerts = "MF_AUTH_CA_CERTS"
|
||||
envAuthURL = "MF_AUTH_GRPC_URL"
|
||||
envAuthTimeout = "MF_AUTH_GRPC_TIMEOUT"
|
||||
)
|
||||
|
||||
type config struct {
|
||||
@@ -116,10 +116,10 @@ type config struct {
|
||||
serverKey string
|
||||
jaegerURL string
|
||||
resetURL string
|
||||
authnTLS bool
|
||||
authnCACerts string
|
||||
authnURL string
|
||||
authnTimeout time.Duration
|
||||
authTLS bool
|
||||
authCACerts string
|
||||
authURL string
|
||||
authTimeout time.Duration
|
||||
adminEmail string
|
||||
adminPassword string
|
||||
}
|
||||
@@ -137,7 +137,7 @@ func main() {
|
||||
authTracer, closer := initJaeger("auth", cfg.jaegerURL, logger)
|
||||
defer closer.Close()
|
||||
|
||||
auth, close := connectToAuthn(cfg, authTracer, logger)
|
||||
auth, close := connectToAuth(cfg, authTracer, logger)
|
||||
if close != nil {
|
||||
defer close()
|
||||
}
|
||||
@@ -164,14 +164,14 @@ func main() {
|
||||
}
|
||||
|
||||
func loadConfig() config {
|
||||
authnTimeout, err := time.ParseDuration(mainflux.Env(envAuthnTimeout, defAuthnTimeout))
|
||||
authTimeout, err := time.ParseDuration(mainflux.Env(envAuthTimeout, defAuthTimeout))
|
||||
if err != nil {
|
||||
log.Fatalf("Invalid %s value: %s", envAuthnTimeout, err.Error())
|
||||
log.Fatalf("Invalid %s value: %s", envAuthTimeout, err.Error())
|
||||
}
|
||||
|
||||
tls, err := strconv.ParseBool(mainflux.Env(envAuthnTLS, defAuthnTLS))
|
||||
tls, err := strconv.ParseBool(mainflux.Env(envAuthTLS, defAuthTLS))
|
||||
if err != nil {
|
||||
log.Fatalf("Invalid value passed for %s\n", envAuthnTLS)
|
||||
log.Fatalf("Invalid value passed for %s\n", envAuthTLS)
|
||||
}
|
||||
|
||||
dbConfig := postgres.Config{
|
||||
@@ -206,10 +206,10 @@ func loadConfig() config {
|
||||
serverKey: mainflux.Env(envServerKey, defServerKey),
|
||||
jaegerURL: mainflux.Env(envJaegerURL, defJaegerURL),
|
||||
resetURL: mainflux.Env(envTokenResetEndpoint, defTokenResetEndpoint),
|
||||
authnTLS: tls,
|
||||
authnCACerts: mainflux.Env(envAuthnCACerts, defAuthnCACerts),
|
||||
authnURL: mainflux.Env(envAuthnURL, defAuthnURL),
|
||||
authnTimeout: authnTimeout,
|
||||
authTLS: tls,
|
||||
authCACerts: mainflux.Env(envAuthCACerts, defAuthCACerts),
|
||||
authURL: mainflux.Env(envAuthURL, defAuthURL),
|
||||
authTimeout: authTimeout,
|
||||
adminEmail: mainflux.Env(envAdminEmail, defAdminEmail),
|
||||
adminPassword: mainflux.Env(envAdminPassword, defAdminPassword),
|
||||
}
|
||||
@@ -248,11 +248,11 @@ func connectToDB(dbConfig postgres.Config, logger logger.Logger) *sqlx.DB {
|
||||
return db
|
||||
}
|
||||
|
||||
func connectToAuthn(cfg config, tracer opentracing.Tracer, logger logger.Logger) (mainflux.AuthServiceClient, func() error) {
|
||||
func connectToAuth(cfg config, tracer opentracing.Tracer, logger logger.Logger) (mainflux.AuthServiceClient, func() error) {
|
||||
var opts []grpc.DialOption
|
||||
if cfg.authnTLS {
|
||||
if cfg.authnCACerts != "" {
|
||||
tpc, err := credentials.NewClientTLSFromFile(cfg.authnCACerts, "")
|
||||
if cfg.authTLS {
|
||||
if cfg.authCACerts != "" {
|
||||
tpc, err := credentials.NewClientTLSFromFile(cfg.authCACerts, "")
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("Failed to create tls credentials: %s", err))
|
||||
os.Exit(1)
|
||||
@@ -264,13 +264,13 @@ func connectToAuthn(cfg config, tracer opentracing.Tracer, logger logger.Logger)
|
||||
logger.Info("gRPC communication is not encrypted")
|
||||
}
|
||||
|
||||
conn, err := grpc.Dial(cfg.authnURL, opts...)
|
||||
conn, err := grpc.Dial(cfg.authURL, opts...)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("Failed to connect to authn service: %s", err))
|
||||
logger.Error(fmt.Sprintf("Failed to connect to auth service: %s", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
return authapi.NewClient(tracer, conn, cfg.authnTimeout), conn.Close
|
||||
return authapi.NewClient(tracer, conn, cfg.authTimeout), conn.Close
|
||||
}
|
||||
|
||||
func newService(db *sqlx.DB, tracer opentracing.Tracer, auth mainflux.AuthServiceClient, c config, logger logger.Logger) users.Service {
|
||||
|
||||
@@ -9,7 +9,6 @@ networks:
|
||||
|
||||
volumes:
|
||||
mainflux-auth-db-volume:
|
||||
mainflux-authz-db-volume:
|
||||
mainflux-users-db-volume:
|
||||
mainflux-things-db-volume:
|
||||
mainflux-auth-redis-volume:
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ MF_MQTT_ADAPTER_LOG_LEVEL=info MF_THINGS_AUTH_GRPC_URL=localhost:8183 $BUILD_DIR
|
||||
MF_COAP_ADAPTER_LOG_LEVEL=info MF_COAP_ADAPTER_PORT=5683 MF_THINGS_AUTH_GRPC_URL=localhost:8183 $BUILD_DIR/mainflux-coap &
|
||||
|
||||
###
|
||||
# AUTHN
|
||||
# AUTH
|
||||
###
|
||||
MF_AUTH_LOG_LEVEL=debug MF_AUTH_HTTP_PORT=8189 MF_AUTH_GRPC_PORT=8181 MF_AUTH_DB_PORT=5432 MF_AUTH_DB_USER=mainflux MF_AUTH_DB_PASS=mainflux MF_AUTH_DB=auth MF_AUTH_SECRET=secret $BUILD_DIR/mainflux-auth &
|
||||
|
||||
|
||||
+6
-6
@@ -44,8 +44,8 @@ default values.
|
||||
| MF_THINGS_SINGLE_USER_EMAIL | User email for single user mode (no gRPC communication with users) | |
|
||||
| MF_THINGS_SINGLE_USER_TOKEN | User token for single user mode that should be passed in auth header | |
|
||||
| MF_JAEGER_URL | Jaeger server URL | localhost:6831 |
|
||||
| MF_AUTH_GRPC_URL | AuthN service gRPC URL | localhost:8181 |
|
||||
| MF_AUTH_GRPC_TIMEOUT | AuthN service gRPC request timeout in seconds | 1s |
|
||||
| MF_AUTH_GRPC_URL | Auth service gRPC URL | localhost:8181 |
|
||||
| MF_AUTH_GRPC_TIMEOUT | Auth service gRPC request timeout in seconds | 1s |
|
||||
|
||||
**Note** that if you want `things` service to have only one user locally, you should use `MF_THINGS_SINGLE_USER` env vars. By specifying these, you don't need `users` service in your deployment as it won't be used for authorization.
|
||||
|
||||
@@ -89,8 +89,8 @@ services:
|
||||
MF_THINGS_SINGLE_USER_EMAIL: [User email for single user mode (no gRPC communication with users)]
|
||||
MF_THINGS_SINGLE_USER_TOKEN: [User token for single user mode that should be passed in auth header]
|
||||
MF_JAEGER_URL: [Jaeger server URL]
|
||||
MF_AUTH_GRPC_URL: [AuthN service gRPC URL]
|
||||
MF_AUTH_GRPC_TIMEOUT: [AuthN service gRPC request timeout in seconds]
|
||||
MF_AUTH_GRPC_URL: [Auth service gRPC URL]
|
||||
MF_AUTH_GRPC_TIMEOUT: [Auth service gRPC request timeout in seconds]
|
||||
```
|
||||
|
||||
To start the service outside of the container, execute the following shell script:
|
||||
@@ -133,8 +133,8 @@ MF_THINGS_SERVER_KEY=[Path to server key] \
|
||||
MF_THINGS_SINGLE_USER_EMAIL=[User email for single user mode (no gRPC communication with users)] \
|
||||
MF_THINGS_SINGLE_USER_TOKEN=[User token for single user mode that should be passed in auth header] \
|
||||
MF_JAEGER_URL=[Jaeger server URL] \
|
||||
MF_AUTH_GRPC_URL=[AuthN service gRPC URL] \
|
||||
MF_AUTH_GRPC_TIMEOUT=[AuthN service gRPC request timeout in seconds] \
|
||||
MF_AUTH_GRPC_URL=[Auth service gRPC URL] \
|
||||
MF_AUTH_GRPC_TIMEOUT=[Auth service gRPC request timeout in seconds] \
|
||||
$GOBIN/mainflux-things
|
||||
```
|
||||
|
||||
|
||||
+6
-6
@@ -28,8 +28,8 @@ default values.
|
||||
| MF_TWINS_CA_CERTS | Path to trusted CAs in PEM format | |
|
||||
| MF_TWINS_CHANNEL_ID | NATS notifications channel ID | |
|
||||
| MF_NATS_URL | Mainflux NATS broker URL | nats://localhost:4222 |
|
||||
| MF_AUTH_GRPC_URL | AuthN service gRPC URL | localhost:8181 |
|
||||
| MF_AUTH_GRPC_TIMEOUT | AuthN service gRPC request timeout in seconds | 1s |
|
||||
| MF_AUTH_GRPC_URL | Auth service gRPC URL | localhost:8181 |
|
||||
| MF_AUTH_GRPC_TIMEOUT | Auth service gRPC request timeout in seconds | 1s |
|
||||
| MF_TWINS_CACHE_URL | Cache database URL | localhost:6379 |
|
||||
| MF_TWINS_CACHE_PASS | Cache database password | |
|
||||
| MF_TWINS_CACHE_DB | Cache instance name | 0 |
|
||||
@@ -64,8 +64,8 @@ services:
|
||||
MF_TWINS_CA_CERTS: [Path to trusted CAs in PEM format]
|
||||
MF_TWINS_CHANNEL_ID: [NATS notifications channel ID]
|
||||
MF_NATS_URL: [Mainflux NATS broker URL]
|
||||
MF_AUTH_GRPC_URL: [AuthN service gRPC URL]
|
||||
MF_AUTH_GRPC_TIMEOUT: [AuthN service gRPC request timeout in seconds]
|
||||
MF_AUTH_GRPC_URL: [Auth service gRPC URL]
|
||||
MF_AUTH_GRPC_TIMEOUT: [Auth service gRPC request timeout in seconds]
|
||||
MF_TWINS_ES_URL: [Event store URL]
|
||||
MF_TWINS_ES_PASS: [Event store password]
|
||||
MF_TWINS_ES_DB: [Event store instance name]
|
||||
@@ -100,8 +100,8 @@ MF_TWINS_CLIENT_TLS: [Flag that indicates if TLS should be turned on] \
|
||||
MF_TWINS_CA_CERTS: [Path to trusted CAs in PEM format] \
|
||||
MF_TWINS_CHANNEL_ID: [NATS notifications channel ID] \
|
||||
MF_NATS_URL: [Mainflux NATS broker URL] \
|
||||
MF_AUTH_GRPC_URL: [AuthN service gRPC URL] \
|
||||
MF_AUTH_GRPC_TIMEOUT: [AuthN service gRPC request timeout in seconds] \
|
||||
MF_AUTH_GRPC_URL: [Auth service gRPC URL] \
|
||||
MF_AUTH_GRPC_TIMEOUT: [Auth service gRPC request timeout in seconds] \
|
||||
$GOBIN/mainflux-twins
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user