@@ -73,13 +73,20 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
7373 const validToken = "eyJfoobar.eyJfoobar.12345asdf"
7474
7575 Context("JwtSessionLoader", func() {
76− var verifier *oidc.IDTokenVerifier
76+ var verifier middlewareapi.VerifyFunc
7777 const nonVerifiedToken = validToken
7878
7979 BeforeEach(func() {
80− keyset := noOpKeySet{}
81− verifier = oidc.NewVerifier("https://issuer.example.com", keyset,
82− &oidc.Config{ClientID: "https://test.myapp.com", SkipExpiryCheck: true})
80+ verifier = func(ctx context.Context, token string) (interface{}, error) {
81+ return oidc.NewVerifier(
82+ "https://issuer.example.com",
83+ noOpKeySet{},
84+ &oidc.Config{
85+ ClientID: "https://test.myapp.com",
86+ SkipExpiryCheck: true,
87+ },
88+ ).Verify(ctx, token)
89+ }
8390 })
8491
8592 type jwtSessionLoaderTableInput struct {
@@ -167,16 +174,23 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
167174 const nonVerifiedToken = validToken
168175
169176 BeforeEach(func() {
170− keyset := noOpKeySet{}
171− verifier := oidc.NewVerifier("https://issuer.example.com", keyset,
172− &oidc.Config{ClientID: "https://test.myapp.com", SkipExpiryCheck: true})
177+ verifier := func(ctx context.Context, token string) (interface{}, error) {
178+ return oidc.NewVerifier(
179+ "https://issuer.example.com",
180+ noOpKeySet{},
181+ &oidc.Config{
182+ ClientID: "https://test.myapp.com",
183+ SkipExpiryCheck: true,
184+ },
185+ ).Verify(ctx, token)
186+ }
173187
174188 j = &jwtSessionLoader{
175189 jwtRegex: regexp.MustCompile(jwtRegexFormat),
176190 sessionLoaders: []middlewareapi.TokenToSessionLoader{
177191 {
178192 Verifier: verifier,
179− TokenToSession: createSessionStateFromBearerToken,
193+ TokenToSession: createSessionFromToken,
180194 },
181195 },
182196 }
@@ -239,7 +253,7 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
239253 )
240254 })
241255
242− Context("findBearerTokenFromHeader", func() {
256+ Context("findTokenFromHeader", func() {
243257 var j *jwtSessionLoader
244258
245259 BeforeEach(func() {
@@ -256,7 +270,7 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
256270
257271 DescribeTable("with a header",
258272 func(in findBearerTokenFromHeaderTableInput) {
259− token, err := j.findBearerTokenFromHeader(in.header)
273+ token, err := j.findTokenFromHeader(in.header)
260274 if in.expectedErr != nil {
261275 Expect(err).To(MatchError(in.expectedErr))
262276 } else {
@@ -381,7 +395,7 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
381395 )
382396 })
383397
384− Context("createSessionStateFromBearerToken", func() {
398+ Context("createSessionFromToken", func() {
385399 ctx := context.Background()
386400 expiresFuture := time.Now().Add(time.Duration(5) * time.Minute)
387401 verified := true
@@ -403,11 +417,18 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
403417
404418 DescribeTable("when creating a session from an IDToken",
405419 func(in createSessionStateTableInput) {
406− verifier := oidc.NewVerifier(
407− "https://issuer.example.com",
408− noOpKeySet{},
409− &oidc.Config{ClientID: "asdf1234"},
410− )
420+ verifier := func(ctx context.Context, token string) (interface{}, error) {
421+ oidcVerifier := oidc.NewVerifier(
422+ "https://issuer.example.com",
423+ noOpKeySet{},
424+ &oidc.Config{ClientID: "asdf1234"},
425+ )
426+
427+ idToken, err := oidcVerifier.Verify(ctx, token)
428+ Expect(err).ToNot(HaveOccurred())
429+
430+ return idToken, nil
431+ }
411432
412433 key, err := rsa.GenerateKey(rand.Reader, 2048)
413434 Expect(err).ToNot(HaveOccurred())
@@ -415,11 +436,7 @@ Nnc3a3lGVWFCNUMxQnNJcnJMTWxka1dFaHluYmI4Ongtb2F1dGgtYmFzaWM=`
415436 rawIDToken, err := jwt.NewWithClaims(jwt.SigningMethodRS256, in.idToken).SignedString(key)
416437 Expect(err).ToNot(HaveOccurred())
417438
418− // Pass to a dummy Verifier to get an oidc.IDToken from the rawIDToken for our actual test below
419− idToken, err := verifier.Verify(context.Background(), rawIDToken)
420− Expect(err).ToNot(HaveOccurred())
421−
422− session, err := createSessionStateFromBearerToken(ctx, rawIDToken, idToken)
439+ session, err := createSessionFromToken(ctx, rawIDToken, verifier)
423440 if in.expectedErr != nil {
424441 Expect(err).To(MatchError(in.expectedErr))
425442 Expect(session).To(BeNil())