Skip to content

Commit 7db0f47

Browse files
authored
Merge pull request #177 from derekbassett/poc
Proof of concept Dumper.
2 parents 8b2219d + e45c3c1 commit 7db0f47

File tree

3 files changed

+70
-14
lines changed

3 files changed

+70
-14
lines changed

example/client/client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ var (
2626
Scopes: []string{"all"},
2727
RedirectURL: "http://localhost:9094/oauth2",
2828
Endpoint: oauth2.Endpoint{
29-
AuthURL: authServerURL + "/authorize",
30-
TokenURL: authServerURL + "/token",
29+
AuthURL: authServerURL + "/oauth/authorize",
30+
TokenURL: authServerURL + "/oauth/token",
3131
},
3232
}
3333
globalToken *oauth2.Token // Non-concurrent security

example/server/server.go

Lines changed: 67 additions & 11 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

@@ -59,7 +83,11 @@ func main() {
5983
http.HandleFunc("/login", loginHandler)
6084
http.HandleFunc("/auth", authHandler)
6185

62-
http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) {
86+
http.HandleFunc("/oauth/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)
@@ -81,14 +109,21 @@ func main() {
81109
}
82110
})
83111

84-
http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) {
112+
http.HandleFunc("/oauth/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,26 @@ 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.Printf("Point your OAuth client Auth endpoint to %s:%d%s", "http://localhost", portvar, "/oauth/authorize")
145+
log.Printf("Point your OAuth client Token endpoint to %s:%d%s", "http://localhost", portvar, "/oauth/token")
146+
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d",portvar), nil))
147+
}
148+
149+
func dumpRequest(writer io.Writer, header string, r *http.Request) error {
150+
data, err := httputil.DumpRequest(r, true)
151+
if err != nil {
152+
return err
153+
}
154+
writer.Write([]byte("\n" + header + ": \n"))
155+
writer.Write(data)
156+
return nil
110157
}
111158

112159
func userAuthorizeHandler(w http.ResponseWriter, r *http.Request) (userID string, err error) {
160+
if dumpvar {
161+
_ = dumpRequest(os.Stdout, "userAuthorizeHandler", r) // Ignore the error
162+
}
113163
store, err := session.Start(r.Context(), w, r)
114164
if err != nil {
115165
return
@@ -136,6 +186,9 @@ func userAuthorizeHandler(w http.ResponseWriter, r *http.Request) (userID string
136186
}
137187

138188
func loginHandler(w http.ResponseWriter, r *http.Request) {
189+
if dumpvar {
190+
_ = dumpRequest(os.Stdout, "login", r) // Ignore the error
191+
}
139192
store, err := session.Start(r.Context(), w, r)
140193
if err != nil {
141194
http.Error(w, err.Error(), http.StatusInternalServerError)
@@ -160,6 +213,9 @@ func loginHandler(w http.ResponseWriter, r *http.Request) {
160213
}
161214

162215
func authHandler(w http.ResponseWriter, r *http.Request) {
216+
if dumpvar {
217+
_ = dumpRequest(os.Stdout, "auth", r) // Ignore the error
218+
}
163219
store, err := session.Start(nil, w, r)
164220
if err != nil {
165221
http.Error(w, err.Error(), http.StatusInternalServerError)

example/server/static/auth.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<body>
1515
<div class="container">
1616
<div class="jumbotron">
17-
<form action="/authorize" method="POST">
17+
<form action="/oauth/authorize" method="POST">
1818
<h1>Authorize</h1>
1919
<p>The client would like to perform actions on your behalf.</p>
2020
<p>

0 commit comments

Comments
 (0)