<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                        
                                        
                                        <font size="2" face="Tahoma" color="#000000 ">I like it. I hadn't considered the Referer header as being the leak. Stupid secrets in query parameters. It'd be nice if we could do this...</font><br><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
                                       * once the authorization server acks the RP's message, the RP redirects
<br>  the user's browser to the authorization server, passing only the
<br>  "state=" value in the queryargs
<br>
<br>* the authorization server pulls state= from the URL to figure out which
<br>  app wants what power.</blockquote><font color="#3b5998" face="Tahoma" size="2"><b><br></b></font><div><font face="Tahoma" size="2">It seems like there'd be less errors if they sent `client_id=foo&state=123`. Only because then it doesn't require state to be globally unique, just unique to that client. Sure, if they did something like `state = crypto.randomBytes(16).toString('hex')`, it'd probably never clash, but still. We can't really stop some from doing a `state = rand(1,100)`...</font></div>