具有Spotify身份验证回调URL重定向到127.0.0.1的Aspnet Core MVC应用程序

时间:2019-05-23 08:51:42

标签: c# asp.net-mvc asp.net-core callback spotify

我正在构建一个aspnet核心Web应用程序,并希望允许我的用户使用其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服务器配置为我的域的反向代理
  • 让我们为nginx加密颁发SSL证书
  • 将Spotify重定向URL设置为https://example.com/callbackhttp//:localhost:5001/callback

我尝试过:

  • .UseUrls("https://example.com")中设置program.cs
  • spotify的应用程序配置中的重定向URL的各种不同组合

是否可以在spotify authentication options中指定主机,或者在nginx中可以做一些魔术来帮助回调?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以尝试将域用于已部署的实例-因此,如果有一个地址需要在网络上加载而不是127.0.0.1,那么您将需要使用该地址,因为这是您的本地计算机,在本地运行时可以正常工作但是一旦部署,您必须改用部署的地址

答案 1 :(得分:0)

我过去使用的组件稍有不同,但是应该应用相同的 ...

对于回调路径,您应该将其设置为:

在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 = SpotifyreturnUrl = 注册完成后您要去的本地路径位置(例如'/ home / welcome')

在此示例中,登录到Spotify后,用户将返回到account/externallogincallbackexternallogincallback进行注册,然后将用户推送到returnUrl中指定的网址。