C# 使用Spotify auth的ASP.NET核心重定向失败的外部身份验证服务
我遵循并为我的.NET core webapp设置了Spotify外部身份验证,它在本地Docker容器中运行良好(此错误的常见原因是回调URL不完全匹配)。但是当我将它发布到Azure应用程序服务(Linux)时,它看起来根本没有重定向,我得到了以下错误。我怀疑这与重新定向到Spotify和Spotify有关,但我是web api开发新手,有人能告诉我应该做什么吗 无效的\u客户端:无效的重定向URI 我注意到Spotify API在回调查询中响应为C# 使用Spotify auth的ASP.NET核心重定向失败的外部身份验证服务,c#,azure,asp.net-core,.net-core,C#,Azure,Asp.net Core,.net Core,我遵循并为我的.NET core webapp设置了Spotify外部身份验证,它在本地Docker容器中运行良好(此错误的常见原因是回调URL不完全匹配)。但是当我将它发布到Azure应用程序服务(Linux)时,它看起来根本没有重定向,我得到了以下错误。我怀疑这与重新定向到Spotify和Spotify有关,但我是web api开发新手,有人能告诉我应该做什么吗 无效的\u客户端:无效的重定向URI 我注意到Spotify API在回调查询中响应为http,而不是https,这就是导致此问题
http
,而不是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
如果您按照教程进行操作,则添加了
https://localhost:44377/callback
将URL重定向到上的应用程序。
当您将应用程序部署到Azure应用程序服务时,它将在https://.azurewebsites.net
而不是localhost
。在OAuth中有一个安全特性,它强制OAuth令牌只能转发到白名单URL。否则,攻击者可能伪造登录URL,从而在身份验证过程结束时为其提供令牌
您的待办事项:
https://.azurewebsites.net
(替换您的应用程序名
)并单击添加现在,您应该能够登录到部署在Azure应用程序服务上的应用程序。这个重定向URL的白名单是(所有)OAuth实现所共有的。唯一不同的是您必须如何编辑白名单。如果您按照您添加的教程进行操作
https://localhost:44377/callback
将URL重定向到上的应用程序。
当您将应用程序部署到Azure应用程序服务时,它将在https://.azurewebsites.net
而不是localhost
。在OAuth中有一个安全特性,它强制OAuth令牌只能转发到白名单URL。否则,攻击者可能伪造登录URL,从而在身份验证过程结束时为其提供令牌
您的待办事项:
https://.azurewebsites.net
(替换您的应用程序名
)并单击添加现在,您应该能够登录到部署在Azure应用程序服务上的应用程序。这个重定向URL的白名单是(所有)OAuth实现所共有的。唯一不同的是如何编辑白名单。我添加了和https://.azurewebsites.net/callback/ 作为白名单URL。它适用于localhost,但不适用于Azure安装。这就是我应该看到的吗?我是否应该删除/callback/url由服务器部分(localhost:33567)和路径(
/callback
)组成。确保服务器部件与web应用的宿主位置相适应。但是,与适用于localhost的值相比,路径不得更改。因此,如果您的web应用程序名为foo,并且本地localhost:1234/callback
适合您,那么您的重定向URL应该是https://foo.azurewebsites.net/callback
。正如你在评论中所写的那样,不要在结尾添加额外的斜杠。谢谢,我会查看的。我记得最初没有额外的斜杠它是不起作用的,但可能是因为其他一些错误。我会检查一下然后回来的,没用。这很让人恼火,因为它在Docker工作得很好。调用Spotify并显示登录提示,接受密码后回调重定向失败。docker映像上没有问题,但是Azure失败了。好吧,当调用“使用Spotify登录”时,您的浏览器应该将您指向https://accounts.spotify.com/authorize?......&redirect_uri=xxxxx
。请在浏览器中检查此URL,尤其是在我的示例中标记为xxxxx
的redirect\u uri
后的值。这个xxxxx
是您应该在我的答案的步骤4中输入的值。(您必须对xxxxx
值执行“URL解码”,因为如果某些字符位于URL中,则必须对其进行编码。例如,在URL中,空格编码为%20)。如果自动重定向,请尝试在浏览器的私有模式下打开此URL。我已添加和https://.azurewebsites.net/callback/ 作为白名单URL。它适用于localhost,但不适用于Azure安装。这就是我应该看到的吗?我是否应该删除/callback/url由服务器部分(localhost:33567)和路径(/callback
)组成。确保服务器部件与web应用的宿主位置相适应。但是,与适用于localhost的值相比,路径不得更改。因此,如果您的web应用程序名为foo,并且本地localhost:1234/callback
适合您,那么您的重定向URL应该是https://foo.azurewebsites.net/callback
。正如你在评论中所写的那样,不要在结尾添加额外的斜杠。谢谢,我会查看的。我记得最初没有额外的斜杠它是不起作用的,但可能是因为其他一些错误。我会检查一下然后回来的,没用。这很让人恼火,因为它在Docker工作得很好。调用Spotify并显示登录提示,接受密码后回调重定向失败。docker映像上没有问题,但是Azure失败了。好吧,当调用“使用Spotify登录”时,您的浏览器应该将您指向https://accounts.spotify.com/authorize?......&redirect_uri=xxxxx
。请在浏览器中检查此URL,尤其是在中标记为xxxxx
的redirect\u uri
后的值