首页 > 解决方案 > 浏览器如何处理 OAuth2 中的 redirect_uri?

问题描述

我知道这redirect_uri是 OAuth 流程的关键部分,但我的问题是浏览器如何在成功通过身份验证后实际处理从 IDP 返回的重定向请求?我很困惑,因为:

  1. 响应是 200 而不是 302 重定向
  2. 没有位置头响应

那么浏览器如何分析此响应并执行将您重定向到地址的操作redirect_uri

谢谢!

标签: google-chromebrowseroauth-2.0azure-active-directory

解决方案


浏览器处理重定向并没有什么神奇之处——无论是通过 30X 响应代码还是一些 Javascript 操作。

以 Azure AD 为例,假设您已登录 Microsoft 帐户。如果您可以捕获您的 OAuth2 请求的响应内容(端点类似于https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize?client_id...),就会有一个隐藏表单 -

<html>
<head>
  <title>Working...</title>
</head>
<body>
  <form method="POST" name="hiddenform" action="https://localhost/redirect_url">
    <input type="hidden" name="id_token" value="ey..." />
    <input type="hidden" name="state" value="state..." />
    <input type="hidden" name="session_state" value="guid..." />
    <noscript>
      <p>Script is disabled. Click Submit to continue.</p>
      <input type="submit" value="Submit" />
    </noscript>
  </form>
  <script language="javascript">document.forms[0].submit();</script>
</body>
</html>

如您所见,表单包含您的 id_token。该脚本自动触发提交操作,该操作导航到您的端点,因此重定向


推荐阅读