【发布时间】:2011-07-23 17:38:01
【问题描述】:
我的 Silverlight 应用程序(VS2010 Silverlight Business 模板附带的服务)中运行了基本的 ASP.NET 身份验证域服务。
如何使用此授予的身份验证来保护由标准 WCF 服务(也托管在 IIS 中的同一应用程序中)公开的安全方法?
【问题讨论】:
标签: c# .net silverlight wcf wcf-ria-services
我的 Silverlight 应用程序(VS2010 Silverlight Business 模板附带的服务)中运行了基本的 ASP.NET 身份验证域服务。
如何使用此授予的身份验证来保护由标准 WCF 服务(也托管在 IIS 中的同一应用程序中)公开的安全方法?
【问题讨论】:
标签: c# .net silverlight wcf wcf-ria-services
好的,这就是你的做法,标准的 WCF 服务需要几个属性,你需要分配Thread.CurrentPrincipal:
[ServiceContract(Namespace = "")]
[SilverlightFaultBehavior]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1
{
public Service1()
{
Thread.CurrentPrincipal = HttpContext.Current.User;
}
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Role = "Registered Users")]
public string DoSomeWork()
{
return "working";
}
}
【讨论】:
这里是一个很好的起点:Security for WCF RIA Services。您正在寻找的是 RequiresAuthentication 属性。
[RequiresAuthentication]
public Foo SomeMethodCall(object parameter1)
{
return service.GetResult(parameter1)
}
【讨论】: