summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/app.go3
-rw-r--r--app/init.go5
-rw-r--r--app/middleware/id_token.go5
-rw-r--r--app/middleware/id_token_test.go12
4 files changed, 10 insertions, 15 deletions
diff --git a/app/app.go b/app/app.go
index c224ad6..23f49bb 100644
--- a/app/app.go
+++ b/app/app.go
@@ -14,7 +14,6 @@ import (
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/controllers/sparkles"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/domain"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/middleware"
- "golang.org/x/oauth2"
)
type Mountable interface {
@@ -40,7 +39,7 @@ func New(rootDir string) http.Handler {
users := ioc.MustResolve[domain.Repository[*domain.User]](ioc.Default)
chain := middleware.IDToken(
ioc.MustResolve[*oidc.Provider](ioc.Default),
- ioc.MustResolve[*oauth2.Config](ioc.Default),
+ ioc.MustResolve[*oidc.Config](ioc.Default),
middleware.FromCookie(cfg.IDTokenCookie),
)(middleware.User(users)(mux))
return log.HTTP(logger)(chain)
diff --git a/app/init.go b/app/init.go
index a087103..045b496 100644
--- a/app/init.go
+++ b/app/init.go
@@ -54,6 +54,11 @@ func init() {
ioc.MustResolve[*zerolog.Logger](ioc.Default).Err(err).Send()
})
})
+ ioc.Register[*oidc.Config](ioc.Default, func() *oidc.Config {
+ return &oidc.Config{
+ ClientID: cfg.OAuthClientID,
+ }
+ })
ioc.Register[*oauth2.Config](ioc.Default, func() *oauth2.Config {
return &oauth2.Config{
ClientID: cfg.OAuthClientID,
diff --git a/app/middleware/id_token.go b/app/middleware/id_token.go
index bfc6289..8084af0 100644
--- a/app/middleware/id_token.go
+++ b/app/middleware/id_token.go
@@ -9,16 +9,15 @@ import (
xcfg "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/web"
- "golang.org/x/oauth2"
)
-func IDToken(provider *oidc.Provider, config *oauth2.Config, parsers ...TokenParser) func(http.Handler) http.Handler {
+func IDToken(provider *oidc.Provider, config *oidc.Config, parsers ...TokenParser) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
for _, parser := range parsers {
rawIDToken := parser(r)
if x.IsPresent(rawIDToken) {
- verifier := provider.VerifierContext(r.Context(), &oidc.Config{ClientID: config.ClientID})
+ verifier := provider.VerifierContext(r.Context(), config)
idToken, err := verifier.Verify(r.Context(), rawIDToken.String())
if err != nil {
diff --git a/app/middleware/id_token_test.go b/app/middleware/id_token_test.go
index 9b96a50..5487ada 100644
--- a/app/middleware/id_token_test.go
+++ b/app/middleware/id_token_test.go
@@ -4,7 +4,7 @@ import (
"net/http"
"testing"
- xoidc "github.com/coreos/go-oidc/v3/oidc"
+ "github.com/coreos/go-oidc/v3/oidc"
"github.com/oauth2-proxy/mockoidc"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -12,21 +12,13 @@ import (
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg"
xcfg "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/app/cfg"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/web"
- "golang.org/x/oauth2"
)
func TestIDToken(t *testing.T) {
srv := web.NewOIDCServer(t)
defer srv.Close()
- config := &oauth2.Config{
- ClientID: srv.MockOIDC.ClientID,
- ClientSecret: srv.MockOIDC.ClientSecret,
- RedirectURL: "https://example.com/oauth/callback",
- Endpoint: srv.Provider.Endpoint(),
- Scopes: []string{xoidc.ScopeOpenID, "profile", "email"},
- }
- middleware := IDToken(srv.Provider, config, FromCookie(cfg.IDTokenCookie))
+ middleware := IDToken(srv.Provider, &oidc.Config{ClientID: srv.MockOIDC.ClientID}, FromCookie(cfg.IDTokenCookie))
t.Run("when an active id_token cookie is provided", func(t *testing.T) {
t.Run("attaches the token to the request context", func(t *testing.T) {