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" />

Больше информации по теме

Другие вопросы по тегам