Приложение Aspnet Core MVC с URL-адресом обратного вызова для аутентификации spotify на 127.0.0.1 - PullRequest
2 голосов
/ 23 мая 2019

Я создаю основное веб-приложение aspnet и хочу, чтобы мои пользователи проходили аутентификацию с использованием своих учетных записей Spotify. Мне удалось заставить поток аутентификации работать, как и ожидалось, при локальном запуске, но когда я развертываю и использую свой домен, URL обратного вызова: http://127.0.0.1/callback.

Вот конфигурация для внешней аутентификации:

        services.AddAuthentication()
        .AddSpotify(options =>
        {
            options.ClientId = "blahblah";
            options.ClientSecret = "blahblah";
            options.CallbackPath = "/callback";
            options.Scope.Add("user-follow-read");

Как видите, options.CallbackPath - это /callback, так что я предполагаю, что это добавлено к хост-домену с сервера?

Моя конфигурация выглядит так:

  • Ubuntu 18.04 LTS VM
  • Приложение, работающее в контейнере Docker, прослушивающее порт 80 (без https)
  • Сервер Nginx, настроенный в качестве обратного прокси для моего домена
  • Позволяет зашифровать выдачу SSL-сертификатов для nginx
  • URL-адрес перенаправления Spotify установлен на https://example.com/callback и http//:localhost:5001/callback

Я пробовал:

  • Настройка .UseUrls("https://example.com") в program.cs
  • Различные комбинации URL-адресов перенаправления в конфигурации приложения spotify

Есть ли способ указать хост в spotify authentication options или, может быть, есть какая-то магия, которую я могу сделать в nginx, чтобы помочь с обратным вызовом?

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

В прошлом я использовал немного другой компонент, но тот же должен применяться ...

Для пути обратного вызова вы должны просто установить его на:

На Spotify - http://[yourlocaldomain]:[port]/signin-spotify - http://yourlocaldomain.com/signin-spotify

Используемый вами компонент установит /signin-spotify по умолчанию для CallbackPath, поэтому вам не нужно устанавливать его в настройке services.AddAuthentication().AddSpotify(options =>....

Тогда в вашем контроллере ваш 'ExternalLogin' должен выглядеть примерно так ...

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
    // Request a redirect to the external login provider
    return new ChallengeResult(provider, Url.Action("externallogincallback", "account", new { ReturnUrl = returnUrl }));
}

где provider = Spotify и returnUrl = локальный путь, по которому вы хотите перейти после завершения регистрации (например, '/home/welcome').

Пользователь будет возвращен к account/externallogincallback в этом примере после входа в Spotify. externallogincallback выполняет регистрацию, а затем подталкивает пользователя к URL, указанному в returnUrl.

0 голосов
/ 24 мая 2019

Вы можете попробовать использовать домен для развернутого экземпляра - так что, если есть адрес для загрузки вашего ответа в Интернете, это то, что вам нужно будет использовать вместо 127.0.0.1, поскольку это ваш локальный компьютер, который отлично работает при локальной работе. но после развертывания вы должны использовать развернутый адрес вместо

...