仅通过POST调用进行Azure身份验证的Web Api错误

时间:2018-06-21 14:45:07

标签: azure asp.net-web-api azure-active-directory

你能帮我吗? 我在azure上创建了一个Web api,并选择不允许匿名请求,而是使用azure活动目录对请求进行身份验证。下方的应用设置了“登录并读取用户个人资料”权限。

如果Web api背后的控制器接受GET请求,则它可以工作,而它却给我以下错误:“您无权查看此目录或页面。”

在调用网络api之前,我在页面(共享点页面)上打开iframe以隐式地从网络api获取令牌,该令牌调用以下基本的GET操作:

    [ActionName("Connect")]
    [HttpGet]
    public IHttpActionResult Connect()
    {
     return base.Content(HttpStatusCode.OK, "OK", new JsonMediaTypeFormatter(), "text/plain");
    }

后来我通过jquery调用了另一个操作(POST)...

    public IHttpActionResult PostPromote([FromBody] string request)

但是这时我收到403(禁止访问)消息。

我的webapi的CORS是在web.config文件中设置的:

 <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="https://mytenant.sharepoint.com" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      <add name="Access-Control-Allow-Credentials" value="true"/>
    </customHeaders>
  </httpProtocol>

如果我将方法切换为GET,那么(当然)如果我允许匿名请求也可以。

非常感谢,这让我发疯。

0 个答案:

没有答案