mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2026-09-30 03:31:27 +02:00
Verify main v extra JWT bearers differently
When using the configured provider JWT Verifier, it makes sense to use the provider `CreateSessionStateFromBearerToken` method. For any extra JWT Issuers, they should use a generic default verifier.
This commit is contained in:
@@ -124,7 +124,6 @@ func newOIDCServer(body []byte) (*url.URL, *httptest.Server) {
|
||||
}
|
||||
|
||||
func newSignedTestIDToken(tokenClaims idTokenClaims) (string, error) {
|
||||
|
||||
key, _ := rsa.GenerateKey(rand.Reader, 2048)
|
||||
standardClaims := jwt.NewWithClaims(jwt.SigningMethodRS256, tokenClaims)
|
||||
return standardClaims.SignedString(key)
|
||||
|
||||
@@ -2,6 +2,10 @@ package providers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/rand"
|
||||
"crypto/rsa"
|
||||
"github.com/coreos/go-oidc"
|
||||
"github.com/dgrijalva/jwt-go"
|
||||
"net/url"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -47,3 +51,35 @@ func TestAcrValuesConfigured(t *testing.T) {
|
||||
result := p.GetLoginURL("https://my.test.app/oauth", "")
|
||||
assert.Contains(t, result, "acr_values=testValue")
|
||||
}
|
||||
|
||||
func TestCreateSessionStateFromBearerToken(t *testing.T) {
|
||||
minimalIDToken := jwt.StandardClaims{
|
||||
Audience: "asdf1234",
|
||||
ExpiresAt: time.Now().Add(time.Duration(5) * time.Minute).Unix(),
|
||||
Id: "id-some-id",
|
||||
IssuedAt: time.Now().Unix(),
|
||||
Issuer: "https://issuer.example.com",
|
||||
NotBefore: 0,
|
||||
Subject: "123456789",
|
||||
}
|
||||
// From oidc_test.go
|
||||
verifier := oidc.NewVerifier(
|
||||
"https://issuer.example.com",
|
||||
fakeKeySetStub{},
|
||||
&oidc.Config{ClientID: "asdf1234"},
|
||||
)
|
||||
|
||||
key, _ := rsa.GenerateKey(rand.Reader, 2048)
|
||||
rawIDToken, _ := jwt.NewWithClaims(jwt.SigningMethodRS256, minimalIDToken).SignedString(key)
|
||||
idToken, err := verifier.Verify(context.Background(), rawIDToken)
|
||||
|
||||
session, err := (*ProviderData)(nil).CreateSessionStateFromBearerToken(context.Background(), rawIDToken, idToken)
|
||||
|
||||
assert.Equal(t, nil, err)
|
||||
assert.Equal(t, rawIDToken, session.AccessToken)
|
||||
assert.Equal(t, rawIDToken, session.IDToken)
|
||||
assert.Equal(t, "", session.RefreshToken)
|
||||
assert.Equal(t, "123456789", session.Email)
|
||||
assert.Equal(t, "123456789", session.User)
|
||||
assert.Equal(t, "", session.PreferredUsername)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user