【发布时间】:2012-11-04 18:36:13
【问题描述】:
我有一个使用 WIF 的 ServiceStack 服务 - 内部一切正常 - 创建 ClaimsPrincipal 和 ClaimsIdentity 对象,从它们添加/读取声明完全没有问题。
但是,当我尝试从客户端(尝试使用 ServiceStack 客户端和 c# WebRequest)获取此对象时,它只返回对象的一部分 - 无论我是否在客户端上安装了 WIF 并尝试进行转换。如果我直接调用并得到 json 结果,这就是返回的全部内容:
{"Principal":{"__type":"Microsoft.IdentityModel.Claims.ClaimsPrincipal, Microsoft.IdentityModel","Identity":{"__type":"Microsoft.IdentityModel.Claims.ClaimsIdentity, Microsoft.IdentityModel","Name":"BoogeyFace","AuthenticationType":"","IsAuthenticated":true}}}
如何跨服务边界获取完整的 WIF ClaimsPrincipal?
谢谢 :-)
【问题讨论】:
-
您确定要跨边界传递您的声明主体,而不是发布和使用 saml 令牌或 wif cookie 吗?实际情况如何?
-
好问题 - 它是一个 SOA 应用程序和其他服务想要让 ClaimsPrincipal 询问并获取索赔信息 - 否则 ClaimsPrincipal 的真正意义是什么?我的意思是我可以像过去一样创建一个实现 IPrincipal 和 IIdentity 的自定义对象......也许我错过了什么?
-
我不太明白,但仍然认为您应该通过 saml 或重用 cookie。如果您只想传递声明,请将 then 作为字符串字符串而不是主体对象传递。
-
是的,这就是我必须做的。我猜 WIF 的这个声明只意味着来自后端服务的委托:身份委托。 WIF 使跨服务边界维护身份变得容易,以便开发人员可以实现身份委托场景。
-
我知道 wif 是如何工作的,但从未听说过或做过自己传递声明主体对象的事情。它不打算跨越边界。
标签: c# wif servicestack