Skip to content

Commit a95ae8a

Browse files
committed
Proof of concept
1 parent f3419dd commit a95ae8a

File tree

1 file changed

+63
-9
lines changed

1 file changed

+63
-9
lines changed

example/server/server.go

Lines changed: 63 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,61 @@ package main
22

33
import (
44
"encoding/json"
5+
"flag"
6+
"fmt"
7+
"github.com/go-oauth2/oauth2/v4/generates"
8+
"io"
59
"log"
610
"net/http"
11+
"net/http/httputil"
712
"net/url"
813
"os"
914
"time"
1015

11-
"github.com/dgrijalva/jwt-go"
1216
"github.com/go-oauth2/oauth2/v4/errors"
13-
"github.com/go-oauth2/oauth2/v4/generates"
1417
"github.com/go-oauth2/oauth2/v4/manage"
1518
"github.com/go-oauth2/oauth2/v4/models"
1619
"github.com/go-oauth2/oauth2/v4/server"
1720
"github.com/go-oauth2/oauth2/v4/store"
1821
"github.com/go-session/session"
1922
)
2023

24+
var (
25+
dumpvar bool
26+
idvar string
27+
secretvar string
28+
domainvar string
29+
portvar int
30+
)
31+
32+
func init() {
33+
flag.BoolVar(&dumpvar, "d", true, "Dump requests and responses")
34+
flag.StringVar(&idvar, "i", "222222", "The client id being passed in")
35+
flag.StringVar(&secretvar, "s", "22222222", "The client secret being passed in")
36+
flag.StringVar(&domainvar, "r", "http://localhost:9094", "The domain of the redirect url")
37+
flag.IntVar(&portvar, "p", 9096, "the base port for the server")
38+
}
39+
2140
func main() {
41+
flag.Parse()
42+
if dumpvar {
43+
log.Println("Dumping requests")
44+
}
2245
manager := manage.NewDefaultManager()
2346
manager.SetAuthorizeCodeTokenCfg(manage.DefaultAuthorizeCodeTokenCfg)
2447

2548
// token store
2649
manager.MustTokenStorage(store.NewMemoryTokenStore())
2750

2851
// generate jwt access token
29-
manager.MapAccessGenerate(generates.NewJWTAccessGenerate("", []byte("00000000"), jwt.SigningMethodHS512))
52+
// manager.MapAccessGenerate(generates.NewJWTAccessGenerate("", []byte("00000000"), jwt.SigningMethodHS512))
53+
manager.MapAccessGenerate(generates.NewAccessGenerate())
3054

3155
clientStore := store.NewClientStore()
32-
clientStore.Set("222222", &models.Client{
33-
ID: "222222",
34-
Secret: "22222222",
35-
Domain: "http://localhost:9094",
56+
clientStore.Set(idvar, &models.Client{
57+
ID: idvar,
58+
Secret: secretvar,
59+
Domain: domainvar,
3660
})
3761
manager.MapClientStorage(clientStore)
3862

@@ -60,6 +84,10 @@ func main() {
6084
http.HandleFunc("/auth", authHandler)
6185

6286
http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) {
87+
if dumpvar {
88+
dumpRequest(os.Stdout, "authorize", r)
89+
}
90+
6391
store, err := session.Start(r.Context(), w, r)
6492
if err != nil {
6593
http.Error(w, err.Error(), http.StatusInternalServerError)
@@ -82,13 +110,20 @@ func main() {
82110
})
83111

84112
http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) {
113+
if dumpvar {
114+
_ = dumpRequest(os.Stdout, "token", r) // Ignore the error
115+
}
116+
85117
err := srv.HandleTokenRequest(w, r)
86118
if err != nil {
87119
http.Error(w, err.Error(), http.StatusInternalServerError)
88120
}
89121
})
90122

91123
http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
124+
if dumpvar {
125+
_ = dumpRequest(os.Stdout, "test", r) // Ignore the error
126+
}
92127
token, err := srv.ValidationBearerToken(r)
93128
if err != nil {
94129
http.Error(w, err.Error(), http.StatusBadRequest)
@@ -105,11 +140,24 @@ func main() {
105140
e.Encode(data)
106141
})
107142

108-
log.Println("Server is running at 9096 port.")
109-
log.Fatal(http.ListenAndServe(":9096", nil))
143+
log.Printf("Server is running at %d port.\n", portvar)
144+
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d",portvar), nil))
145+
}
146+
147+
func dumpRequest(writer io.Writer, header string, r *http.Request) error {
148+
data, err := httputil.DumpRequest(r, true)
149+
if err != nil {
150+
return err
151+
}
152+
writer.Write([]byte("\n" + header + ": \n"))
153+
writer.Write(data)
154+
return nil
110155
}
111156

112157
func userAuthorizeHandler(w http.ResponseWriter, r *http.Request) (userID string, err error) {
158+
if dumpvar {
159+
_ = dumpRequest(os.Stdout, "userAuthorizeHandler", r) // Ignore the error
160+
}
113161
store, err := session.Start(r.Context(), w, r)
114162
if err != nil {
115163
return
@@ -136,6 +184,9 @@ func userAuthorizeHandler(w http.ResponseWriter, r *http.Request) (userID string
136184
}
137185

138186
func loginHandler(w http.ResponseWriter, r *http.Request) {
187+
if dumpvar {
188+
_ = dumpRequest(os.Stdout, "login", r) // Ignore the error
189+
}
139190
store, err := session.Start(r.Context(), w, r)
140191
if err != nil {
141192
http.Error(w, err.Error(), http.StatusInternalServerError)
@@ -160,6 +211,9 @@ func loginHandler(w http.ResponseWriter, r *http.Request) {
160211
}
161212

162213
func authHandler(w http.ResponseWriter, r *http.Request) {
214+
if dumpvar {
215+
_ = dumpRequest(os.Stdout, "auth", r) // Ignore the error
216+
}
163217
store, err := session.Start(nil, w, r)
164218
if err != nil {
165219
http.Error(w, err.Error(), http.StatusInternalServerError)

0 commit comments

Comments
 (0)