对Web服务的访问控制

这是我希望实现的目标:

我的ASP.NET Web服务托管在名为// service的服务器上。 我想通过服务器和应用程序来控制对Web服务的访问。 我的意思是,如果我在名为// web1的服务器上托管了两个ASP.NET Web应用程序(app1和app2),我只希望// web1 / app1能够调用Web服务。 我知道我可以授予访问// web1的IP地址的权限,但这样可以允许// web1 / app1// web1 / app2访问Web服务。

我正在考虑使用SSL证书,因为我不希望Web应用程序处理登录名/密码。 在// service上 ,我将授予访问// web1的ip并将客户端证书从// web1映射到Windows帐户,这将只允许来自// web1的应用程序访问。 但是,如何进一步控制对web1 / app1的访问?

您可以使用标准HTTP身份validation来控制哪些应用程序可以访问您的Web服务。

凭据在每个请求的Authorization标头中传递。 每个Web服务客户端(即// web1 / app1)都应该有自己的凭据,因此如果// web1 / app2尝试连接到Web服务而不提供已识别的凭据,则会拒绝访问。

我建议使用SSL加密所有流量,以便身份validation信息和其他敏感数据是安全的。

以下是一些可能有用的文章:

  • HTTP安全性和ASP.NET Web服务(请参阅“身份validation”部分)
  • ASP.NET Web服务中的身份validation

祝好运!

并不是的。

证书可以保护客户端和服务器域之间的传输。 为多个子目录拥有多个证书并不真正有用。

您要做的是创建一个返回令牌的登录服务。 然后,您使用该令牌管理服务器端的会话,客户端将其与每个后续请求一起使用以访问和执行可用服务。 (此令牌可以访问此Web服务吗?t / f)

您将不得不让客户端访问某种凭据。 无论是证书交换还是用户/通行证,您都必须弄清楚客户实际上是谁。