在阅读了有关使用Microsoft Geneva框架实现自定义STS的MSDN文章(http://msdn.microsoft.com/en-us/magazine/2009.01.genevests.aspx)之后,我对此处介绍的其中一种方案感到有些困惑。以上引用的文章的图13中显示了这种情况。

我的问题是有关RP如何发起对RP-STS的 call ,以传递已从IP-STS获得的声明?所需的方法DeleteOrder()如何变成来自RP-STS的Action声明的Claim请求,该RP-STS以Action声明进行响应,并带有值Delete来授权调用?我还认为该数字有点不正确,因为RP-STS与策略引擎之间的交互应该具有“索赔”和箭头。

我可以看到结构,但是不清楚Geneva / WCF提供了什么以及在RP内的代码中必须完成什么,这似乎有些奇怪,因为我们无法通过PrincipalPermission要求Delete的DeleteOrder方法来保护Delete“权限”,但此后必须先要求角色,然后才能获得“删除操作”的详细要求。

如果我错过了要点(因为我无法在Web上轻松找到此案例),则表示歉意!

提前致谢。

最佳答案

我在日内瓦论坛上问了同样的问题
http://social.msdn.microsoft.com/Forums/en/Geneva/thread/d10c556c-1ec5-409d-8c25-bee2933e85ea?prof=required
并得到此回复:

嗨Dokie,

当我阅读该文章时,我想知道同样的事情。当我思考如何实现这种情况时,我想到了两个想法:

  • RP实际上已配置为要求RP-STS声明所有权。 RP-STS需要IP-STS中的安全 token 。结果,当对象请求RP的资源时,它将其反弹到RP-STS,后者又将其反弹到IP-STS。在此进行身份验证后,他被弹回RP-STS,以身份为中心的声明转换为做出授权决定所需的声明,然后返回RP。
  • RP配置为具有拦截器(例如,如果它是WCF服务,则为AuthorizationPolicy),该拦截器可以捕获 call ,查看以身份为中心的声明,创建RST(使用WSTrustClient)并将其传递给RP-STS服务将索偿扩展为新索偿,然后将索偿返回给RP,然后RP做出授权决策。

  • 我从来没有实现过,但是,如果我打算这样做,我将进一步探讨这两个想法。

    HTH!

    问候,

    特拉维斯·斯宾塞

    因此,我将首先尝试选项2,看看是否可行,然后在此处提出答案。

    关于federated-identity - 日内瓦框架中RP-STS的简单索偿转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/811127/

    10-11 14:54