gpt4 book ai didi

通过 SAML2 的 Sitecore SSO - AuthenticateRequest 未触发

转载 作者:行者123 更新时间:2023-12-01 23:34:07 25 4
gpt4 key购买 nike

这是我的第一个问题,所以如果我遗漏了什么或需要提供更多信息,请告诉我!

关键细节:

  • C# 4.5
  • IIS 7.5(Win 2008 R2)
  • Sitecore 6.6 修订版 130529

我正在尝试将 Sitecore 链接到 Visual Studio 提供的 VS2012 LocalSTS 实例 Identity and Access Tool ,遵循 Kevin Buckley ( link ) 在 WIF 集成到 C# 4.5 之前编写的博客文章。我正在尝试执行被动 RP 行为。

我已经更新了Microsoft.IdentityModel命名空间为System.IdentityModelSystem.IdentityModel.Services适当的命名空间。

我的<system.IdentityModel>部分如下:

<system.identityModel>
<identityConfiguration>
<audienceUris>
<add value="http://localhost/" />
</audienceUris>
<certificateValidation certificateValidationMode="None" />
<issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
<authority name="LocalSTS">
<keys>
<add thumbprint="9B74CB2F320F7AAFC156E1252270B1DC01EF40D0" />
</keys>
<validIssuers>
<add name="LocalSTS" />
</validIssuers>
</authority>
</issuerNameRegistry>
</identityConfiguration>

我的<system.identityModel.services>如下:

<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" />
<wsFederation passiveRedirectEnabled="true"
issuer="http://localhost:14691/wsFederationSTS/Issue"
realm="http://localhost/"
reply="http://localhost/sitecore modules/fedauthenticator/sso"
requireHttps="false" />
</federationConfiguration>
</system.identityModel.services>

我已在 <system.webServer><modules> 下添加了相关模块(WSFederationAuthenticationModule、SessionAuthenticationModule) :

   <add type="Sitecore.Web.RewriteModule, Sitecore.Kernel"
name="SitecoreRewriteModule" />
<add type="Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus"
name="SitecoreHttpModule" />
<add name="WSFederationAuthenticationModule"
type="System.IdentityModel.Services.WSFederationAuthenticationModule,
System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
preCondition="managedHandler" />
<add name="SessionAuthenticationModule"
type="FedAuthenticator.Authentication.WSSessionAuthenticationModule,
FedAuthenticator"
preCondition="managedHandler" />

我看到的行为如下:

  • 用户导航到受 Sitecore 保护的页面
  • WIF FAM 模块触发并在 EndRequest 时确定返回 401 状态
  • WIF FAM 根据设置(使用适当的查询字符串)重定向到 LocalSTS IdP
  • Javascript 自动提交表单 - 我已在浏览器中禁用 JS 来测试此功能,但它有效
  • LocalSTS 页面 POST 到 reply 中指定的 URL wresult 中带有 token 信息的属性表单字段

这就是问题发生的地方。我的理解是FAM Hook AuthenticateRequest事件,然后继续检测安全 token (通过 wawresult 表单字段的存在和值)并解码 SSO token 。

我的问题是这种情况永远不会发生 - 我已启用跟踪并覆盖 WSFederationAuthenticationModule检查,尽管它第一次正确检测到事件并调用 CreateSignInRequestRedirectToIdentityProvider步骤,随后到站点的 POST(包含 token )不会触发 AuthenticateRequest,因此 FAM 不会检测、创建 cookie 或为请求分配正确的 IPrincipal。

这会导致无限循环,其中请求收到 401,将 302 重定向到 LocalSTS SSO 页面,该页面会提交,POST 到 Sitecore SSO 页面,该页面会发送 401,等等。

任何人都可以提供一些关于我遗漏的内容的见解,或者可能阻碍 FAM 检测其中包含 token 信息的 POST 请求的其他内容吗?

最佳答案

尴尬的是,回答我自己的问题 - 发生这种情况的原因是 response 参数将 SSO 表单 POST 定向到 Sitecore 响应的 URL,并重定向到 NotFound 页面(即Sitecore 将 POST 目标解析为不存在)。

由于 NotFound 页面没有任何安全性,因此 AuthenticateRequest 不会触发。

我还没有弄清楚为什么 NotFound 页面导致重定向回 SSO 页面 - 但至少现在,一旦我更正了 response 配置字段中的错误值, token 就会变为被 FAM 检测到并为后续模块(SAM 等)正确处理。

编辑 - 找到重定向循环的原因

重定向循环是由 web.config 中的错误设置引起的,如下所示:

<authorization>
<deny users="?"/>
</authorization>

这意味着 token 被发布到 NotFound 页面,Sitecore 显然拦截了该页面的请求,因此没有触发 FAM,因此用户未经过身份验证。这导致了 401 响应代码(由于拒绝语句),该代码启动 SSO 重定向 - 创建一个循环。

关于通过 SAML2 的 Sitecore SSO - AuthenticateRequest 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20234172/

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