Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds JWT support #17

Open
wants to merge 36 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
b7dcf65
Adds jwt update to posix.
JU4N98 Jul 17, 2023
a20e66e
Adds jwt support for windows, fixes lint errors.
JU4N98 Jul 18, 2023
ae88282
Improves some messages.
JU4N98 Jul 18, 2023
7f337e4
Improves context handling.
JU4N98 Jul 19, 2023
fa59c9e
Fixes typo.
JU4N98 Oct 6, 2023
e386261
Adds jsonFilename config and its warning and error.
JU4N98 Oct 13, 2023
1e9d2ac
adds suggested changes
JU4N98 Oct 19, 2023
f24d177
Replaces errorf for fatalf.
JU4N98 Oct 23, 2023
1085103
Uses expiry time to renew JWT svid.
JU4N98 Oct 24, 2023
dd13164
Creates separates files for JWT SVID and Bundles, updates README.
JU4N98 Oct 25, 2023
12d855a
Fixes lint error.
JU4N98 Oct 25, 2023
d01e840
Fixes bug in config.go validations, changes JWT files structure, upda…
JU4N98 Nov 7, 2023
9f2b6a6
Adds suggested changes.
JU4N98 Nov 8, 2023
d4b0706
Refactors util files.
JU4N98 Nov 10, 2023
cb236cb
Updates README.md.
JU4N98 Nov 10, 2023
825d138
Updates README.md.
JU4N98 Nov 13, 2023
44080f3
Updates README.md.
JU4N98 Nov 13, 2023
298d6a0
Updates README.md.
JU4N98 Nov 13, 2023
616bc0d
Moves RunDeamon into sidecar.go, refactors updateJWTSVID method.
JU4N98 Nov 13, 2023
80d1919
Moves RunDaemon method just after New method.
JU4N98 Nov 13, 2023
8bdb162
Refactors createRetryIntervalFunc and updateJWTSVID.
JU4N98 Nov 13, 2023
18d00eb
Updates logs and README.md.
JU4N98 Nov 14, 2023
bfb6ccc
Updates README.md.
JU4N98 Nov 14, 2023
6b3629b
Corrects misplaced log.
JU4N98 Nov 14, 2023
ba89caf
Updates pkg/sidecar/sidecar.go
JU4N98 Nov 15, 2023
09c35b6
Updates pkg/sidecar/sidecar.go
JU4N98 Nov 15, 2023
d690410
Updates README.md
JU4N98 Nov 15, 2023
7c076da
Updates README.md
JU4N98 Nov 15, 2023
4c277c3
Adds tests for new conf fields.
JU4N98 Nov 15, 2023
d6aab07
Adds suggested validations.
JU4N98 Nov 17, 2023
752f20d
Adds suggested changes.
JU4N98 Nov 21, 2023
6f92a7d
Adds suggested changes.
JU4N98 Nov 21, 2023
45aa340
Adds flexibility to JWT.
JU4N98 Nov 22, 2023
bec5d88
Updates writeJSON and error message.
JU4N98 Nov 29, 2023
d544c46
Re use jwtSource, solve identation, add blank line.
JU4N98 Dec 4, 2023
cd61f89
Improves identation.
JU4N98 Dec 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Adds tests for new conf fields.
Signed-off-by: JU4N98 <juanpablocabana2@gmail.com>
  • Loading branch information
JU4N98 committed Dec 5, 2023
commit 4c277c3220f48868b4b7f9147593759d80c91867
16 changes: 16 additions & 0 deletions pkg/sidecar/config.go
Original file line number Diff line number Diff line change
@@ -120,6 +120,22 @@ func ValidateConfig(c *Config) error {
c.RenewSignal = c.RenewSignalDeprecated
}

if c.SvidFileName == "" && c.JWTSvidFilename == "" && c.JWTBundleFilename == "" {
return errors.New("svid_file_name, jwt_svid_file_name or jwt_bundle_file_name is required")
}

if c.SvidFileName != "" && c.SvidKeyFileName == "" {
return errors.New("svid_key_file_name is required when using svid_file_name")
}

if c.SvidFileName != "" && c.SvidBundleFileName == "" {
return errors.New("svid_bundle_file_name is required when using svid_file_name")
}

if c.JWTSvidFilename != "" && c.JWTAudience == "" {
return errors.New("jwt_audience is required when using jwt_svid_file_name")
}

return nil
}

40 changes: 40 additions & 0 deletions pkg/sidecar/config_test.go
Original file line number Diff line number Diff line change
@@ -22,6 +22,9 @@ func TestParseConfig(t *testing.T) {
expectedSvidFileName := "svid.pem"
expectedKeyFileName := "svid_key.pem"
expectedSvidBundleFileName := "svid_bundle.pem"
expectedJWTSVIDFileName := "jwt_svid.token"
expectedJWTBundleFileName := "jwt_bundle.json"
expectedJWTAudience := "your-audience"

assert.Equal(t, expectedAgentAddress, c.AgentAddress)
assert.Equal(t, expectedCmd, c.Cmd)
@@ -31,6 +34,9 @@ func TestParseConfig(t *testing.T) {
assert.Equal(t, expectedSvidFileName, c.SvidFileName)
assert.Equal(t, expectedKeyFileName, c.SvidKeyFileName)
assert.Equal(t, expectedSvidBundleFileName, c.SvidBundleFileName)
assert.Equal(t, expectedJWTSVIDFileName, c.JWTSvidFilename)
assert.Equal(t, expectedJWTBundleFileName, c.JWTBundleFilename)
assert.Equal(t, expectedJWTAudience, c.JWTAudience)
assert.True(t, c.AddIntermediatesToBundle)
}

@@ -50,6 +56,40 @@ func TestValidateConfig(t *testing.T) {
SvidBundleFileName: "bundle.pem",
},
},
{
name: "no SVID or bundle",
config: &Config{
AgentAddress: "path",
},
expectError: "svid_file_name, jwt_svid_file_name or jwt_bundle_file_name is required",
},
{
name: "no key file",
config: &Config{
AgentAddress: "path",
SvidFileName: "cert.pem",
},
expectError: "svid_key_file_name is required when using svid_file_name",
},
{
name: "no bundle file",
config: &Config{
AgentAddress: "path",
SvidFileName: "cert.pem",
SvidKeyFileName: "key.pem",
},
expectError: "svid_bundle_file_name is required when using svid_file_name",
},
{
name: "no audience",
config: &Config{
AgentAddress: "path",
SvidFileName: "cert.pem",
SvidKeyFileName: "key.pem",
JWTSvidFilename: "jwt.token",
},
expectError: "jwt_svid_bundle_file_name is required when using jwt_svid_file_name",
},
// Duplicated field error:
{
name: "Both agent_address & agentAddress in use",
3 changes: 3 additions & 0 deletions test/fixture/config/helper.conf
Original file line number Diff line number Diff line change
@@ -6,5 +6,8 @@ renew_signal = "SIGHUP"
svid_file_name = "svid.pem"
svid_key_file_name = "svid_key.pem"
svid_bundle_file_name = "svid_bundle.pem"
jwt_svid_file_name = "jwt_svid.token"
jwt_bundle_file_name = "jwt_bundle.json"
jwt_audience = "your-audience"
timeout = "10s"
add_intermediates_to_bundle = true