【问题标题】:Is it allowed for a Native App client to use any random available port in a redirect URI?是否允许 Native App 客户端在重定向 URI 中使用任何随机可用端口?
【发布时间】:2021-05-09 11:28:33
【问题描述】:

我正在了解如何以正确的方式为 Windows 实施 OAuth 2.0 本机应用程序。我偶然发现了这个用 C# 编写的example。 但这就是我对这个例子的困扰:

// Creates a redirect URI using an available port on the loopback address.
string redirectUri = $"http://{IPAddress.Loopback}:{GetRandomUnusedPort()}/";

在我读过的关于 OAuth 2.0 的所有内容中,都明确表示 redirect_uri 必须在 OAuth 服务器上预先注册,并且不能是动态的。 示例是错误的还是我遗漏了什么?

【问题讨论】:

    标签: c# oauth-2.0 google-oauth


    【解决方案1】:

    根据OAuth for Native Apps,您应该可以像这样注册一个静态重定向 URI:

    • http://localhost/callback

    然后在运行时您应该能够使用各种重定向 URL,如下所示:

    • http://localhost:8001/callback
    • http://localhost:8002/callback
    • http://localhost:8003/callback

    虽然我很少看到这种支持,而且更常见的是您需要注册三个左右的特定 URL。您需要测试您的提供商以确定。

    【讨论】:

      【解决方案2】:

      感谢 Gary 的回复和他提供的link,我找到了这篇文章:

      授权服务器必须允许在 请求环回 IP 重定向 URI 的时间,以适应 从操作系统获取可用临时端口的客户端 请求时的系统。

      在我原来的帖子中,我对使用随机可用端口使重定向 uri 动态化的示例感到困惑。 但事实证明,oauth 服务器必须允许来自客户端的任何重定向 uri 端口,只要它位于环回接口上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-09
        • 2018-09-11
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        相关资源
        最近更新 更多