feat: Token Exchange (RFC 8693) (#255)
This change implements OAuth2 Token Exchange in OP according to RFC 8693 (and client code) Some implementation details: - OP parses and verifies subject/actor tokens natively if they were issued by OP - Third-party tokens verification is also possible by implementing additional storage interface - Token exchange can issue only OP's native tokens (id_token, access_token and refresh_token) with static issuer
This commit is contained in:
parent
9291ca9908
commit
8e298791d7
16 changed files with 961 additions and 59 deletions
|
@ -80,6 +80,31 @@ func main() {
|
|||
// w.Write(data)
|
||||
//}
|
||||
|
||||
// you can also try token exchange flow
|
||||
//
|
||||
// requestTokenExchange := func(w http.ResponseWriter, r *http.Request, tokens *oidc.Tokens, state string, rp rp.RelyingParty, info oidc.UserInfo) {
|
||||
// data := make(url.Values)
|
||||
// data.Set("grant_type", string(oidc.GrantTypeTokenExchange))
|
||||
// data.Set("requested_token_type", string(oidc.IDTokenType))
|
||||
// data.Set("subject_token", tokens.RefreshToken)
|
||||
// data.Set("subject_token_type", string(oidc.RefreshTokenType))
|
||||
// data.Add("scope", "profile custom_scope:impersonate:id2")
|
||||
|
||||
// client := &http.Client{}
|
||||
// r2, _ := http.NewRequest(http.MethodPost, issuer+"/oauth/token", strings.NewReader(data.Encode()))
|
||||
// // r2.Header.Add("Authorization", "Basic "+"d2ViOnNlY3JldA==")
|
||||
// r2.Header.Add("Content-Type", "application/x-www-form-urlencoded")
|
||||
// r2.SetBasicAuth("web", "secret")
|
||||
|
||||
// resp, _ := client.Do(r2)
|
||||
// fmt.Println(resp.Status)
|
||||
|
||||
// b, _ := io.ReadAll(resp.Body)
|
||||
// resp.Body.Close()
|
||||
|
||||
// w.Write(b)
|
||||
// }
|
||||
|
||||
// register the CodeExchangeHandler at the callbackPath
|
||||
// the CodeExchangeHandler handles the auth response, creates the token request and calls the callback function
|
||||
// with the returned tokens from the token endpoint
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue