Skip to content

Commit 05b903a

Browse files
committed
Revert "CC-796: Remove dependency on unsupported version of go-oidc"
This reverts commit 0899d6a.
1 parent 398cc8b commit 05b903a

File tree

37 files changed

+906
-1147
lines changed

37 files changed

+906
-1147
lines changed

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ require (
77
github.com/cloudflare/brotli-go v0.0.0-20191101163834-d34379f7ff93
88
github.com/cloudflare/golibs v0.0.0-20170913112048-333127dbecfc
99
github.com/coredns/coredns v1.8.7
10+
github.com/coreos/go-oidc v0.0.0-20171002155002-a93f71fdfe73
1011
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
1112
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
1213
github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 // indirect
@@ -50,15 +51,14 @@ require (
5051
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b
5152
google.golang.org/genproto v0.0.0-20211223182754-3ac035c7e7cb // indirect
5253
google.golang.org/grpc v1.43.0 // indirect
54+
gopkg.in/coreos/go-oidc.v2 v2.1.0
5355
gopkg.in/natefinch/lumberjack.v2 v2.0.0
54-
gopkg.in/square/go-jose.v2 v2.6.0
56+
gopkg.in/square/go-jose.v2 v2.4.0 // indirect
5557
gopkg.in/yaml.v2 v2.4.0
5658
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
5759
zombiezen.com/go/capnproto2 v2.18.0+incompatible
5860
)
5961

60-
require gopkg.in/coreos/go-oidc.v2 v2.2.1
61-
6262
require (
6363
github.com/BurntSushi/toml v0.3.1 // indirect
6464
github.com/apparentlymart/go-cidr v1.1.0 // indirect

go.sum

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ github.com/coredns/caddy v1.1.1 h1:2eYKZT7i6yxIfGP3qLJoJ7HAsDJqYB+X68g4NYjSrE0=
131131
github.com/coredns/caddy v1.1.1/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4=
132132
github.com/coredns/coredns v1.8.7 h1:wVMjAnyFnY7Mc18AFO+9qbGD6ODPtdVUIlzoWrHr3hk=
133133
github.com/coredns/coredns v1.8.7/go.mod h1:bFmbgEfeRz5aizL2VsQ5LRlsvJuXWkgG/MWG9zxqjVM=
134+
github.com/coreos/go-oidc v0.0.0-20171002155002-a93f71fdfe73 h1:7CNPV0LWRCa1FNmqg700pbXhzvmoaXKyfxWRkjRym7Q=
135+
github.com/coreos/go-oidc v0.0.0-20171002155002-a93f71fdfe73/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
134136
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
135137
github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
136138
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
@@ -1050,15 +1052,15 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
10501052
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
10511053
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
10521054
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
1053-
gopkg.in/coreos/go-oidc.v2 v2.2.1 h1:MY5SZClJ7vhjKfr64a4nHAOV/c3WH2gB9BMrR64J1Mc=
1054-
gopkg.in/coreos/go-oidc.v2 v2.2.1/go.mod h1:fYaTe2FS96wZZwR17YTDHwG+Mw6fmyqJNxN2eNCGPCI=
1055+
gopkg.in/coreos/go-oidc.v2 v2.1.0 h1:E8PjVFdj/SLDKB0hvb70KTbMbYVHjqztiQdSkIg8E+I=
1056+
gopkg.in/coreos/go-oidc.v2 v2.1.0/go.mod h1:fYaTe2FS96wZZwR17YTDHwG+Mw6fmyqJNxN2eNCGPCI=
10551057
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
10561058
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
10571059
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
10581060
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
10591061
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
1060-
gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=
1061-
gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
1062+
gopkg.in/square/go-jose.v2 v2.4.0 h1:0kXPskUMGAXXWJlP05ktEMOV0vmzFQUWw6d+aZJQU8A=
1063+
gopkg.in/square/go-jose.v2 v2.4.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
10621064
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
10631065
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
10641066
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

sshgen/sshgen.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import (
1515
"net/url"
1616
"time"
1717

18+
"github.com/coreos/go-oidc/jose"
1819
homedir "github.com/mitchellh/go-homedir"
1920
"github.com/pkg/errors"
2021
gossh "golang.org/x/crypto/ssh"
21-
"gopkg.in/square/go-jose.v2/jwt"
2222

2323
"github.com/cloudflare/cloudflared/config"
2424
cfpath "github.com/cloudflare/cloudflared/token"
@@ -87,33 +87,37 @@ func SignCert(token, pubKey string) (string, error) {
8787
return "", errors.New("invalid token")
8888
}
8989

90-
parsedToken, err := jwt.ParseSigned(token)
90+
jwt, err := jose.ParseJWT(token)
9191
if err != nil {
9292
return "", errors.Wrap(err, "failed to parse JWT")
9393
}
9494

95-
claims := jwt.Claims{}
96-
err = parsedToken.UnsafeClaimsWithoutVerification(&claims)
95+
claims, err := jwt.Claims()
9796
if err != nil {
9897
return "", errors.Wrap(err, "failed to retrieve JWT claims")
9998
}
10099

100+
issuer, _, err := claims.StringClaim("iss")
101+
if err != nil {
102+
return "", errors.Wrap(err, "failed to retrieve JWT iss")
103+
}
104+
101105
buf, err := json.Marshal(&signPayload{
102106
PublicKey: pubKey,
103107
JWT: token,
104-
Issuer: claims.Issuer,
108+
Issuer: issuer,
105109
})
106110
if err != nil {
107111
return "", errors.Wrap(err, "failed to marshal signPayload")
108112
}
109113
var res *http.Response
110114
if mockRequest != nil {
111-
res, err = mockRequest(claims.Issuer+signEndpoint, "application/json", bytes.NewBuffer(buf))
115+
res, err = mockRequest(issuer+signEndpoint, "application/json", bytes.NewBuffer(buf))
112116
} else {
113117
client := http.Client{
114118
Timeout: 10 * time.Second,
115119
}
116-
res, err = client.Post(claims.Issuer+signEndpoint, "application/json", bytes.NewBuffer(buf))
120+
res, err = client.Post(issuer+signEndpoint, "application/json", bytes.NewBuffer(buf))
117121
}
118122

119123
if err != nil {

sshgen/sshgen_test.go

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
package sshgen
55

66
import (
7+
"crypto/rand"
8+
"crypto/rsa"
79
"encoding/json"
810
"fmt"
911
"io"
@@ -16,9 +18,8 @@ import (
1618
"testing"
1719
"time"
1820

21+
"github.com/coreos/go-oidc/jose"
1922
"github.com/stretchr/testify/assert"
20-
"gopkg.in/square/go-jose.v2"
21-
"gopkg.in/square/go-jose.v2/jwt"
2223

2324
"github.com/cloudflare/cloudflared/config"
2425
cfpath "github.com/cloudflare/cloudflared/token"
@@ -96,25 +97,22 @@ func TestCertGenSuccess(t *testing.T) {
9697
}
9798

9899
func tokenGenerator() string {
99-
iat := time.Now()
100-
exp := time.Now().Add(time.Minute * 5)
101-
102-
claims := jwt.Claims{
103-
Audience: jwt.Audience{audTest},
104-
IssuedAt: jwt.NewNumericDate(iat),
105-
Expiry: jwt.NewNumericDate(exp),
106-
}
107-
108-
key := []byte("secret")
109-
signer, err := jose.NewSigner(jose.SigningKey{Algorithm: jose.HS256, Key: key}, (&jose.SignerOptions{}).WithType("JWT"))
100+
iat := time.Now().Unix()
101+
exp := time.Now().Add(time.Minute * 5).Unix()
102+
claims := jose.Claims{}
103+
claims.Add("aud", audTest)
104+
claims.Add("iat", iat)
105+
claims.Add("nonce", nonceTest)
106+
claims.Add("exp", exp)
107+
108+
k, err := rsa.GenerateKey(rand.Reader, 512)
110109
if err != nil {
111-
panic(err)
110+
return ""
112111
}
113-
114-
signedToken, err := jwt.Signed(signer).Claims(claims).CompactSerialize()
115-
if err != nil {
116-
panic(err)
112+
signer := jose.NewSignerRSA("asdf", *k)
113+
token, terr := jose.NewSignedJWT(claims, signer)
114+
if terr != nil {
115+
return ""
117116
}
118-
119-
return signedToken
117+
return token.Encode()
120118
}

token/token.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ import (
1313
"syscall"
1414
"time"
1515

16+
"github.com/coreos/go-oidc/jose"
1617
"github.com/pkg/errors"
1718
"github.com/rs/zerolog"
18-
"gopkg.in/square/go-jose.v2"
1919

2020
"github.com/cloudflare/cloudflared/config"
2121
"github.com/cloudflare/cloudflared/retry"
@@ -342,7 +342,7 @@ func GetOrgTokenIfExists(authDomain string) (string, error) {
342342
return "", err
343343
}
344344
var payload jwtPayload
345-
err = json.Unmarshal(token.UnsafePayloadWithoutVerification(), &payload)
345+
err = json.Unmarshal(token.Payload, &payload)
346346
if err != nil {
347347
return "", err
348348
}
@@ -351,7 +351,7 @@ func GetOrgTokenIfExists(authDomain string) (string, error) {
351351
err := os.Remove(path)
352352
return "", err
353353
}
354-
return token.CompactSerialize()
354+
return token.Encode(), nil
355355
}
356356

357357
func GetAppTokenIfExists(appInfo *AppInfo) (string, error) {
@@ -364,7 +364,7 @@ func GetAppTokenIfExists(appInfo *AppInfo) (string, error) {
364364
return "", err
365365
}
366366
var payload jwtPayload
367-
err = json.Unmarshal(token.UnsafePayloadWithoutVerification(), &payload)
367+
err = json.Unmarshal(token.Payload, &payload)
368368
if err != nil {
369369
return "", err
370370
}
@@ -373,21 +373,22 @@ func GetAppTokenIfExists(appInfo *AppInfo) (string, error) {
373373
err := os.Remove(path)
374374
return "", err
375375
}
376-
return token.CompactSerialize()
376+
return token.Encode(), nil
377377

378378
}
379379

380380
// GetTokenIfExists will return the token from local storage if it exists and not expired
381-
func getTokenIfExists(path string) (*jose.JSONWebSignature, error) {
381+
func getTokenIfExists(path string) (*jose.JWT, error) {
382382
content, err := ioutil.ReadFile(path)
383383
if err != nil {
384384
return nil, err
385385
}
386-
token, err := jose.ParseSigned(string(content))
386+
token, err := jose.ParseJWT(string(content))
387387
if err != nil {
388388
return nil, err
389389
}
390-
return token, nil
390+
391+
return &token, nil
391392
}
392393

393394
// RemoveTokenIfExists removes the a token from local storage if it exists

0 commit comments

Comments
 (0)