Asp.net web api 通过邮递员向Web API发送承载令牌

Asp.net web api 通过邮递员向Web API发送承载令牌,asp.net-web-api,jwt,azure-ad-graph-api,Asp.net Web Api,Jwt,Azure Ad Graph Api,更新 我已经能够得到一个持票人代币使用指示从 以下是《邮递员》中的说明: 网址: 类型:邮政 标题:无 正文:表单数据 授予\类型:客户端\凭据 客户id:[客户id] 客户机密:[客户机密] 但是,如果我在调用中向Web API端点发送相同的令牌,我仍然会返回“此请求的授权已被拒绝” 为什么还不授权? 结束更新 我创建了一个ASP.NETWebAPI项目,该项目使用组织Azure AD实例进行保护。我已正确设置租户id、客户id和密码 Azure AD实例与支持Office 365/S

更新

我已经能够得到一个持票人代币使用指示从

以下是《邮递员》中的说明:

  • 网址:
  • 类型:邮政
  • 标题:无
  • 正文:表单数据
  • 授予\类型:客户端\凭据
  • 客户id:[客户id]
  • 客户机密:[客户机密]

但是,如果我在调用中向Web API端点发送相同的令牌,我仍然会返回“此请求的授权已被拒绝”

为什么还不授权?

结束更新


我创建了一个ASP.NETWebAPI项目,该项目使用组织Azure AD实例进行保护。我已正确设置租户id、客户id和密码

Azure AD实例与支持Office 365/SharePoint实例的实例相同,其目的是创建SharePoint加载项,该加载项可以使用登录用户的上下文调用服务

我一直在测试API。我可以毫无问题地调用未经授权的端点。但是,当我添加[Authorize]属性时,我总是得到这样的响应:“此请求的授权已被拒绝。

据我所知,我需要生成一个承载令牌,并将其添加到邮件头中的邮递员请求中(见图)。在谷歌搜索了很多次之后,我仍然没能做到这一点

我的问题是:如何为受Azure AD保护的Web API实例生成承载令牌

我的配置代码如下:

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

首先,您可以使用POSTMAN测试受承载令牌保护的web api。这是我的邮递员截图:

基本上:在请求头中,将密钥指定为“Authorization”,将值指定为“Bearer[your token”。如果遇到错误,请查看响应头,您将看到更详细的错误信息


注意,大多数令牌都有一个有效期,您可以尝试验证您的令牌是否有效。例如,

我记得它会提示登录页面,您应该登录。此外,您还需要将您登录的用户设置为在应用程序中分配的用户,在该应用程序中您可以获得客户端id和密钥。授权问题。请确保您的应用程序是内置的
[tenantname]
您应该向我们显示被拒绝的呼叫。您向我们显示了您为获取令牌而进行的呼叫,而不是您使用令牌的呼叫。我将检查您是否已将令牌正确地放在标题中。没有任何引号或任何内容……并且使用Bearer关键字