Это мой первый вопрос здесь, поэтому, пожалуйста, дайте мне знать, если я что-то пропустил или вам нужно предоставить дополнительную информацию!Sitecore SSO через SAML2- AuthenticateRequest не срабатывает
Основные детали:
- C# 4.5
- IIS 7.5 (Win 2008 R2)
- Sitecore 6.6 REV 130529
Я пытается связать Sitecore к экземпляру VS2012 LocalSTS предоставленный Visual Studio Identity and Access Tool, после записи в блоге Кевина Бакли (link), которая была написана до того, как WIF был интегрирован в C# 4.5. Я пытаюсь выполнить пассивное поведение RP.
Я обновил пространства имен Microsoft.IdentityModel
до System.IdentityModel
и System.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>
Я добавил соответствующие модули (WSFederationAuthenticationModule, SessionAuthenticationModule) под <system.webServer><modules>
:
<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 auto-submits form - Я отключил JS в браузере для тестирования этого, но он работает
- LocalSTS page POS Ц. к URL, указанный в атрибуте
reply
с символической информацией вwresult
поле формы
Здесь возникает вопрос. Я понимаю, что FAM перехватывает событие AuthenticateRequest
, а затем переходит к обнаружению маркера безопасности (через наличие и значения полей формы) и декодирует токен SSO.
Моя проблема заключается в том, что это никогда не происходит - я позволил трассировку и переопределили WSFederationAuthenticationModule
проверить, и, хотя он правильно обнаруживает событие в первый раз и вызывает CreateSignInRequest
и RedirectToIdentityProvider
шаги, последующее сообщение на сайт (содержащий токен) не запускает AuthenticateRequest и, следовательно, FAM не обнаруживает, не создает cookie или не назначает правильное IPrincipal для запроса.
Это приводит к бесконечной петле, когда запрос получает 401, является 302 перенаправлены на страницу LocalSTS SSO, которая представляет, почт на страницу Sitecore SSO, которая обеспечивает 401, и т.д. и т.п.
Можно ли предоставить какое-то понимание того, что мне не хватает, или что-то еще, что может помешать FAM обнаружить запрос POST с информацией о токенах в нем?