首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过身份验证的WCF:获取当前安全上下文

通过身份验证的WCF:获取当前安全上下文
EN

Stack Overflow用户
提问于 2010-04-14 18:21:31
回答 1查看 19.1K关注 0票数 7

我有以下情况:

  • 我将各种用户的数据存储在我的数据库中。
  • 这些数据是通过一个网络应用程序输入的。
  • 我们希望通过web服务向用户公开这些数据,以便他们能够将数据与应用程序集成。
  • 我们还想公开这些服务的一些业务逻辑。因此,我们不想使用OData.
  • 这是一个多租户应用程序,所以我只想向他们公开他们的数据,而不是其他用户。同样,我们公开的业务逻辑应该相对于经过身份验证的用户。

我想让用户使用OASIS方案来使用web服务进行身份验证--据我所知,WCF已经允许这样做--或者我们可以向他们颁发证书以进行身份验证。这一点还没有真正解决。

下面是一些伪代码,说明我设想这将如何在服务中工作:

代码语言:javascript
复制
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

对于业务逻辑场景,我认为应该如下所示:

代码语言:javascript
复制
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

这里的难点是获取用户使用!进行身份验证的当前用户名(或cert场景中的cert信息)。

WCF甚至启用此场景吗?如果没有,WSE3会启用这个功能吗?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-14 18:29:37

不应该太难,我想:

  • 如果您的用户在WCF服务上使用Windows用户凭据进行身份验证,则可以在 ServiceSecurityContext.Current.WindowsIdentity
  • 如果您的用户使用证书进行身份验证,您将在下面找到他们的身份(将是CertificateIdentity而不是WindowsIdentity) ServiceSecurityContext.Current.PrimaryIdentity

给定一个Windows标识,您还可以在业务或数据层中模拟调用该调用者,如果需要,可以查看MSDN文档WCF的委托和模拟,或者谷歌或必应的"WCF模拟“应该会为您提供大量关于该主题的有价值的链接。

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

WCF在许多方面为您提供了一个的灵活性--我非常怀疑您会发现一个在WSE3中工作但在WCF中工作得不太好(或更好)的场景!

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2639933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档