Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.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
受Azure AD身份验证保护的WebAPI在IIS上不起作用,但在使用Visual Studio的IIS Express上工作正常_Azure_Iis_Asp.net Web Api_Azure Active Directory_Iis Express - Fatal编程技术网

受Azure AD身份验证保护的WebAPI在IIS上不起作用,但在使用Visual Studio的IIS Express上工作正常

受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文件为:

我正在使用Asp.NETWebAPI开发AnguarJS SPA应用程序

我已经在Azure AD上注册了客户端和后端应用程序

已使用以下详细信息注册我的客户端/Web应用程序:

  • 登录URL:
  • 应用程序ID URL:
  • 客户ID:34A721C3-20E4-41D5-9BC1-486A99BF7C26
  • 答复URL:
  • 我已为客户端应用程序授予访问WebAPI(LocalWebAPI)的其他应用程序权限(委托权限)

    My WebAPI具有以下设置:

  • 它使用OWIN中间件,startup.cs文件为:

    公营创业 { 公共无效配置(IAppBuilder应用程序) { ConfigureAuth(app); }

    app.useWindowsAzureActiveDirectoryBeareAuthentication (azureADBearerAuthOptions); }

  • 它使用以下参数在Azure AD上注册:

  • 登录URL: 应用程序ID URI: 回复网址:*

    我的Web.Config文件是:

    <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"]
        },
    });