0

谁能告诉我是否可以为sharepoint 2010创建一个自定义的主动安全tokebn服务。我基本上是想创建一个自定义的sts,这样我就不必离开sharepoint站点本身就可以登录。

我已经看到了创建自定义被动 sts 的示例,但看不到自定义被动 sts 的任何内容。

我对 WIF 很陌生,所以任何指针或帮助将不胜感激。

编辑(2011 年 11 月 22 日):好的,也许我看错了。第一个问题是我有 web 服务和一个网站,需要知道声明,并将每个请求解析为相同的身份(在这种情况下,我不能对服务使用被动 sts)。第二个问题是我希望能够将登录工具集成到我网站的主页上——我的理解是,这不能通过被动 sts 来实现。

编辑(2011 年 11 月 28 日):所以在下面的建议中,我实施了 thinktecture 身份服务器。我很容易让它在被动场景中工作,但我仍然无法让它与 ws-trust 端点(主动场景)一起工作。我一直在尝试使用 WSTrustChannelFactory 和 UserNameWSTrustBinding 创建自定义登录 Web 部件,但每当我调用 ValidateToken 时,我都会收到一条错误消息,指出“令牌的颁发者不是受信任的颁发者”。信任应该已经建立,因为我可以使用被动登录机制登录。

马特

4

2 回答 2

1
  • 我已经看到了创建自定义被动 sts 的示例,但看不到任何主动?被动sts。

看看身份服务器。它是一种主动和被动的自定义安全令牌服务。

于 2011-11-21T18:49:01.510 回答
0

在花费了大量时间之后,我找到了问题的根源(我认为)。我试图创建一个可以部署在我的应用程序主页上的自定义登录 web 部件。事实证明,在 ValidateToken 实现中的某个地方调用了 SPPassiveIssuerName.GetIssuerName。在此方法中,根据调用 TrustedProviderSignInPage.IsTrustedPageRequest 的结果做出决定(如果 hhtpcontext 请求是针对http://xxxx/_trust/虚拟目录中的某些内容,则此方法返回 true)。

如果 TrustedProviderSignInPage.IsTrustedPageRequest 返回 true,SharePoint 会查看 TrustedLoginIssuerNameRegistry,这很好,因为我的证书已注册为受信任。但是,如果它返回 false,SharePoint 只检查 LocalLoginIssuerNameResgistry - 它基本上是硬编码的,只返回内置登录颁发者。由于我的主页不在 /_trust/ 目录中,所以这永远不会起作用 - 这非常烦人!

总而言之 - 您可能只能在 SharePoint 中执行此操作,您计划将登录控制放在 /_trust/ 目录中的页面。

重要编辑(2011 年 1 月 12 日):因此,在昨天彻底放气之后,我有了用标准 ConfigurationBasedIssuerNameRegistry 替换 SharePoint 内置颁发者名称注册表 (SPPassiveIssuerNameRegistry) 并将我的 IP-STS 添加为受信任颁发者的想法。这让我更进一步,但在调用 SetPrincipalAndWriteSessionToken 时我仍然收到错误,即在发行人名称注册表中找不到发行人。我几个小时都无法解决这个问题,但最后我决定实施一个自定义发行者名称注册表。经过一些调试后,事实证明,在声明创建过程中的某个时刻,SharePoint 会尝试验证其内置的安全令牌服务(即使我没有使用它)。所以我将包恢复为基于配置的发行者名称注册表,并在 SharePoint 中添加为受信任的发行者(以及我自己的发行者)——这一切似乎都奏效了——哇!我会在某个时候将完整的解决方案写在博客上,并在此处附上链接。让我们希望它坚持!

马特

马特

于 2011-11-30T16:41:59.730 回答