auth: issuer mix-up mitigation (#859)
This PR functions as a Reference implementation of [SEP-2468](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2468) / [RFC9207](https://datatracker.ietf.org/doc/rfc9207/). This PR hardens the MCP OAuth Client functionality against Mix-Up attacks: > Mix-up attacks aim to steal an authorization code or access token by > tricking the client into sending the authorization code or access > token to the attacker instead of the honest authorization or resource > server This PR hardens the client by adding support for a new `iss` parameter in authorization responses: - Authorization Servers broadcast support for the `iss` parameter via the `authorization_response_iss_parameter_supported` metadata parameter - If the parameter is supported, clients expect to receive the `iss` parameter in the authorization response - Clients compare the `iss` parameter in the authorization response to the `Issuer` parameter in the authorization metadata. The two must match exactly for the response to be processed. Fixes #941
This commit is contained in:
parent
4cbdd6a514
commit
2d47cc9664
1 changed files with 151 additions and 9 deletions
|
|
@ -36,6 +36,7 @@ func (r *codeReceiver) serveRedirectHandler(listener net.Listener) {
|
|||
r.authChan <- &auth.AuthorizationResult{
|
||||
Code: req.URL.Query().Get("code"),
|
||||
State: req.URL.Query().Get("state"),
|
||||
Iss: req.URL.Query().Get("iss"),
|
||||
}
|
||||
fmt.Fprint(w, "Authentication successful. You can close this window.")
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue