【问题标题】:WCF authorization from website client来自网站客户端的 WCF 授权
【发布时间】:2017-07-09 12:51:47
【问题描述】:

我正在与用户一起使用 ASP.NET 应用程序(基于 ASP.NET Identity 2)。每个用户都可以将数据发布到 WCF 服务(ASP 控制器后端)。在系统中是配额,还有角色和其他。我想限制每个用户对 WCF 的访问。我的意思是,如果“用户”尝试创建自己的应用程序并连接到服务,“基本”用户就无法做管理员可以做的事情。

基本上是关于授权。我不知道什么是最佳实践。我应该在标头用户名和某些令牌中发送到 WCF,还是在网站上进行安全检查,并通过证书或其他保证仅接受该特定网站应用程序的方式使 WCF 通信仅适用于一个特定应用程序?

如果没有任何描述的做法是好的,那么它应该是什么?

感谢您分享您的知识:)

【问题讨论】:

    标签: c# wcf security


    【解决方案1】:

    1- 在 MVC 端,使用 [Authorize] 属性完成授权。此属性验证 .ASPX 身份验证 cookie 是否已创建且有效。

    2- 在 WCF 上,您必须使用 [PrincipalPermission(SecurityAction.Demand, Role = "Admin")] 装饰您的方法,其中“Admin”是 MVC Web 应用程序池标识。这样可以确保只能从管理门户调用此操作。例如,这同样适用于客户门户。

    3- 为了更精细的安全性,您可以通过设置 CallContext(WCF 之一)将用户名从 MVC 发送到 WCF。 CallContext.Set("username",value) 并使用拦截器从 WCF 读取它。

    【讨论】:

    • 1) 当然,使用它。 2)我不知道这个属性是如何工作的,所以如果我添加“PortalAdmin”并且它匹配 MVC 应用程序池标识(运行 MVC 的用户)它只能访问这个应用程序?那很好! 3)根本不知道CallContext,现在我正在编辑wcf soap header来添加用户信息,你觉得CallContext更安全吗?
    • soap 标头没问题,这里没有安全问题;当您有熟练的人聆听您的管道时,他肯定会发现任何以明文形式发送的数据,无论是在soap标头还是请求标头中,甚至是一点点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多