C# 是否允许本机应用程序客户端使用重定向URI中的任意随机可用端口?

C# 是否允许本机应用程序客户端使用重定向URI中的任意随机可用端口?,c#,oauth-2.0,google-oauth,C#,Oauth 2.0,Google Oauth,我正在了解如何以适合Windows的方式实现OAuth 2.0本机应用程序。我偶然发现这是用C写的。 但这就是这个例子让我感到困扰的地方: // Creates a redirect URI using an available port on the loopback address. string redirectUri = $"http://{IPAddress.Loopback}:{GetRandomUnusedPort()}/"; 在我读过的关于OAuth 2.0

我正在了解如何以适合Windows的方式实现OAuth 2.0本机应用程序。我偶然发现这是用C写的。 但这就是这个例子让我感到困扰的地方:

// Creates a redirect URI using an available port on the loopback address.
string redirectUri = $"http://{IPAddress.Loopback}:{GetRandomUnusedPort()}/";
在我读过的关于OAuth 2.0的所有文章中,都明确指出重定向uri必须在OAuth服务器上预先注册,并且不能是动态的。 这个例子是错误的还是我遗漏了什么?

根据您的要求,您应该能够注册一个静态重定向URI,如下所示:

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

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

但我很少看到这种支持,更常见的情况是,您需要注册三个左右的特定URL。您需要为您的提供商进行测试才能确定。

多亏了Gary的回复和他提供的答案,我找到了这篇文章:

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

在我最初的帖子中,我被利用随机可用端口的示例弄糊涂了,该端口使重定向uri成为动态的。 但事实证明,oauth服务器必须允许任何来自客户端的重定向uri端口,只要它位于环回接口上