C# 是否允许本机应用程序客户端使用重定向URI中的任意随机可用端口?
我正在了解如何以适合Windows的方式实现OAuth 2.0本机应用程序。我偶然发现这是用C写的。 但这就是这个例子让我感到困扰的地方: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
// 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
- http://localhost:8001/callback
- http://localhost:8002/callback
- http://localhost:8003/callback
但我很少看到这种支持,更常见的情况是,您需要注册三个左右的特定URL。您需要为您的提供商进行测试才能确定。多亏了Gary的回复和他提供的答案,我找到了这篇文章: 授权服务器必须允许在服务器上指定任何端口 请求环回IP重定向URI的时间,以适应 从操作系统获取可用临时端口的客户端 请求时的系统 在我最初的帖子中,我被利用随机可用端口的示例弄糊涂了,该端口使重定向uri成为动态的。 但事实证明,oauth服务器必须允许任何来自客户端的重定向uri端口,只要它位于环回接口上