@@ -2,37 +2,61 @@ package main
22
33import (
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+
2140func 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
112159func 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
138188func 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
162215func 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 )
0 commit comments