【问题标题】:How can I protect WCF service from unauthorized access?如何保护 WCF 服务免受未经授权的访问?
【发布时间】:2016-06-11 18:00:44
【问题描述】:

编辑:

请注意两点:应用程序将公开可用,用户无需拥有任何帐户。如果更好,您还可以建议 WCF 以外的其他解决方案。

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

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

有什么方法可以保护 WCF 服务免受未经授权的访问?或者你有什么更好的想法吗?这个应用程序和服务器之间的通信应该是什么样子的?

提前感谢您的帮助!

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答,但正如我所说,用户不需要有任何帐户。
    【解决方案2】:

    NET 具有确保调用您的代码被授权这样做的内置功能。比如看一下这段sn-p的代码:

    [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

    【讨论】:

    • 感谢您的回答,但正如我所写,此应用程序将公开提供,因此我认为这不是一个好的解决方案(如果我错了,请纠正我)。
    猜你喜欢
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2018-05-20
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多