Sharepoint AudienceUriValidationFailedException при создании ClientContext со свойствами RER
Я использую размещенное приложение провайдера SharePoint. В то время как RER запускает, я генерирую клиентский контекст с помощью вспомогательной функции Token
using (ClientContext clientContext = TokenHelper.CreateRemoteEventReceiverClientContext(eventReceiverProperties))
{
//some code
}
До сегодняшнего дня все работает нормально, но теперь я получаю следующую ошибку
"XXXXXXXXX" не является целевой аудиторией "c5925a97-ce7b-4291-a5de-e3f28e6e210f/spapp.mydomain.net@6a3dcb79-0795-408a-a4b0-6613d78b5eb2"
я не сделал никаких изменений, связанных с кодом и веб-конфигурацией. Выше ошибки я получаю от вспомогательного класса Token
public static SharePointContextToken ReadAndValidateContextToken(string contextTokenString, string appHostName = null)
{
JsonWebSecurityTokenHandler tokenHandler = CreateJsonWebSecurityTokenHandler();
SecurityToken securityToken = tokenHandler.ReadToken(contextTokenString);
JsonWebSecurityToken jsonToken = securityToken as JsonWebSecurityToken;
SharePointContextToken token = SharePointContextToken.Create(jsonToken);
string stsAuthority = (new Uri(token.SecurityTokenServiceUri)).Authority;
int firstDot = stsAuthority.IndexOf('.');
GlobalEndPointPrefix = stsAuthority.Substring(0, firstDot);
AcsHostUrl = stsAuthority.Substring(firstDot + 1);
tokenHandler.ValidateToken(jsonToken);
string[] acceptableAudiences;
if (!String.IsNullOrEmpty(HostedAppHostNameOverride))
{
acceptableAudiences = HostedAppHostNameOverride.Split(';');
}
else if (appHostName == null)
{
acceptableAudiences = new[] { HostedAppHostName };
}
else
{
acceptableAudiences = new[] { appHostName };
}
bool validationSuccessful = false;
string realm = Realm ?? token.Realm;
foreach (var audience in acceptableAudiences)
{
string principal = GetFormattedPrincipal(ClientId, audience, realm);
if (StringComparer.OrdinalIgnoreCase.Equals(token.Audience, principal))
{
validationSuccessful = true;
break;
}
}
if (!validationSuccessful)
{
throw new AudienceUriValidationFailedException(
String.Format(CultureInfo.CurrentCulture,
"\"{0}\" is not the intended audience \"{1}\"", String.Join(";", acceptableAudiences), token.Audience));
}
return token;
}
Эта ошибка произошла из-за последних обновлений o365? потому что с прошлого года мое приложение работает нормально.
Спасибо Мохсин Патан
1 ответ
Мы столкнулись с той же проблемой на этой неделе. Исправление должно было включить эту строку в раздел appSettings web.config:
<add key="HostedAppHostNameOverride" value="spapp.mydomain.net" />