【问题标题】:OAuth 2 Implemtation Not working as expectedOAuth2 实施未按预期工作
【发布时间】:2016-10-12 16:20:44
【问题描述】:

我是实施 OAuth2 工作流程的新手。我正在针对 google OAuth2 进行测试,我的设置如下。

  1. 服务器端播放框架。
  2. Angular 2 用于客户端。

两个应用程序都在同一个机器上,但在不同的端口下运行。但是,我已经为我的客户端 ajax 请求设置了代理。

首当其冲的工作是在服务器端完成的,我用谷歌发布的代码交换令牌。当我手动测试它并直接在浏览器选项卡中输入我的授权端点时,一切正常。我被重定向到谷歌,登录,然后重定向到授权端点,然后发出一个令牌。当第一次访问授权端点时,它会发送一个 303 响应,并且浏览器会自动重定向到 google。成功登录后,谷歌使用 url 中的访问代码重定向到我的授权端点。服务器读取访问代码并将其发送给谷歌以换取令牌。假设我的授权端点是http://localhost:8000/auth/google

但是,当我尝试从我的 Angular 2 应用程序启动流程并在成功登录谷歌后将谷歌发布的代码发送到谷歌时。在客户端,我正在向 google 发起请求,并将 redirect_uri 设置为授权端点 http://localhost:8000/auth/google。登录成功后,读取google返回的授权码,发送到服务器。在这种情况下,我收到一条错误消息,指出存在 redirect_uri_mismatch。

我不明白为什么这个设置不起作用。谷歌是否将访问代码限制为特定域,这意味着如果我的 Angular 应用程序在端口 3000 上运行,那么该访问代码是否仅对来自该端口的请求有效?

任何帮助都将不胜感激,因为我花了几个小时试图弄清楚为什么这不起作用。

【问题讨论】:

    标签: angular oauth playframework-2.5


    【解决方案1】:

    您是否在控制台中注册了redirect_url?注册后要等一段时间吗?是不是一模一样?

    请看这里:https://developers.google.com/identity/protocols/OAuth2InstalledApp

    您的应用必须向系统注册自定义 URI 方案才能接收授权响应。您的应用如何注册其自定义 URI 方案因平台而异。我们的库和示例演示了自定义 URI 方案重定向的一些特定于平台的实现。

    如果您正在处理来自客户端 Web 应用程序的身份验证,您还可以考虑使用隐式授权流程而不是更简单且旨在处理客户端身份验证的授权代码:https://developers.google.com/identity/protocols/OAuth2UserAgent

    【讨论】:

      猜你喜欢
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2021-06-04
      • 2022-01-24
      相关资源
      最近更新 更多