如何保护WCF服务免受未经授权的访问?

时间:2016-06-11 18:00:44

标签: c# wcf

修改

请注意两件事:应用程序将公开发布,用户不需要拥有任何帐户。如果它更好,你也可以建议除WCF之外的其他解决方案。

我正在使用C#开发一个可以轻松安装其他应用程序的应用程序。此应用程序支持的程序列表将存储在公共服务器上的数据库中。 只有我的应用才能访问此数据库。 每个人都可以安装此应用,用户需要有任何帐户。

现在,我想知道应用和服务器之间的通信应该如何。我正在考虑开发一个WCF服务,但是每个人都可以轻松连接到这个服务(只有我的程序才能访问这个服务)。

有没有办法保护WCF服务免受未经授权的访问?或者你可能更清楚这个应用程序和服务器之间的通信应该是什么样的?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以查看以下链接以获取有关此主题的帮助

https://msdn.microsoft.com/en-us/library/ms731925.aspx
https://msdn.microsoft.com/en-us/library/aa702565.aspx

您可以配置绑定以执行基于用户名和密码的身份验证,您验证用户名和密码是否有效,然后只有您可以授予对服务的访问权限。

答案 1 :(得分:-1)

NET具有内置功能,可确保您的代码被授权执行此操作。例如,看看这段代码:

[PrincipalPermission(SecurityAction.Demand, Role = "MyLocalSecurityGroup"]
public SearchResults Find(string contractNumber)
{
    // ...
}

注意[PrinciplePermission]属性。此属性告诉.NET只有作为" MyLocalSecurityGroup"成员的主体。允许角色运行此方法(其中主体是用户/服务帐户,角色是服务器上的本地定义的安全组)。换句话说,为了运行此方法,调用者必须在作为指定的本地安全组成员的帐户下运行。

有关如何创建群组的详细信息,请单击此处:https://msdn.microsoft.com/en-us/library/ms731200(v=vs.110).aspx