У меня ОЧЕНЬ странная проблема с поиском.Я делаю запрос, используя GET для https://sonar-sandbox.gredspdev.loc/_api/search/query?querytext='DMSSonarDocId:5042aa1f-b3a4-4577-8e21-8a47ca27c243 OR DMSSonarDocId:1401144b-bd3d-429a-a386-5061ecc714e1'&sourceid='a0f4d450-e701-4f2a-888a-8d871002752d'&trimduplicates=false&rankingmodelid='05289DBE-73E9-4665-BF69-EE68274176EB'&rowlimit=9000&enablestemming=false&enablesorting=false&selectproperties='DMSSonarDocId,<...>
'
. Я аутентифицируюсь, используя токен на предъявителя, сгенерированный для моего пользователя.Этот запрос возвращает 7 элементов.Затем я выполняю тот же URL в своем браузере с моим пользователем (NTLM), и он возвращает 10 элементов.Это еще не все.Я генерирую токен для моего пользователя еще раз.Вставьте его в предыдущий запрос GET с токеном на предъявителя, и он вернет 10 элементов ... Я жду несколько секунд, скажем, 30 ... ПОЛУЧИТЕ еще раз, и мне вернули 7 элементов (всегда одинаковые)!И это 100% тиражируется.После очередного GET из браузера и регенерации токена 10 предметов, через некоторое время на том же токене 7 предметов ....
Обновление.Я обнаружил разницу в журналах в ULS: при правильной работе:
Context has no SMTP/UPN claims. IdentityContext: '{"nameid":"s-1-5-21-2843295230-2675739751-2774624307-1482","nii":"urn:office:idp:activedirectory","upn":"kowalj@spdev.loc","userId":"0#.w|spdev\\kowalj","appliesTo":"https:\/\/sonar-sandbox.spdev.loc\/"}'
при неправильной работе:
Context has no SMTP/UPN claims. IdentityContext: '{"nameid":"s-1-5-21-2843295230-2675739751-2774624307-1482","nii":"urn:office:idp:activedirectory","upn":"spdev\\kowalj","userId":"0#.w|spdev\\kowalj","appliesTo":"https:\/\/sonar-sandbox.spdev.loc\/"}'
ДРУГИЕ НАХОДКИ: Отсутствуют элементы, которые назначены мне напрямую -не через группу, разрешенную нашим провайдером нестандартных заявок - да, у нас есть провайдер нестандартных претензий, который долгое время работал нормально (мы использовали только авторизацию NTLM).Мы отправляем эти претензии:
new Claim[]
{
new Claim("nameid", sid),
new Claim("nii", Constants.Auth.Token.IdentityIssuer)
};
ДРУГИЕ НАХОДКИ: Когда все работает правильно, выполнение этого кода в решении фермы SP в некотором прокси REST: ((ClaimsIdentity)HttpContext.Current.User?.Identity).Claims.FirstOrDefault(c => c.ClaimType.EqualsIgnoreCase(ClaimTypes.Upn))
возвращает upn.Когда поиск не работает, тот же код возвращает ноль ... И, как я уже сказал, я могу обновить страницу, и в начале есть upn, а через некоторое время его нет ...