c# - 我可以绕过 MVC 应用程序内 Web API Controller 的组织身份验证吗?

标签 c# asp.net-mvc authentication azure asp.net-web-api

我有一个使用组织身份验证 (Azure AD) 的 MVC5、EF6 应用程序,除了一件事之外,一切都工作正常。 WebAPI Controller 需要处理来自未经身份验证的客户端的请求。客户端通常是发出 AJAX 请求的 Android 设备。

在我将组织身份验证添加到 MVC 应用程序之前,我的 WebAPI Controller 已被调用并正常运行,因此我知道我的路由是正确的。现在我已经添加了组织身份验证,我的 WebAPI Controller 不再被调用,并且客户端的 AJAX 请求超时。

我知道有 [Authorize] 等属性来指定对 Controller /方法的访问,但在使用组织身份验证时,似乎没有 [Authorize] 属性的 WebAPI Controller 不会被调用。

我的问题是,我可以将我的 WebAPI Controller 标记为允许来自未经身份验证的客户端的请求吗?如果可以,我该怎么做?

非常感谢。

最佳答案

答案是通过将下面的 xml 输入到根 Web.config 文件中来允许与特定 Controller 的匿名连接。

如果您的 Controller 名为“PersonController”,那么您应该在路径属性中输入的名称是“person”而不是“personcontroller”。

就我而言,因为我想允许对 WebAPI Controller 进行匿名请求,所以我需要在路径属性中为我的 Controller 名称添加前缀“api/”。

希望这可以帮助其他可能遇到同样问题的人。

<location path="api/my-controller-name">
  <system.web>
    <authorization>
      <allow users="?" />
    </authorization>
  </system.web>
</location>

关于c# - 我可以绕过 MVC 应用程序内 Web API Controller 的组织身份验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28167194/

相关文章:

c# - Microsoft.Security.Application.Encoder.UrlPathEncode 有什么作用?

c# - 如何警告用户他们的网络 session 即将超时?

c# - ASP.NET MVC 3.0 的学习资料?请列出!

ruby-on-rails - 如何在ActiveAdmin中自定义默认登录页面?

c# - 从 C# 针对 ADAM 验证 ADAM 用户 - 无法绑定(bind)

c# - 转换为 LINQ 查询的 IEnumerable<DateTime> 结果

c# - 应用程序不支持通过/common 或/consumers 端点错误 AD 登录

C# 进度条直到完成一半才更新

javascript - Asp.net MVC 使用 Ajax 从 PartialView 的操作链接加载父 View 不起作用

http - Bearer (JWT) 身份验证方案的身份验证信息 header