Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Spotify auth的ASP.NET核心重定向失败的外部身份验证服务_C#_Azure_Asp.net Core_.net Core - Fatal编程技术网

C# 使用Spotify auth的ASP.NET核心重定向失败的外部身份验证服务

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,这就是导致此问题

我遵循并为我的.NET core webapp设置了Spotify外部身份验证,它在本地Docker容器中运行良好(此错误的常见原因是回调URL不完全匹配)。但是当我将它发布到Azure应用程序服务(Linux)时,它看起来根本没有重定向,我得到了以下错误。我怀疑这与重新定向到Spotify和Spotify有关,但我是web api开发新手,有人能告诉我应该做什么吗

无效的\u客户端:无效的重定向URI

我注意到Spotify API在回调查询中响应为
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,从而在身份验证过程结束时为其提供令牌

您的待办事项:

  • 选择您的应用程序
  • 点击“编辑设置”
  • 在“重定向URI”部分添加您的地址
    https://.azurewebsites.net
    (替换
    您的应用程序名
    )并单击添加

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

    如果您按照您添加的教程进行操作
    https://localhost:44377/callback
    将URL重定向到上的应用程序。 当您将应用程序部署到Azure应用程序服务时,它将在
    https://.azurewebsites.net
    而不是
    localhost
    。在OAuth中有一个安全特性,它强制OAuth令牌只能转发到白名单URL。否则,攻击者可能伪造登录URL,从而在身份验证过程结束时为其提供令牌

    您的待办事项:

  • 选择您的应用程序
  • 点击“编辑设置”
  • 在“重定向URI”部分添加您的地址
    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
    后的值