gpt4 book ai didi

c# - 经过身份验证的 WCF : Getting the Current Security Context

转载 作者:太空狗 更新时间:2023-10-29 19:57:46 26 4
gpt4 key购买 nike

我有以下场景:

  • 我的数据库中存储了各种用户的数据。
  • 此数据是通过网络应用程序输入的。
  • 我们希望通过网络服务将这些数据公开给用户,以便他们可以将他们的数据与他们的应用程序集成。
  • 我们还想公开这些服务的一些业务逻辑。因此,我们不想使用 OData。
  • 这是一个 Multi-Tenancy 应用程序,所以我只想将他们的 数据公开给他们,而不是其他用户。同样,我们公开的业务逻辑应该与经过身份验证的用户相关。

我想让用户使用 OASIS 方案对 Web 服务进行身份验证——据我所知,WCF 已经允许开箱即用——或者我们可以向他们颁发证书以进行身份​​验证。那一点还没有真正解决。

这是我设想的如何在服务中工作的一些伪代码:

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)

    ServiceSecurityContext.Current.PrimaryIdentity

给定一个 Windows 身份,如果需要,您还可以模拟该调用者进行后续调用,深入到您的业务或数据层 - 查看 MSDN 文档 Delegation and Impersonation with WCF 、Google 或 Bing 的“WCF 模拟”应该会为您提供有关该主题的大量有值(value)的链接。

如果 Windows 和证书路径都不适合您,WCF 还允许您创建自己的自定义身份验证方案,在这种情况下,您需要为 WCF 编写一个扩展,将其插入,然后您将获得发送给您的调用用户的用户名/密码,以根据您可能拥有的任何类型的自定义商店进行验证。

WCF 在许多方面为您提供了很多的灵 active - 我非常怀疑您会找到一种在 WSE3 中有效但在 WCF 中效果不佳(或更好)的场景!

关于c# - 经过身份验证的 WCF : Getting the Current Security Context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2639933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com