【问题标题】:Azure App Service custom authentication getting System.ArgumentNullException: "Value cannot be null" "Parameter name: provider"Azure 应用服务自定义身份验证获取 System.ArgumentNullException:“值不能为空”“参数名称:提供者”
【发布时间】:2019-02-27 08:47:47
【问题描述】:

按照 (https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-dotnet-backend-how-to-use-server-sdk#custom-auth) 的示例,我有一个带有自定义身份验证的简单 dot net 移动应用程序

我有一个生成 JWT 令牌的端点 https://test2ixresearcher.azurewebsites.net/.auth/login/custom?username=ade%40ixcompany.com&password=a (用户名密码不勾选,随便输入即可)

这将创建一个令牌,我用它来调用安全端点,并在 X-ZUMO-AUTH 标头中提供令牌:https://test2ixresearcher.azurewebsites.net/api/SecuredData - 使用不正确的令牌或缺少令牌调用端点返回 401,如预期的那样 - 使用刚刚创建的令牌调用端点会生成 500 并带有以下消息,不是预期的

--启动错误信息-- 应用程序:2018-09-22T23:12:20 PID [5520] 严重 System.ArgumentNullException:值不能为空。 应用:参数名称:提供者 应用程序:在 Microsoft.Azure.AppService.Authentication.EasyAuthTokenStore.d__7.MoveNext() 应用程序:---从先前抛出异常的位置结束堆栈跟踪---

--结束错误信息-- 我也有一个不安全的端点,这没有任何问题。 https://test2ixresearcher.azurewebsites.net/api/UnSecuredData

我已经使用此模型部署了至少 4 个其他应用程序,这是出现此错误的第一个实例。错误出现在身份验证中,似乎成功验证了令牌颁发者并拉出用户,但在点击我的代码之前它失败了。

我的代码可以在https://github.com/antitheos/publictesting/tree/master/TestAzureCustomLogin找到

在通过门户或 Visual Studio 创建的新应用服务中发布到 Azure 时会发生这种情况。我有旧的应用程序服务正在运行,但我不敢尝试向它们发布,以防我破坏正在运行的实时应用程序。

任何帮助将不胜感激。

【问题讨论】:

  • 您发现问题所在了吗?我们正在经历同样的事情。已将相同的 Api/移动应用程序部署到 2 个没有问题的环境,但我们看到的第 3 个环境相同。我们已经以最低配置完成了删除和重新创建,但仍然没有骰子。
  • @razaross444 我有一张 Microsoft 的票,支持工程师可以重新创建问题并与产品团队合作。当我发现更多信息时,我会及时通知您。不确定向 Microsoft 开另一张票是否有助于加快处理速度,但您可以尝试。
  • @@Ade 我也正要开票。我们已经在美国西部的免费层上成功地运行了这个。这是我们第一次尝试在美国中部的付费层 (S2) 上设置它。我已将 Kudu 中每个环境的环境详细信息复制到文件中,并对它们进行比较,看看是否有任何突出之处。如果我们找到解决方案,我也会通知您。谢谢!
  • 打开了一张关键级别的票,刚刚和他们通了电话。他们在这里有您帖子的网址,并且也会尝试找到您的票(我猜是通过搜索您在此处发布的一些信息),因此他们俩都能获得更高的知名度。如果你在我之前找到解决方案,你介意告诉我吗?谢谢!
  • 我收到了回复,似乎应用服务现在有一个名为 WEBSITE_AUTH_RUNTIME_VERSION 的设置。在我的检查中,我可以在新的应用服务中找到设置。在按预期工作的旧应用服务中缺少此设置。我在 Kudu 下找到了设置。我将测试当我删除设置并报告我的发现时会发生什么。

标签: .net azure azure-mobile-services


【解决方案1】:

好的,微软找到了问题!

产品团队发现了一个回归错误,现在计划在大约一个月后的下一个版本中修复它。同时,您可以通过以下步骤解决。

  1. 打开 Azure 门户,导航到您的应用服务
  2. 单击资源浏览器刀片
  3. 在您的站点节点下,展开配置节点,然后单击 authSettings。
  4. 在顶部窗格中,确保您已选择读/写。
  5. 点击编辑按钮
  6. 修改 runtimeVersion 为 = 0.0.0
  7. 点击放置
  8. 点击发帖
  9. 重新启动您的网站。

【讨论】:

  • Tnx!这行得通,顺便说一句,从 OP 过去了一个多月,但我今天遇到了这个问题。
  • 数字......当他们说一个月时,我想“是的,对”。大声笑
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 2019-08-17
  • 2018-06-03
  • 2010-11-11
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2014-09-28
相关资源
最近更新 更多