Asp.net web api 具有AAD的安全web api-此请求的授权已被拒绝

Asp.net web api 具有AAD的安全web api-此请求的授权已被拒绝,asp.net-web-api,azure-active-directory,Asp.net Web Api,Azure Active Directory,我使用angularJS web应用程序登录azure=>此部分正在工作 但当我试图访问我的web应用程序中的授权控制器时,我收到“授权已被拒绝”。而授权承载令牌已发送到web API my Startup.Auth.cs public void ConfigureAuth(IAppBuilder app) { app.UseWindowsAzureActiveDirectoryBearerAuthentication( new WindowsAz

我使用angularJS web应用程序登录azure=>此部分正在工作

但当我试图访问我的web应用程序中的授权控制器时,我收到“授权已被拒绝”。而授权承载令牌已发送到web API

my Startup.Auth.cs

public void ConfigureAuth(IAppBuilder app)
    {
        app.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
               ConfigurationManager.AppSettings["ida:Audience"]
                },
            });
    }
高级控制器

 [Authorize]
public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

好的,我们将在angular js应用程序中利用
adal.js
adal angular.js
对用户进行身份验证,并在客户端获取令牌。详细信息您可以按照教程进行操作并缩小此问题的范围

但当我试图访问我的web应用程序中的授权控制器时,我收到“授权已被拒绝”。而授权承载令牌已发送到web API

如果手动启用中间件以验证令牌,则需要确保已正确配置
WindowsAzureActiveDirectoryBeareAuthenticationOptions.Academy
TokenValidationParameters.AllowedAcademy
将与传入JWT令牌的
aud
属性进行比较。您可以在浏览应用程序时按F12键并跟踪网络,或使用Fiddler捕获您的承载令牌,然后使用解码您的令牌


此外,如果您将内置应用程序用于后端web应用程序,您需要在应用程序服务应用程序的身份验证/授权刀片下为广告身份验证正确配置客户端ID或允许的令牌访问群体。

能否添加有关您的场景和错误消息的更多详细信息?您是否将访问令牌附加到请求?为了使请求成功,需要有一个由您指定的授权机构签名的承载令牌,并且具有具有您指定的值的访问群体(aud)声明。您可以检查代币,例如使用。
<Error>
<script/>
  <Message>Authorization has been denied for this request.</Message>
</Error>
VzViQXBwbGljYXRp 
b245XGFwaVx2YWx1ZXM=?=