我正在尝试调试Azure App Service .Net后端项目,该项目已启用数据库API访问的身份验证/授权。试图使用它会导致401 Unauthorized。
我已经按照其他地方的建议设置了MobileServiceClient对象的AlternateLoginHost,以指向远程Azure服务,以便依赖它。在App Service项目中,我从Kudu设置页面(https://[servicename].scm.azurewebsites.net)复制了SigningKey,并将ValidAudience和ValidIssuer设置为应用服务地址(https://[servicename].azurewebsites.net/)。 ConfigureMobileApp()使用Web.config本地值调用UseAppServiceAuthentication,然后调用UseWebApi。
我看过Fiddler的请求和回复,他们有X-ZUMO-AUTH令牌。我已在本地服务与远程服务之间切换,远程服务将接受令牌,而本地服务拒绝该服务。
我不知道从哪里开始。我错过了什么?还有什么需要检查的吗?
答案 0 :(得分:0)
事实证明,Azure App Service库与System.IdentityModel.Tokens.Jwt v5存在不兼容。我通过手动使用令牌验证方法发现了这一点,该方法为System.IdentityModel.Tokens.JwtSecurityToken提供了一个TypeLoadException。
不幸的是,在正常调试期间,调试日志中没有出现该异常。
这种不兼容性似乎是一个已知问题,但NuGet包中的依赖性并未注意到它。 (https://github.com/Azure/azure-mobile-apps-net-server/issues/195)