为什么 IIS 中的授权规则不会限制对我的 WCF 服务的访问?

2024-03-27

我有一个托管在 IIS 10 中的独立 WCF 服务。我想将对 Web 服务的访问限制为选定的用户组。我可以通过在 IIS 中执行以下操作来为 Web 应用程序执行此操作:

  • 身份验证:仅 Windows 身份验证(禁用匿名身份验证)
  • 授权规则:允许预定义组(即角色)

但是,当我对网络服务执行上述步骤并更改时clientCredentialType="Windows"在其 web.config 中,它仍然允许域中的任何用户与其通信。我错过了一些明显的东西吗?在配置授权方面,Web 服务的功能与 Web 应用程序是否不同?鉴于我的设置,我希望只有以下用户我的测试组能够与 Web 服务通信,而其他所有服务都会收到 401 - 未经授权。

顺便说一句,我尝试设置“拒绝所有人”规则,但域用户仍然可以与网络服务通信,所以我觉得授权设置没有以某种方式实现。寻找对此的任何见解。

以下是相关的web.config内容:

  <system.serviceModel>
    <services>
      <service name="StudyManagement.StudyManagement">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" name="StudyManagement" contract="StudyManagement.IStudyManagement" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <bindings>
      <basicHttpBinding>
        <binding maxReceivedMessageSize="1048576" />
        <binding name="secureHttpBinding">
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" minFreeMemoryPercentageToActivateService="0" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <directoryBrowse enabled="false" />
        <security>
            <authorization>
                <remove users="*" roles="" verbs="" />
                <add accessType="Allow" users="" roles="MyAllowGroup" />
            </authorization>
        </security>
  </system.webServer>

你可以参考这个website https://learn.microsoft.com/en-us/iis/manage/configuring-security/understanding-iis-url-authorization重新创建授权规则。另外,wcf服务的授权可以使用ServiceAuthenticationmanager,示例和教程。 https://learn.microsoft.com/en-us/dotnet/framework/wcf/samples/authorization-policy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 IIS 中的授权规则不会限制对我的 WCF 服务的访问? 的相关文章

  • 1&1 Windows 托管服务器 web.config URL 重写问题

    我面临与 1 1 托管的 Windows 服务器中的 URL 重写相关的问题 我正在尝试使用 web config 文件重写 url 但它根本不起作用 给我错误或 500 19 错误总结 HTTP 错误 500 19 内部服务器错误 无法访
  • 连接 WCF 客户端缓存?

    我的应用程序使用客户端企业缓存 我想避免为每个可缓存调用编写代码 并想知道是否有一种解决方案可以缓存 WCF 客户端调用 即使对于异步调用也是如此 这可以通过 WCF 行为 或其他方式来完成吗 代码示例 前几天 我使用 WCF 服务客户端
  • System.ServiceModel.Clientbase.Open() 的作用是什么?

    System ServiceModel Clientbase Open 的作用是什么 我从未使用过它 只是在一些代码中遇到过它 它可以抛出异常吗 如果没有调用 Close 是否有问题 如果您为 WCF 服务创建代理 则该代理实际上是 Cli
  • 通过 WCF 进行日志记录而不减慢速度

    我们的应用程序中有一个每月运行一次的大型流程 此过程通常运行约 30 分钟 并生成约 342000 个日志事件 最近 我们使用 WCF 将日志记录更新为集中式模型 但现在遇到了性能问题 以前的解决方案大约需要 30 分钟即可完成 但采用新的
  • 基于查询参数的WCF REST服务url路由

    由于 WCF 路由不支持 REST 服务的路由 因此我创建了一项 REST 服务 该服务具有一个端点 该端点接受所有传入请求 并根据查询参数重定向这些请求 我按照这篇文章做到了这一点http blog tonysneed com 2012
  • 为什么我仍然收到“已超过传入邮件的最大邮件大小配额 (65536)”错误?

    我遇到了众所周知的 WCF 错误 已超出传入消息的最大消息大小配额 65536 要增加配额 请使用相应绑定元素上的 MaxReceivedMessageSize 属性 在阅读了此错误的前五个 Google 结果后 我仍然不知道我的服务 客户
  • 使用版本控制时处理多台计算机上的 web.config 差异

    我确信每个人都必须处理这些情况 我们检查我们的源代码控制解决方案 每台开发机器都有自己的资源用于调试 构建和测试 最常见的是 网络服务器 IIS 数据库 SQL Web服务器很容易处理 每个开发机器都会有自己的proj user文件来指定不
  • WCF maxBytesPerRead 限制为 4096

    我在流模式下使用基本的 WCF Web 服务从服务器下载文件 我已将服务器端的绑定指定为
  • log4net 是否会杀死我的 WCF 单元测试?

    我的解决方案中有三个项目 提供我想要测试的功能的 WCF Web 服务 调用该 Web 服务的 Web 应用程序 对服务运行测试的测试项目 Web 服务和 Web 应用程序都使用 log4net 和单独的配置文件 并在 AssemblyIn
  • WCF:App.config 中的配置比自定义代理类中的硬编码更好吗?

    首先this https stackoverflow com q 6761105 5593152不重复 我有一个有点不同的问题 删除客户端 或跨平台项目中的客户端 App config 文件中的 WCF 配置并将其替换为注入的配置是一个好习
  • 将 NodeJS Rest 服务与 wso2 集成

    我的其余 Web 服务都是用 Nodejs 编写的 我想为这些 API 实现基于角色的 管理员 用户 超级管理员等 授权 如何将 wso2 与 NodeJS 一起使用 您可以使用 WSO2 API Manager 来实现此目的 这是一篇不错
  • 具有多个绑定的ServiceHostFactory

    如何使用具有多个绑定的 ServiceHostFactory 这是我尝试过的方法 但我不断遇到问题 一个又一个错误 using System using System Collections Generic using System Lin
  • 在集线器外部获取 SignalR 用户 (Hub.Context)

    有没有办法在集线器之外获取当前的 signalR 请求用户 我可以在集线器方法内部使用 Hub Context User 但是如果集线器方法调用任何其他底层 Wcf 服务调用 附加的BehaviorExtensionElement 用于添加
  • WCF 服务基地址 Http 和 netTcp

    我的 WCF 服务配置文件中定义了两个基址
  • 通过 web.config 设置拒绝目录中的所有文件

    作为测试 我尝试使用 web config 通过以下方式控制安全性 拒绝访问目录中除特定文件之外的所有文件 允许访问目录中除特定文件之外的所有文件 所以我设置 web config 如下
  • 如何解决“HTTP 错误 404.3 - 未找到”错误?

    简单的问题 我启动 VS2008 并创建一个新的 WCF 服务应用程序 这将创建一个默认应用程序 并使用一些测试方法来显示它的工作原理 我按 CTRL F5 确实有效 伟大的 但是 它使用 Visual Studio 开发服务器 我不想支持
  • 在 WCF 服务上的 AJAX 发出 REST 请求期间启用 CORS 中的 OPTIONS 方法

    我花了7个小时绞尽脑汁想弄清楚这个问题 我在整个网络上进行了搜索 但没有运气 我有一个 Angular 应用程序正在向 WCF 命令行托管服务应用程序发出请求 我设法通过使用这两个类来实现 CORS public class CustomH
  • 是否可以从 VS2010 插件刷新 WCF 服务引用?

    我想在 VS2010 插件中 模拟 右键单击 更新服务引用命令 我有一个对包含 Silverlight 项目的引用 我知道服务引用的名称和服务的 url 我发现了这个 http dedjo blogspot com 2007 03 addi
  • autofac wcf注册错误

    我正在尝试在 Wcf 上尝试使用 Autofac 进行结构 namespace WcfService1 Model DataContract IsReference true public partial class Account Dat
  • 通过 IoC 容器实例化 WCF 服务

    是否可以使 WCF 运行时通过 IoC 容器而不是通过其通常的进程来实例化服务 此外 考虑到容器的类型生活方式配置与服务的 InstanceContextBehavior 之间存在潜在冲突 这种方法会是一个糟糕的主意吗 我知道我可能完全问错

随机推荐