Ошибка STS "Эмитент токена не является доверенным."
Итак, для начала, вот моя среда:
- SharePoint 2010
- Windows Server 2008 Standard
- Это VHD на моей локальной машине
- Я подключен к моей рабочей области Я также подключен к
- VPN, потому что некоторые ресурсы мне нужны
Так что у меня есть STS в SharePoint для единого входа
STS создается с помощью командлетов PowerShell:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("c:\IdentityServer.cer")
$map1 = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" –SameAsIncoming
# $map2 ... $mapN
$realm = "urn:mycompany:software"
$signinurl = "https://somesignin.com/FederationProvider/"
$ap = New-SPTrustedIdentityTokenIssuer -Name "MyFederationProvider" -Description "My Fed Provider" -Realm $realm -UseWReply -ImportTrustCertificate $cert -ClaimsMappings $map1 -SignInUrl $signinurl -IdentifierClaim $map1.InputClaimType
Для интернет-зоны моего сайта SharePoint у меня есть доверенный поставщик удостоверений, созданный выше как тип проверки подлинности на основе утверждений.
Когда я вхожу в систему, все идет хорошо, пока я не нажму эту строку в коде, FederatedPassiveSecurityTokenServiceOperations.ProcessSignInResponse(signInResponseMessage, Response);
The error I get is:
Exception information:
Exception type: SecurityTokenException
Exception message: The issuer of the token is not a trusted issuer.
Request information:
Request URL: https://mySharePointSite.com:443/_trust/default.aspx
Request path: /_trust/default.aspx
User host address: 127.0.0.1
User:
Is authenticated: False
Authentication Type:
Thread account name: MyDomain\ThreadAccount
Thread information:
Thread ID: 10
Thread account name: MyDomain\ThreadAccount
Is impersonating: False
Stack trace: at Microsoft.SharePoint.IdentityModel.SPTrustedIssuerNameRegistry`1.GetIssuerName(SecurityToken securityToken)
at Microsoft.SharePoint.IdentityModel.SPPassiveIssuerNameRegistry.GetIssuerName(SecurityToken securityToken)
at Microsoft.IdentityModel.Tokens.Saml11.Saml11SecurityTokenHandler.CreateClaims(SamlSecurityToken samlSecurityToken)
at Microsoft.IdentityModel.Tokens.Saml11.Saml11SecurityTokenHandler.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 System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Однако корневой сертификат находится в доверенных корневых центрах сертификации в оснастке сертификатов MMC для учетной записи компьютера на локальном компьютере. Кроме того, корневой сертификат считается доверенным в SharePoint. Я добавил его через Центр администрирования-> Безопасность-> Управление доверием.
Есть идеи, почему я все еще получаю эту ошибку?
2 ответа
Проблема заключалась в том, что используемый сертификат изначально был не из домена, на котором я разрабатываю. Для локального развития был создан самозаверяющий сертификат, а затем издателю был доверен. И этот сертификат был добавлен в хранилище доверенных сертификатов моей локальной фермы Sharepoint, http://onpointwithsharepoint.blogspot.ca/2012/11/managing-trust-certificates-by-using.html.
У вас есть STS, работающий по адресу https://somesignin.com/FederationProvider/?
В документации для New-SPTrustedIdentityTokenIssuer говорится, что он "создает провайдера идентификации в ферме". Это кажется мне плохо сформулированным. На самом деле это не создает новый STS. Что действительно делает New-SPTrustedIdentityTokenIssuer, так это настраивает доверительные отношения между sharepoint и существующим сторонним поставщиком удостоверений. Например,
LiveID:
http://technet.microsoft.com/en-us/library/ff607628.aspx
или ADFS: