带有 spotify 身份验证回调 url 的 Aspnet Core MVC 应用程序重定向到 127.0.0.1

Posted

技术标签:

【中文标题】带有 spotify 身份验证回调 url 的 Aspnet Core MVC 应用程序重定向到 127.0.0.1【英文标题】:Aspnet Core MVC application with spotify authentication callback url redirecting to 127.0.0.1 【发布时间】:2019-10-09 19:19:22 【问题描述】:

我正在构建一个 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 虚拟机 在 Docker 容器中运行的应用程序,侦听端口 80(无 https) nginx 服务器配置为我的域的反向代理 让我们加密为 nginx 颁发 SSL 证书 Spotify 重定向 URL 设置为 https://example.com/callbackhttp//:localhost:5001/callback

我试过了:

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

有没有办法我可以在 spotify authentication options 中指定主机,或者我可以在 nginx 中做一些魔术来帮助回调?

谢谢

【问题讨论】:

您用于 Spotify 身份验证的组件是什么? 我正在使用AspNet.Security.OAuth.Spotify 在下面的答案中添加了我的想法。希望有帮助 下面的答案有帮助吗? 【参考方案1】:

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

【讨论】:

如何指定域?我可以看到的 spotifyauth 的唯一选项是 `options.CallbackPath = "/callback";` 如果我进入域,它会引发异常:'The path in 'value' must start with '/'.'【参考方案2】:

我在过去使用了一个稍微不同的组件,但同样的应该适用...

对于回调路径,您只需将其设置为:

在 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 中指定的 url。

【讨论】:

以上是关于带有 spotify 身份验证回调 url 的 Aspnet Core MVC 应用程序重定向到 127.0.0.1的主要内容,如果未能解决你的问题,请参考以下文章

带有 Spotify iOS SDK 的 Cordova iOS - 触发身份验证

从 javascript [spotify auth] 中的弹出窗口获取访问令牌 url

重定向到带有 SAML 响应的回调 url 时出现错误无法以角度发布

Spotify 身份验证流程 (Spotify API)

HashRouter 导致 Spotify 隐式授权流失败,因为回调 URL 无效

如何从 spotify [身份验证库] [spotify-android-auth-1.0] 注销