受Azure AD身份验证保护的WebAPI在IIS上不起作用,但在使用Visual Studio的IIS Express上工作正常
我正在使用Asp.NETWebAPI开发AnguarJS SPA应用程序 我已经在Azure AD上注册了客户端和后端应用程序 已使用以下详细信息注册我的客户端/Web应用程序:受Azure AD身份验证保护的WebAPI在IIS上不起作用,但在使用Visual Studio的IIS Express上工作正常,azure,iis,asp.net-web-api,azure-active-directory,iis-express,Azure,Iis,Asp.net Web Api,Azure Active Directory,Iis Express,我正在使用Asp.NETWebAPI开发AnguarJS SPA应用程序 我已经在Azure AD上注册了客户端和后端应用程序 已使用以下详细信息注册我的客户端/Web应用程序: 登录URL: 应用程序ID URL: 客户ID:34A721C3-20E4-41D5-9BC1-486A99BF7C26 答复URL: 我已为客户端应用程序授予访问WebAPI(LocalWebAPI)的其他应用程序权限(委托权限) My WebAPI具有以下设置: 它使用OWIN中间件,startup.cs文件为:
<add key="owin:AutomaticAppStartup" value="true"/>
<add key="ida:Tenant" value="xyz.onmicrosoft.com" />
<add key="ida:Audience" value="34A721C3-20E4-41D5-9BC1-486A99BF7C26" />
我还用[Authorize]属性修饰了我的控制器
一切似乎都很顺利。当我从Visual Studio 2015环境(IIS Express)运行应用程序时,我能够对用户进行身份验证,并能够从WebAPI访问资源
但是,当我使用相同的参数在IIS服务器上部署我的应用程序时(希望该应用程序现在位于localhost:8087上,并且客户端应用程序的回复URL为:localhost:8087),我在调用WebAPI时收到的错误是401:Unauthorized user
我在WebAPI调用的头中得到了令牌,但仍然得到了错误。我不确定这种行为。有人能帮上忙吗?请在您的配置身份验证中使用以下代码:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
},
});
看起来您已经正确配置了应用程序。最好的猜测是IIS服务器上有其他身份验证配置(例如Windows集成身份验证),它在OWIN中间件之前启动。@NavyaCanumalla:谢谢您的回复。我确实在IIS服务器上检查了Windows身份验证,但这也被禁用。@user3041212您解决了这个问题吗?我似乎也有同样的问题。
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
},
});