Вопрос

Я пытаюсь решить эту проблему некоторое время без удачи, может быть кто-то с большим количеством опыта SharePoint сможет точно определить мою проблему.

Stacktrace исключения в журналах SharePoint выглядит следующим образом:

System.IdentityModel.Tokens.SecurityTokenException: The issuer of the token is not a trusted issuer.    
at Microsoft.SharePoint.IdentityModel.SPLocalIssuerNameRegistry.GetIssuerName(SecurityToken securityToken)     
at Microsoft.IdentityModel.Tokens.Saml11.Saml11SecurityTokenHandler.CreateClaims(SamlSecurityToken samlSecurityToken)     
at Microsoft.IdentityModel.Tokens.Saml11.Saml11SecurityTokenHandler.ValidateToken(SecurityToken token)     
at Microsoft.IdentityModel.Tokens.SecurityTokenHandlerCollection.ValidateToken(SecurityToken token)     
at Microsoft.IdentityModel.Web.TokenReceiver.AuthenticateToken(SecurityToken token, Boolean ensureBearerToken, String endpointUri)     
at Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.SignInWithResponseMessage(HttpRequest request)     
at Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs args)     
at Microsoft.SharePoint.IdentityModel.SPFederationAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs)     
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
.

Я посмотрел на декомпилированном коде, он выглядит так:

 if (!accessProvider.SigningCertificate.Equals((X509Certificate) x509SecurityToken.Certificate))
    throw new SecurityTokenException(SPResource.GetString("IssuerIsNotTrusted"));
.

Так что похоже, что получил полученный токен безопасности и сертификаты провайдера доступа не совпадают.Я пошел дальше, сделал свалку свалки, загруженный в WINDBG и пытался найти, какой сертификат имел AccessProvider, не уверен, что я искал в правильном месте, но если бы я был, то у него был неверный сертификат - это темы был CN=SharePoint Security Token Service, OU=SharePoint, O=Microsoft, C=US, явно не настроен,

Я зарегистрировал поставщика личных данных, как это:

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\temp\wcfsts.dev.cer")
$map1 = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "Display Name" –SameAsIncoming
$realm = "http://sp2013.testweb.local"
$ap = New-SPTrustedIdentityTokenIssuer -Name "WSFederationSTS" -Description "WCF STS." –Realm $realm -ClaimsMappings $map1 -ImportTrustCertificate $cert -SignInUrl "http://wcfsts.dev/WSFederationSecurityTokenService.svc/Issue" -IdentifierClaim $map1.InputClaimType
.

Также я зарегистрированный сертификат с New-SPTrustedRootAuthority.

Это было полезно?

Решение

Я нашел проблему случайно, посмотрев, что я мог бы сделать неправильно.
Я искал Претензии по проходу И заметил, что они регистрируют эмитент Token, используя C # код C #, поэтому решил сделать то же самое, и они использовали поставщика Realm " https://intranet.contoso.com/_trust/ ", так что я просто изменил его, чтобы иметь свой домен, оставив часть« _trust »- и он начал работать, поэтому исключение в журналах было очень вводящим в заблуждение.

После этого я нашел Post Blog с той же проблемой, задаваясь вопросом, почему я не заметил его раньше.

.

Другие советы

Я следовал некоторым инструкциям из этой ссылки: https://support.microsoft.com/en-us/help/3042604/the-convert-spwebaplication-command-cannot-convert-from-windows-claim

Он использовал следующий формат для команды New-SptroustedIdentityTokeSuer:

$ap = New-SPTrustedIdentityTokenIssuer -Name $tokenIdentityProviderName -Description $TrustedIdentityTokenIssuerDescription -realm $siteRealm -ImportTrustCertificate $adfsCert -SignInUrl $signInUrl -UseDefaultConfiguration -IdentifierClaimIs EMAIL -RegisteredIssuerName $siteRealm
.

Я не был уверен, что поставить для организации, и ранее оставил его пустым, когда он работал, но в этом случае я устанавливаю его на то же самое, что и To TokenidentityProvidername.

Я начал получать «эмитент токена, не является ошибкой доверенного эмитента» после этого.

Я очистил значение для justiSsuername:

Set-SPTrustedIdentityTokenIssuer -Identity $ap  -RegisteredIssuerName ""
.

и это решило проблему для меня.

Я считаю, что для проведения проведения прошедшей организации, возможно, вам может потребоваться добавить запись ISSuernAmeregistry в Web.config, чтобы указать эмитенты Trusted Token.

<issuerNameRegistry 
  type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry,
  Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, 
  PublicKeyToken=31bf3856ad364e35">
  <trustedIssuers>
      <add thumbprint="99fcfe2c70ebb571020ca8aa1b7633dfe1fa1d58" name="http://localhost:48924/WingtipSTS/" />
  </trustedIssuers>
</issuerNameRegistry>
.

Дополнительный источник: https: / /docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ff955607 (v=office.14)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top