0

У нас есть реализация SharePoint, в которой наше веб-приложение использует аутентификацию на основе форм (FBA).Аутентификация на основе форм SharePoint 2013 медленная. Почему SetPrincipalAndWriteSessionToken занимает 20 секунд или более?

В ферме есть 2 сервера. Сервер веб-интерфейса, который находится в DMZ и SQL-сервер в корпоративной сети. Межсетевой экран отделяет их.

Мы используем аутентификацию SQL.

Мы должны заставить пользователя изменить свой пароль после первого успешного входа в систему. Поэтому мы создали пользовательскую форму для FBA на основе следующей статьи. (https://sharepoint.stackexchange.com/questions/42541/how-to-create-a-custom-fba-login-page-that-forces-user-to-change-password-and-vi).

Код в вопросе:

private void SignInUser() 
{ 
     SecurityToken token = SPSecurityContext.SecurityTokenForFormsAuthentication 
               (new Uri(SPContext.Current.Web.Url), 
                GetMembershipProvider(SPContext.Current.Site), 
                GetRoleProvider(SPContext.Current.Site), 
               _userName, 
               _password, SPFormsAuthenticationOption.None); 
     SPFederationAuthenticationModule fam = SPFederationAuthenticationModule.Current;   
     fam.SetPrincipalAndWriteSessionToken(token, SPSessionTokenWriteType.WriteSessionCookie); 
     SPUtility.Redirect(System.Web.Security.FormsAuthentication.DefaultUrl, 
     SPRedirectFlags.UseSource, this.Context);     
} 

public static string GetMembershipProvider(SPSite site) 
{ 
     // get membership provider of whichever zone in the web app fba isenabled 
     SPIisSettings settings = GetFbaIisSettings(site); 
     if (settings == null) return null; 
     return settings.FormsClaimsAuthenticationProvider.MembershipProvider; 
} 

public static string GetMembershipProvider(SPSite site) 
{ 
     // get membership provider of whichever zone in the web app is fba enabled 
     SPIisSettings settings = GetFbaIisSettings(site); 
     if (settings == null) return null; 
     return settings.FormsClaimsAuthenticationProvider.MembershipProvider; 
} 

Код, который занимает время является:

fam.SetPrincipalAndWriteSessionToken(token, SPSessionTokenWriteType.WriteSessionCookie); В моем понимании эта строка кода выполняет следующие действия:

  1. Вызывает Метод OnSessionSecurityTokenCreated для повышения значения события SessionSecurityTokenCreated
  2. Вызывает метод AuthenticateSessionSecurityToken в SPFederationAuthenticationModule.Current для установки принципала потока и записи cookie сеанса.

Некоторые другие моменты, следует отметить:

  1. Это 20 второй раз Войти также имеет место для страницы по умолчанию SharePoint FBA (/_forms/default.aspx)
  2. Это не происходит на автономный dev машина.

Для меня это будет означать, что узкое место связано с сетью.

Любая помощь будет высоко оценена.

ответ

0

Мне удалось сэкономить около 13 секунд после входа в систему, разрешив следующую запись в журнале ULS.

3/30/2016 11: 08: 53.71 w3wp.exe (0x2448) 0x1148 Топология SharePoint Foundation 8321 Критическая Операция проверки сертификата заняла 23141.9482 миллисекунды и превысила порог времени выполнения. Если это будет продолжаться, оно может представлять проблему конфигурации. Дополнительную информацию см. В разделе http://go.microsoft.com/fwlink/?LinkId=246987. bc926d9d-52af-f0fb-b2ae-236a27cd54f1

Таким образом, SharePoint использует сертификаты для подписи маркеров безопасности, выдаваемых службой маркеров безопасности (STS). Как и все сертификаты, срок действия сертификата STS должен периодически проверяться, чтобы убедиться, что сертификат не был отозван. По умолчанию корневой сертификат в цепочке не добавляется в хранилище доверенных корневых центров сертификации серверов SharePoint. Из-за этого проверка сертификационного списка (CRL) для сертификата выполняется через Интернет, что невозможно на нашем сервере WFE.

Я решил это, экспортируя корневой сертификат, на сервере WFE, используя

$ rootCert = (Get-SPCertificateAuthority) .RootCertificate $ rootCert.Export ("Серт") | Set-Content C: \ SharePointRootAuthority.cer -Encoding byte

А затем импортировать сертификат в хранилище доверенных корневых центров сертификации с использованием сертификатов mmc snapin.

 Смежные вопросы

  • Нет связанных вопросов^_^