Ошибка Coinbase OAuth не найдена - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь настроить OAuth в своем приложении для coinbase.У меня возникают проблемы после авторизации в обратном вызове обратного вызова.

У меня есть настройка приложения .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; Заголовки: Cache-Control: no-store,must-revalidate, no-cache, private

В разделе тела сообщения об ошибке появляется сообщение:

Body: Неверный запрос.Вместо запроса GET вы должны сделать POST с действительными параметрами POST.Для получения дополнительной информации см. https://developers.coinbase.com/docs/wallet/coinbase-connect;

РЕДАКТИРОВАТЬ Эта ошибка происходит в Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler

Я предполагаю, что причина в том, что обработчик аутентификации делаетa Получить запрос к /oauth/token API, но он должен сделать сообщение, Есть идеи?

Должен ли я попробовать использовать Oidc?

1 Ответ

0 голосов
/ 27 октября 2018

Я создал пакет 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";


 //...
...