gpt4 book ai didi

azure - 使用 Azure AD 身份验证保护的 WebAPI 无法在 IIS 上工作,但在使用 Visual Studio 的 IIS Express 上工作正常

转载 作者:行者123 更新时间:2023-12-02 07:28:23 25 4
gpt4 key购买 nike

我正在开发一个使用 Asp.Net WebAPI 调用的 AnguarJS SPA 应用程序。

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

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

  1. 登录网址:http://localhost:93
  2. 应用程序 ID 网址:http://xyz.onmicrosoft.com/XYZLocalClient
  3. 客户端ID:34A721C3-20E4-41D5-9BC1-486A99BF7C26
  4. 回复网址:http://localhost:93

我已向其他应用程序授予客户端应用程序访问 WebAPI (LocalWebAPI) 的权限(委托(delegate)权限)。

我的 WebAPI 具有以下设置:

  1. 它使用 OWIN 中间件,startup.cs 文件如下:

    公开课启动{ 公共(public)无效配置(IAppBuilder应用程序) { 配置身份验证(应用程序); }

    private void ConfigureAuth(IAppBuilder app)
    {
    var azureADBearerAuthOptions = new
    WindowsAzureActiveDirectoryBearerAuthenticationOptions
    {
    Tenant = ConfigurationManager.AppSettings["ida:Tenant"]
    };

    azureADBearerAuthOptions.TokenValidationParameters =
    new System.IdentityModel.Tokens.TokenValidationParameters()
    {
    ValidAudience =
    ConfigurationManager.AppSettings["ida:Audience"]
    };

    app.UseWindowsAzureActiveDirectoryBearerAuthentication (azureADBearerAuthOptions); }

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

登录网址:http://localhost:93/Api/V1/应用程序 ID URI:https://xyz.onmicrosoft.com/LocalCognia回复网址:http://localhost:93/Api/V1/ *

我的 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] 属性装饰了我的 Controller 。

一切似乎都运行良好。当我从 Visual Studio 2015 环境 (IIS Express) 运行应用程序时,我能够对用户进行身份验证并能够从 WebAPI 访问资源。

但是,一旦我使用相同的参数在 IIS 服务器上部署应用程序(预计该应用程序现在位于 localhost:8087 上,并且客户端应用程序的回复 URL 为:localhost:8087),我就调用 WebAPI 时出现 401 错误:未经授权的用户。

我在 WebAPI 调用的 header 中获取了 token ,但仍然收到错误。不确定这种行为。有人可以帮忙吗?

最佳答案

请在您的ConfigureAuth中使用以下代码:

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
},
});

关于azure - 使用 Azure AD 身份验证保护的 WebAPI 无法在 IIS 上工作,但在使用 Visual Studio 的 IIS Express 上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45939264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com