summaryrefslogtreecommitdiff
path: root/pkg/oidc/oidc.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-04-14 15:53:32 -0600
committermo khan <mo@mokhan.ca>2025-04-14 15:53:32 -0600
commitb12eb55fdb603290e3bc62880f6e9dff538571de (patch)
treea9cfde922e251391f0618f9837d7b63a94156664 /pkg/oidc/oidc.go
parentbb577738ac0359f8c8da0902b5c18af789ddf29d (diff)
feat: connect the sessions controller to oidc provider
Diffstat (limited to 'pkg/oidc/oidc.go')
-rw-r--r--pkg/oidc/oidc.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/pkg/oidc/oidc.go b/pkg/oidc/oidc.go
new file mode 100644
index 0000000..0526142
--- /dev/null
+++ b/pkg/oidc/oidc.go
@@ -0,0 +1,31 @@
+package oidc
+
+import (
+ "context"
+
+ "github.com/coreos/go-oidc/v3/oidc"
+ "golang.org/x/oauth2"
+)
+
+type OpenID struct {
+ Provider *oidc.Provider
+ Config *oauth2.Config
+}
+
+func New(ctx context.Context, issuer string, clientID, clientSecret, callbackURL string) (*OpenID, error) {
+ provider, err := oidc.NewProvider(ctx, issuer)
+ if err != nil {
+ return nil, err
+ }
+
+ return &OpenID{
+ Provider: provider,
+ Config: &oauth2.Config{
+ ClientID: clientID,
+ ClientSecret: clientSecret,
+ RedirectURL: callbackURL,
+ Endpoint: provider.Endpoint(),
+ Scopes: []string{oidc.ScopeOpenID, "profile", "email"},
+ },
+ }, nil
+}