C# 已验证的WCF:获取当前安全上下文
我有以下情况:C# 已验证的WCF:获取当前安全上下文,c#,wcf,web-services,C#,Wcf,Web Services,我有以下情况: 我的数据库中存储了各种用户数据 此数据是通过web应用程序输入的 我们希望通过web服务向用户公开这些数据,以便他们能够将数据与应用程序集成 我们还想公开这些服务上的一些业务逻辑。因此,我们不想使用OData。 这是一个多租户应用程序,所以我只想向他们而不是其他用户公开他们的数据。同样,我们公开的业务逻辑应该与经过身份验证的用户相关 我想让用户使用OASIS方案对web服务进行身份验证——据我所知,WCF已经允许这种开箱即用的方式——或者我们可以向他们颁发证书进行身份验证。这
- 我的数据库中存储了各种用户数据
- 此数据是通过web应用程序输入的李>
- 我们希望通过web服务向用户公开这些数据,以便他们能够将数据与应用程序集成
- 我们还想公开这些服务上的一些业务逻辑。因此,我们不想使用OData。
- 这是一个多租户应用程序,所以我只想向他们而不是其他用户公开他们的数据。同样,我们公开的业务逻辑应该与经过身份验证的用户相关
function GetUsersData(id)
var user := Lookup User based on Username from Auth Context
var data := Get Data From Repository based on "user"
return data
end function
对于业务逻辑场景,我认为应该是这样的:
function PerformBusinessLogic(someData)
var user := Lookup User based on Username from Auth Context
var returnValue := Perform some logic based on supplied data
return returnValue
end function
这里的难点是获取用户通过身份验证的当前用户名(或证书场景中的证书信息)强>
WCF甚至启用了这个场景吗?如果不是,WSE3会启用此功能吗
谢谢,应该不会太难,我认为:
- 如果您的用户在WCF服务中使用Windows用户凭据进行身份验证,您将能够在下找到他们的凭据
ServiceSecurityContext.Current.WindowsIdentity
- 如果您的用户使用证书进行身份验证,您将在下面找到他们的身份(将是CertificateIdentity而不是WindowsIdentity)
WCF在许多方面给了您很多灵活性-我非常怀疑您是否会发现一个场景在WSE3中可以工作,但在WCF中却不能同样好(或更好)地工作 太棒了,谢谢!这正是我希望得到的信息,出于某种原因,我想我一定是在文档中遗漏了这一点。我也在努力让它继续下去。我希望看到它在本地机器上运行,从测试客户端运行,也在本地机器上运行。我已经设置了SSL和适当的(我认为)HTTPS绑定配置。我看到当前上下文为null,而匿名上下文虽然不是null,但没有我期望的值,因为用户名是空字符串。是否有一些IIS设置需要更改?突然ServiceSecurityContext.Current.PrimaryIdentity开始工作,不再为null,并且我看到预期的用户名在调试行中被吐出,但VS调试器不会调试我的web服务器,因为某些配置不正确。如果他们使用窗体身份验证进行身份验证,该怎么办?我们有相同的场景,但是我们的用户使用表单进行身份验证。@esteban araya:在这种情况下应该设置
.PrimaryIdentity
ServiceSecurityContext.Current.PrimaryIdentity