找不到Coinbase OAuth故障



我正试图在coinbase的应用程序中设置OAuth。我在回调重定向中授权后遇到了问题。

我有一个。Net Core应用程序设置如下:

public const string COINBASE_AUTH_ID = "coinbase";
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = COINBASE_AUTH_ID;
})
.AddCookie()
.AddOAuth(COINBASE_AUTH_ID, options =>
{
options.ClientId = Configuration["Coinbase:ClientId"];
options.ClientSecret = Configuration["Coinbase:ClientSecret"];
options.CallbackPath = new PathString("/signin-coinbase");
options.AuthorizationEndpoint = "https://www.coinbase.com/oauth/authorize";
options.TokenEndpoint = "http://www.coinbase.com/oauth/token";
options.SaveTokens = true;
//...

在我点击授权按钮后,我被重定向到我的回拨url:localhost/signin-coinbase,在那里我得到了一个错误:

异常:OAuth令牌终结点失败:状态:NotFound;标头:缓存控制:无存储,必须重新验证,无缓存,专用

在错误的正文部分,有一条消息:

正文:请求无效。您应该使用有效的POST参数进行POST,而不是GET请求。有关详细信息,请参阅https://developers.coinbase.com/docs/wallet/coinbase-connect;

编辑此错误发生在Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler

我推测原因是身份验证处理程序正在向/oauth/tokenapi发出Get Request,但它应该发出一个帖子,有什么想法吗?

我应该尝试使用Oidc吗?

我为此创建了一个nuget包,这样其他人就可以避免我遇到的问题:

Install-Package Coinbase.Authentication

结果证明他们的文件是错误的。在顶部,它表示他们的令牌端点是:

他们声称他们的代币访问url是:

访问令牌URL:http://www.coinbase.com/oauth/token

这对我来说有点奇怪,因为他们的令牌端点没有使用ssl。在搜索互联网时,我发现了一个使用正确url的应用程序:

基本上是为了解决这个问题,我改变了选项,看起来像这样:

.AddOAuth(COINBASE_AUTH_ID, options =>
{
options.ClientId = Configuration["Coinbase:ClientId"];
options.ClientSecret = Configuration["Coinbase:ClientSecret"];
options.CallbackPath = new PathString("/signin-coinbase");
options.AuthorizationEndpoint = "https://www.coinbase.com/oauth/authorize";
options.TokenEndpoint = "https://api.coinbase.com/oauth/token";

//...

最新更新