From 6d4336c3c8b4fed32dead51330b88fb02ffde62d Mon Sep 17 00:00:00 2001 From: Bobby Rullo Date: Mon, 20 Jun 2016 11:03:43 -0700 Subject: [PATCH] examples: support OOB in example app. --- examples/app/assets.go | 4 ++-- examples/app/data/index.html | 23 +++++++++++++++++++---- examples/app/main.go | 25 ++++++++++++++++++------- static/fixtures/clients.json.sample | 7 ++++++- 4 files changed, 45 insertions(+), 14 deletions(-) diff --git a/examples/app/assets.go b/examples/app/assets.go index 68712955..17f63658 100644 --- a/examples/app/assets.go +++ b/examples/app/assets.go @@ -68,7 +68,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _dataIndexHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x7c\x91\xbd\x6e\x03\x21\x10\x84\x7b\x3f\xc5\x8a\x2a\x29\x2c\xfa\x08\x9f\x94\x3e\x55\x5e\x20\xe2\xb8\xb5\xbd\x12\x3f\x27\x58\xa2\xf8\xed\xb3\x88\x38\xc7\x45\x91\xbb\x19\xc1\x7e\x03\xb3\xe6\xca\xc1\x4f\x07\x00\x33\xa7\xe5\xd6\x84\xc8\x73\xca\x01\xac\x63\x4a\xf1\xa4\xb4\x4f\x17\x8a\xaa\x1f\xc9\x21\xdb\xd9\xe3\xdd\x35\x9f\x37\xd3\xec\x32\xc1\x6b\xe5\x2b\x46\x26\x67\x19\x41\x60\x2f\xc3\x85\x96\xb4\x9b\x00\x78\x72\x29\x04\x7b\x2c\xb8\xda\x2c\x13\x0b\x78\x2a\x0c\xe9\x0c\xce\x93\x60\x8e\xb4\x94\xe7\x31\x42\x4b\xc6\xdf\x48\x43\x71\xad\x0c\x7c\x5b\xf1\xa4\x18\xbf\x58\x41\xb4\x41\xb4\xcb\xa9\x94\x8f\x4e\x52\xd3\xcf\xf0\x61\x60\xfd\x3e\x46\x74\xff\xda\xdd\x8f\xc8\x52\xe7\x40\x02\xfd\xb4\xbe\x8a\x7d\x1b\x3a\x31\xba\xf5\xf5\x6f\x75\x19\x2f\xf2\x15\xcc\x5b\x7b\x0f\x98\xef\xfb\xcb\x1b\xd6\xe8\xbe\x1b\xa3\xfb\xb2\xbe\x03\x00\x00\xff\xff\x27\x69\xf8\xf2\xb4\x01\x00\x00") +var _dataIndexHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x52\xcd\x4e\xc3\x30\x0c\xbe\xef\x29\xac\x9c\xe0\x30\x7a\x47\x6d\x25\x40\xdc\x90\x26\xf1\x02\x53\x9a\x78\x6d\xb4\xfc\x4c\x89\x8b\x36\x4d\x7b\x77\xdc\x96\xae\x5b\x81\x09\x6e\xfe\x14\xfb\xfb\x89\x9d\x37\xe4\x6c\xb9\x00\xc8\xab\xa0\x0f\xe5\x82\x2b\xae\x37\x21\x3a\x90\x8a\x4c\xf0\x85\xc8\x6c\xa8\x8d\x17\x65\xff\xc4\x8f\x24\x2b\x8b\x23\xea\x70\x9c\x40\x07\x75\x09\x4f\x2d\x35\xe8\xc9\x28\x49\x08\x4c\xf6\x78\xd1\xd0\x49\x5d\x4d\x00\xdc\xa9\xe0\x9c\x5c\x26\xdc\xc9\xc8\x13\x1a\xac\x49\x04\x61\x03\xca\x1a\xa6\x59\x1a\x9d\xee\x2f\x25\x32\xd6\x98\x4b\xe6\xc6\xef\x5a\x02\x3a\xec\xb0\x10\x84\x7b\x12\xe0\xa5\xe3\x5a\xc5\x90\xd2\x7a\x60\x12\x50\xce\xa6\x19\x9d\xcd\x70\x3d\x44\x3b\x1e\xc1\x6c\xe0\x61\xb5\x7a\x86\xd3\x69\x6a\xbd\x54\x48\x6d\xe5\x0c\xf3\x7d\x48\xdb\x32\x7c\xeb\xbf\xa8\x8b\xea\x48\xc6\x1a\xa9\x10\xeb\xca\x4a\xbf\x15\x3d\x1b\xda\x84\xff\xa4\x1a\xe6\xbc\x1e\xc7\xf2\xac\x23\xe7\x05\x7d\x37\x37\x5b\x97\x92\xd6\x56\x52\x6d\x05\x38\xa4\x26\xe8\x42\xb0\x9f\x8e\x70\xd0\x7e\x09\x1a\x17\x3f\xd8\xb8\xfa\x33\xee\x39\x1b\x9a\x36\x3f\xed\xed\x56\x80\xd7\xbd\x6a\xa4\xaf\xb1\x57\x1a\x75\x47\xfb\xd7\xa1\xbe\xc2\xf8\x40\xb7\x02\x45\xac\xf9\x1e\x30\x8a\xbf\xa8\xbf\x8f\xcd\x00\xd9\xef\xd2\x79\x36\x9c\x7b\x9e\x0d\xf7\xff\x19\x00\x00\xff\xff\xaf\x0b\xca\x75\x07\x03\x00\x00") func dataIndexHtmlBytes() ([]byte, error) { return bindataRead( @@ -83,7 +83,7 @@ func dataIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "data/index.html", size: 436, mode: os.FileMode(420), modTime: time.Unix(1465417812, 0)} + info := bindataFileInfo{name: "data/index.html", size: 775, mode: os.FileMode(420), modTime: time.Unix(1466378108, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/examples/app/data/index.html b/examples/app/data/index.html index 826bc686..a9b1e422 100644 --- a/examples/app/data/index.html +++ b/examples/app/data/index.html @@ -1,5 +1,6 @@ +
@@ -7,15 +8,29 @@
(comma-separated list of client-ids) - - +
+{{ if .OOB }} + +{{ else }} + +{{ end }} +
- +{{ if .OOB }} +
+ Code + +
+
+{{ end }} + +{{ if not .OOB }}
- +
+{{ end }} diff --git a/examples/app/main.go b/examples/app/main.go index 46dcca1b..fd4427a2 100644 --- a/examples/app/main.go +++ b/examples/app/main.go @@ -23,6 +23,7 @@ import ( "github.com/coreos/go-oidc/oauth2" "github.com/coreos/go-oidc/oidc" + "github.com/coreos/dex/client" pflag "github.com/coreos/dex/pkg/flag" phttp "github.com/coreos/dex/pkg/http" "github.com/coreos/dex/pkg/log" @@ -163,15 +164,21 @@ func main() { func NewClientHandler(c *oidc.Client, issuer string, cbURL url.URL) http.Handler { mux := http.NewServeMux() + oob := cbURL.String() == client.OOBRedirectURI + issuerURL, err := url.Parse(issuer) if err != nil { log.Fatalf("Could not parse issuer url: %v", err) } - mux.HandleFunc("/", handleIndex) + mux.HandleFunc("/", handleIndexFunc(oob)) mux.HandleFunc("/login", handleLoginFunc(c)) mux.HandleFunc("/register", handleRegisterFunc(c)) - mux.HandleFunc(cbURL.Path, handleCallbackFunc(c)) + if cbURL.String() != client.OOBRedirectURI { + mux.HandleFunc(cbURL.Path, handleCallbackFunc(c)) + } else { + mux.HandleFunc("/callback", handleCallbackFunc(c)) + } resendURL := *issuerURL resendURL.Path = "/resend-verify-email" @@ -180,12 +187,16 @@ func NewClientHandler(c *oidc.Client, issuer string, cbURL url.URL) http.Handler return mux } -func handleIndex(w http.ResponseWriter, r *http.Request) { - err := indexTemplate.Execute(w, nil) - if err != nil { - phttp.WriteError(w, http.StatusInternalServerError, - fmt.Sprintf("unable to execute template: %v", err)) +func handleIndexFunc(oob bool) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + err := indexTemplate.Execute(w, map[string]interface{}{ + "OOB": oob, + }) + if err != nil { + phttp.WriteError(w, http.StatusInternalServerError, + fmt.Sprintf("unable to execute template: %v", err)) + } } } diff --git a/static/fixtures/clients.json.sample b/static/fixtures/clients.json.sample index 4fb9b62e..50d9d649 100644 --- a/static/fixtures/clients.json.sample +++ b/static/fixtures/clients.json.sample @@ -3,7 +3,7 @@ "id": "XXX", "secret": "c2VjcmV0ZQ==", "redirectURLs": ["http://127.0.0.1:5555/callback"], - "trustedPeers": ["example-app"] + "trustedPeers": ["example-app", "public"] }, { "id": "example-app", @@ -15,6 +15,11 @@ "secret": "ZXhhbXBsZS1jbGktc2VjcmV0", "redirectURLs": ["http://127.0.0.1:8000/admin/v1/oauth/login"] }, + { + "id": "public", + "secret": "ZXhhbXBsZS1hcHAtc2VjcmV0", + "public": true + }, { "id": "oauth2_proxy", "secret": "cHJveHk=",