59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
log "log"
|
|
"os"
|
|
|
|
"go.temporal.io/server/common/authorization"
|
|
"go.temporal.io/server/common/config"
|
|
templog "go.temporal.io/server/common/log"
|
|
"go.temporal.io/server/temporal"
|
|
)
|
|
|
|
func main() {
|
|
configEnv := envOrDefault("TEMPORAL_CONFIG_ENV", "development")
|
|
configDir := envOrDefault("TEMPORAL_CONFIG_DIR", "./config")
|
|
|
|
cfg, err := config.LoadConfig(configEnv, configDir, "")
|
|
if err != nil {
|
|
log.Fatalf("load config: %v", err)
|
|
}
|
|
|
|
logger := templog.NewCLILogger()
|
|
|
|
srv, err := temporal.NewServer(
|
|
temporal.ForServices(temporal.DefaultServices),
|
|
temporal.WithConfig(cfg),
|
|
temporal.WithLogger(logger),
|
|
temporal.InterruptOn(temporal.InterruptCh()),
|
|
temporal.WithAuthorizer(authorization.NewDefaultAuthorizer()),
|
|
temporal.WithClaimMapper(func(cfg *config.Config) authorization.ClaimMapper {
|
|
return authorization.NewDefaultJWTClaimMapper(
|
|
// token key provider - fetches public keys from the OIDC provider
|
|
authorization.NewDefaultTokenKeyProvider(&cfg.Global.Authorization, logger),
|
|
&cfg.Global.Authorization,
|
|
logger,
|
|
)
|
|
}),
|
|
temporal.WithAudienceGetter(func(cfg *config.Config) authorization.JWTAudienceMapper {
|
|
return authorization.NewAudienceMapper(cfg.Global.Authorization.Audience)
|
|
}),
|
|
)
|
|
if err != nil {
|
|
log.Fatalf("setup server: %v", err)
|
|
}
|
|
|
|
defer srv.Stop()
|
|
|
|
if err := srv.Start(); err != nil {
|
|
log.Fatalf("start server: %v", err)
|
|
}
|
|
}
|
|
|
|
func envOrDefault(key, fallback string) string {
|
|
if value := os.Getenv(key); value != "" {
|
|
return value
|
|
}
|
|
return fallback
|
|
}
|