Web服务 – 有没有办法限制对ASMX Web服务的访问,即asmx页面及其WSDL?

前端之家收集整理的这篇文章主要介绍了Web服务 – 有没有办法限制对ASMX Web服务的访问,即asmx页面及其WSDL?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个C#.net webservice,我需要限制访问。我已经要求我的消费者使用用户名和密码来呼叫服务。但是,有没有办法限制访问实际的asmx页面和WSDL?我需要通过用户名/密码和IP地址来限制对webservice的访问。如果用户没有正确的凭据,我不希望他们知道Web服务中存在哪些Web方法

这可以通过IIS完成吗?我知道我可以通过IIS限制IP地址,但是我也可以使用用户名/密码?

在IIS之外还有其他办法可以使用C#.net吗?

解决方法

那么,因为它是ASMX,你拥有整个ASP.NET运行时栈。

步骤#1 – 通过.config管理资源

应用< location>您要保护的资源的标签。假设它是一个单一的ASMX文件,您可以在web.config中简单地执行以下操作:

<location path="MyWebService.asmx">
    <system.web>
        <!-- resource specific options will go here -->
    </system.web>
</location>

步骤#2 – 验证您的用户

您需要决定如何实际验证用户。有几种方法可以实现,您可以利用多种认证标准。你需要选择适合你的方法

如果您使用的是Intranet,并且正在使用Windows身份验证,那么我非常建议使用它,因为它是真正的最简单的设置选项。但是,如果您的服务正在通过互联网访问,那么Windows的身份验证并不是真正的选择,您需要从网络标准中进行选择。其中最简单的是Basic Authentication,但是您应该仅使用SSL,因为用户名/密码未加密(仅base64编码)。下一步是Digest authentication,它不需要SSL,因为用户名/密码是使用MD5哈希发送的。为了最终,您可以与SSL v3一起向您向API的每个用户发出特定的客户端证书。

现在,为安全性选择哪个选项决定了还需要做什么。如果选择Windows安全性,则将以下元素添加到< system.web>我们从第1步开始的元素:

<authentication mode="Windows" />

其余的安全协议将需要更多的工作。 ASP.NET不提供对Basic,Digest或SSL v3的内在支持。从技术上讲,您可以利用IIS为您执行此类型的身份验证,但它总是映射到Windows用户。如果这是一个选项,那么只需将< authentication mode =“Windows”/>元素并配置IIS。但是,如果这不是一个选项,因为您根本无法控制IIS / ActiveDirectory,或者需要对自定义用户数据库进行身份验证,那么这意味着您需要连接自定义HttpModule来提供对这些安全性的支持协议。

步骤3 – 保护资源

确保资源的最简单的方法是基本上说:“不要让任何没有成功通过认证的人进入这个资源”。这是使用以下授权配置完成的:

<authorization>
    <deny users="?" />
</authorization>

如果您只想允许某些用户,您可以更改以执行以下操作:

<authorization>
    <deny users="*" />
    <allow users="jdoe,msmith" />
</authorization>

另一种方法是定义角色(组),并简单地将资源锁定到一个特殊角色,您将要访问资源的用户放入。

<authorization>
    <deny users="*" />
    <allow roles="My Service Users" />
</authorization>

这很好地映射到Windows身份验证,因为您只需设置一个Windows组,并让您的MIS团队使用ActiveDirectory管理该组中的哪些用户。但是,该功能也适用于非Windows身份验证,假设您使用的安全性实现通过其IPrincipal实现来暴露角色。

原文链接:https://www.f2er.com/html/233033.html

猜你在找的HTML相关文章