首页 > 解决方案 > 使用 Spotify auth 的 ASP.NET 核心重定向失败的外部身份验证服务

问题描述

我按照本教程为我的 .NET 核心 web 应用程序设置了一个 Spotify 外部身份验证,它在本地 Docker 容器中运行良好(此错误的常见原因是回调 URL 不完全匹配)。但是当我将它发布到 Azure App Service (Linux) 时,它看起来根本没有重定向,我收到以下错误。我怀疑它与重定向到 Spotify 并返回有关,但我是 web api 开发的新手,有人可以说明我应该做什么吗?

INVALID_CLIENT:无效的重定向 URI

我注意到 Spotify APIhttp在回调查询中响应而不是,https这就是导致此问题的原因,有没有办法更改示例中使用的 AddAuthentication 管道来请求https回调?

services.AddAuthentication()
.AddSpotify(options => {
  options.ClientId = "xxxx.....";
  options.ClientSecret = "xxxx....";
  options.CallbackPath = "/callback";  
  options.Events.OnRemoteFailure = (context) =>
    {
      // Handle failed login attempts here
     return Task.CompletedTask;
    };
}; // end of spotify options

标签: c#azureasp.net-core.net-core

解决方案


如果您按照教程添加了https://localhost:44377/callback作为重定向 URL 到https://developer.spotify.com/dashboard/上的应用程序。当您将应用程序部署到 Azure 应用服务时,它会在https://<your-app-name>.azurewebsites.net而不是localhost. 在 OAuth 中,有一个安全功能强制 OAuth 令牌仅转发到白名单 URL。否则,攻击者可能会伪造一个登录 URL,该 URL 将在身份验证过程结束时为他提供令牌。

你的待办事项:

  1. 转到https://developer.spotify.com/dashboard/
  2. 选择您的应用程序。
  3. 点击“编辑设置”
  4. 在“重定向 URI”部分中添加您的地址https://<your-app-name>.azurewebsites.net(替换your-app-name)并单击添加。

现在您应该能够登录到部署在 Azure 应用服务上的应用程序。这种重定向 URL 的白名单对于(所有)OAuth 实现是通用的。唯一不同的是您必须如何编辑白名单。


推荐阅读