diff options
| author | mo khan <mo@mokhan.ca> | 2022-04-06 15:15:31 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2022-04-06 15:15:31 -0600 |
| commit | e27e3a6049180203f49dacdb357afcc30e426d91 (patch) | |
| tree | 705894063ebc4254c86990717a0c04adadf975db | |
| parent | 33a05f6cc65ac7d909c671ba79b0676faa6e3284 (diff) | |
start to handle implicit flow request
| -rwxr-xr-x | src/oidc/bin/02_authz_code_token_request (renamed from src/oidc/bin/02_token_request) | 0 | ||||
| -rw-r--r-- | src/oidc/main.go | 31 |
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 { |
