已发布WebAPI中的Azure AD身份验证不起作用

已发布WebAPI中的Azure AD身份验证不起作用,azure,authentication,asp.net-web-api,azure-active-directory,adal,Azure,Authentication,Asp.net Web Api,Azure Active Directory,Adal,我正在尝试将Azure Active Directory身份验证添加到我的ASP.NET WebAPI中。 我遵循并在Azure中正确配置了我的租户和应用程序 现在,如果我用一个本地测试,身份验证可以工作,我可以看到经过身份验证的用户的声明 User.Identity.IsAuthenticated=true 但是,如果我将我的API发布到Azure(作为Web应用程序),则身份验证似乎不再有效,即使使用完全相同的代码在本地测试API。。。我唯一需要更改的是API的端点: vs 注意在

我正在尝试将Azure Active Directory身份验证添加到我的ASP.NET WebAPI中。 我遵循并在Azure中正确配置了我的租户应用程序

现在,如果我用一个本地测试,身份验证可以工作,我可以看到经过身份验证的用户的声明

User.Identity.IsAuthenticated=true
但是,如果我将我的API发布到Azure(作为Web应用程序),则身份验证似乎不再有效,即使使用完全相同的代码在本地测试API。。。我唯一需要更改的是API的端点:


vs


注意在本地测试并发布我的API时,传递给API的JWT令牌完全相同,因为它们正在验证同一Azure AD和同一用户帐户

这个问题的根源是什么?
是否azure使用https,而我在本地http上运行?如果是这样,我可以尝试解决此问题吗?

似乎在发布到Azure时,我的
web.config
中的一些Azure广告特定配置值被替换

如果启用组织身份验证,则可以选择现有AD,但部署只是以与我不同的方式添加了配置值


取消选中此选项并亲自处理解决了此问题

这可能是由于您发布API所遵循的过程造成的。如果您是从Visual Studio发布,并且使用“组织”设置,则发布逻辑将在Azure AD中为您的云托管web API实例创建一个新应用,并相应地更改受众设置。因此,您还需要在请求令牌的逻辑中匹配这些更改—您需要使用与资源标识符相同的访问群体为您的API请求令牌,否则您将最终获得基于本地主机的部署的令牌,并将其发送到您的云实例,而云实例将拒绝该令牌。
您可以通过在将应用发布到网站时选择不使用组织设置来避免这种情况,这将保持受众不变,并允许您对本地和云实例使用令牌。

这是正确的,如果启用组织身份验证,您可以选择现有广告,但部署只是以与我不同的方式添加了配置值。取消选中此选项并亲自处理解决了问题