c# - 带有 spotify 身份验证回调 url 的 Aspnet Core MVC 应用程序重定向到 127.0.0.1
问题描述
我正在构建一个 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 重定向网址设置为
https://example.com/callback
和http//:localhost:5001/callback
我努力了:
- 设置
.UseUrls("https://example.com")
_program.cs
- spotify 应用配置中各种不同的重定向 url 组合
有没有办法我可以在 nginx 中指定主机,spotify authentication options
或者我可以在 nginx 中做一些魔术来帮助回调?
谢谢
解决方案
我过去使用了一个稍微不同的组件,但同样应该适用......
对于回调路径,您应该将其设置为:
在 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
将用户推送到returnUrl
.
推荐阅读
- apache-superset - 在超集上设置启用代理属性
- kotlin - 如何抑制 Intellij 中选定代码的重新格式化?
- docker - AWS 部署在 Elastic Beanstalk docker 类型环境中的多容器部署失败
- mongodb - 在 ejs 文件的脚本标签中使用猫鼬模型
- mongodb - 在 mongodb 中保留最新的文档版本
- python - Discord.py 清除机器人消息
- c# - 如何在 vb.net 中知道打印机托盘已满
- flutter - Flutter Rect.fromLTRB 和 Rect.fromLTWH 是如何工作的?
- git - 在 Window 11 上设置 SSH AWS 连接时无法与 52.119.168.71 端口 22 协商
- python - 如何解决错误“-:'int'和'tuple'不支持的操作数类型”