![]() |
1
38
好吧,因为它是asmx,所以您可以随意使用整个ASP.NET运行时堆栈。 步骤1-通过.config管理资源
应用一
步骤2-验证用户身份您需要决定如何对用户进行身份验证。有几种方法可以做到这一点,还有几种可以利用的身份验证标准。你需要选择适合你的方法。 如果你在一个内部网,并且使用的是Windows身份验证,我强烈建议利用它,因为它确实是获得设置的最简单的选项。但是,如果您的服务是通过Internet访问的,那么Windows身份验证实际上不是一个选项,您需要从Web标准中进行选择。最简单的是 Basic Authentication 但是你应该 只有 由于用户名/密码未加密(仅对base64编码),因此在SSL上使用此选项。下一步是 Digest authentication 它不需要SSL,因为用户名/密码是使用MD5哈希发送的。为了最终的你可以去 SSL v3 向API的每个用户颁发特定的客户端证书。
现在,您为安全性选择的选项决定了还需要做什么。如果您选择Windows安全性,那么只需将以下元素添加到
其余的安全协议将需要更多的工作。ASP.NET不提供对basic、digest或ssl v3的内部支持。从技术上讲,您可以利用IIS为您进行这种类型的身份验证,但它总是映射到Windows用户。如果这是你的选择,那么只需离开
步骤3-保护资源保护资源的最简单方法是基本上说:“不要让任何未通过某种方式验证的人进入该资源”。这是使用以下授权配置完成的:
如果你只想允许 某些 可以更改为执行以下操作的用户:
另一种方法是定义角色(组),并简单地将资源锁定到一个特殊角色,您可以将要访问资源的用户放入该角色中。
这很好地映射到Windows身份验证,因为您只需设置一个Windows组,并让MIS团队使用ActiveDirectory管理该组中的哪些用户。但是,对于非Windows身份验证,该功能也可以正常工作,假设您使用的安全实现通过其IPrincipal实现公开角色。 |
![]() |
2
1
您可以使用httpmodule进行身份验证。 ssl+basicauthentication应该产生与其他工具链的最佳互操作。 在httpmodule中,您可以访问请求,并且可以拒绝未经身份验证的用户仅访问.asmx请求。即使这样,您也可以让他们访问WSDL。 |
![]() |
3
0
两个选项:在具有锁定权限的不同端口上创建完全不同的站点。这样做的好处是,提供了一定数量的“暗箱操作”(半开玩笑…)的安全性,或者您可以在您的站点下(相同的端口,不同的路径),在不同的应用程序池中添加一个新的应用程序,并以这种方式分配权限。 无论是哪种情况,您的Web服务都无法与各种各样的ASP.NET“东西”如应用程序对象进行通信(当然,它可以,但不会是同一个对象)。部署只是稍微困难一点:部署相同的二进制文件,但只包含一个Web服务文件。 |
![]() |
4
0
添加
|
![]() |
5
-1
我不知道这对你有多实际,但你可以考虑升级到WCF。WCF与ASMX Web服务完全向后兼容,通过定义MEX(元数据交换)端点,可以控制WSDL是否公开。没有mex端点,没有wsdl。 |
![]() |
6
-1
通过从machine.config中的元素中删除文档协议,可以停止显示WSDL。 更新: Web Services authentication - best practices? 如果您的用户有用户名/密码,您可以通过HTTPS使用HTTP基本身份验证。 您还可以以稍微不同的方式实现它。对Web服务的第一个调用应该是身份验证方法。客户端验证并接收验证令牌。此令牌应该呈现给Web服务公开的所有其他方法。 |
![]() |
user755806 · 从Rest服务返回JSON响应? 7 年前 |