我正在使用ASP.NET应用程序(基于ASP.NET身份2)。每个用户都可以将数据发布到WCF服务(ASP控制器后端)。在系统中是配额,也是角色和其他。我希望每个用户对WCF的访问权限有限。我的意思是,如果“用户”试图创建自己的应用程序并连接到服务,“基本”用户无法做管理员可以做的事情。
基本上是关于授权。我不知道的是什么是最佳做法。我应该使用标头用户名和一些令牌或网站发送到WCF进行安全检查,并通过证书或其他保证仅接受该特定网站应用程序的其他内容为一个特定应用程序提供WCF通信吗?
如果没有任何描述的做法是好的那么它应该如何?
感谢您分享您的知识:)
答案 0 :(得分:1)
1-在MVC方面,授权使用[授权]属性完成。此属性验证.ASPX身份验证cookie已创建且有效。
2-在WCF上,您必须使用[PrincipalPermission(SecurityAction.Demand,Role =“Admin”)]装饰您的方法,其中“Admin”是MVC Web应用程序池标识。这样,您可以确保只能从管理门户调用此操作。例如,这同样适用于客户门户网站。
3-为了更细粒度的安全性,您可以通过设置CallContext(WCF一个)将用户名从MVC发送到WCF。 CallContext.Set(“username”,value)并使用拦截器从WCF读取它。