summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2022-04-06 15:15:31 -0600
committermo khan <mo@mokhan.ca>2022-04-06 15:15:31 -0600
commite27e3a6049180203f49dacdb357afcc30e426d91 (patch)
tree705894063ebc4254c86990717a0c04adadf975db
parent33a05f6cc65ac7d909c671ba79b0676faa6e3284 (diff)
start to handle implicit flow request
-rwxr-xr-xsrc/oidc/bin/02_authz_code_token_request (renamed from src/oidc/bin/02_token_request)0
-rw-r--r--src/oidc/main.go31
2 files changed, 20 insertions, 11 deletions
diff --git a/src/oidc/bin/02_token_request b/src/oidc/bin/02_authz_code_token_request
index 48e49e8..48e49e8 100755
--- a/src/oidc/bin/02_token_request
+++ b/src/oidc/bin/02_authz_code_token_request
diff --git a/src/oidc/main.go b/src/oidc/main.go
index 5da4809..8df0d77 100644
--- a/src/oidc/main.go
+++ b/src/oidc/main.go
@@ -12,6 +12,7 @@ type AuthorizationRequest struct {
ClientId string
State string
RedirectUri string
+ Nonce string
}
type TokenRequest struct {
@@ -33,21 +34,29 @@ func handler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, "Hello, world!\n")
} else if r.URL.Path == "/authorize" && r.Method == "GET" {
- ar := &AuthorizationRequest{
- ResponseType: r.FormValue("response_type"),
- Scope: r.FormValue("scope"),
- ClientId: r.FormValue("client_id"),
- State: r.FormValue("state"),
- RedirectUri: r.FormValue("redirect_uri"),
- }
- if ar.ResponseType == "code" {
+ responseType := r.FormValue("response_type")
+ if responseType == "code" {
// Authorization Code Flow https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth
+ ar := &AuthorizationRequest{
+ ResponseType: r.FormValue("response_type"),
+ Scope: r.FormValue("scope"),
+ ClientId: r.FormValue("client_id"),
+ State: r.FormValue("state"),
+ RedirectUri: r.FormValue("redirect_uri"),
+ }
url := fmt.Sprintf("%s?code=example&state=%s", ar.RedirectUri, ar.State)
http.Redirect(w, r, url, 302)
- } else if ar.ResponseType == "id_token token" || ar.ResponseType == "id_token" {
+ } else if responseType == "id_token token" || responseType == "id_token" {
// Implicit Flow https://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth
- w.WriteHeader(http.StatusNotImplemented)
- } else if ar.ResponseType == "code id_token" || ar.ResponseType == "code token" || ar.ResponseType == "code id_token token" {
+ ar := &AuthorizationRequest{
+ ResponseType: r.FormValue("response_type"),
+ RedirectUri: r.FormValue("redirect_uri"),
+ Nonce: r.FormValue("nonce"),
+ }
+ idToken := "jwt"
+ url := fmt.Sprintf("%s?access_token=example&token_type=bearer&id_token=%s&expires_in=3600&state=%s", ar.RedirectUri, idToken, ar.State)
+ http.Redirect(w, r, url, 302)
+ } else if responseType == "code id_token" || responseType == "code token" || responseType == "code id_token token" {
// Hybrid Flow https://openid.net/specs/openid-connect-core-1_0.html#HybridFlowAuth
w.WriteHeader(http.StatusNotImplemented)
} else {