【问题标题】:Sharepoint AudienceUriValidationFailedException while creating ClientContext with RER propertiesSharepoint AudienceUriValidationFailedException 在使用 RER 属性创建 ClientContext 时
【发布时间】:2018-03-06 14:20:21
【问题描述】:

我正在使用 SharePoint 提供程序托管应用程序。当 RER 触发时,我在 Token helper 函数的帮助下生成客户端上下文

using (ClientContext clientContext = TokenHelper.CreateRemoteEventReceiverClientContext(eventReceiverProperties))
{
            //some code
} 

直到今天一切正常,但现在我收到以下错误

“XXXXXXXXX”不是目标受众 "c5925a97-ce7b-4291-a5de-e3f28e6e210f/spapp.mydomain.net@6a3dcb79-0795-408a-a4b0-6613d78b5eb2"

我没有进行任何与代码和网络配置相关的更改。我从令牌助手类得到的上述错误

 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 更新而发生的吗?因为自去年以来我的应用程序运行良好。

谢谢 莫辛帕坦

【问题讨论】:

    标签: exception sharepoint-online sharepoint-apps sharepoint-clientobject


    【解决方案1】:

    本周我们遇到了同样的问题。解决方法是将此行包含在 web.config 的“appSettings”部分中:

        <add key="HostedAppHostNameOverride" value="spapp.mydomain.net" />
    

    More info on the subject

    【讨论】:

    • 感谢 Niki,更新 web.config 为我工作,但是自从去年我的应用程序在没有这个键“HostedAppHostNameOverride”的情况下运行良好,现在这个问题是怎么发生的?你有什么想法吗。
    • 完全不知道,该应用程序在没有此密钥的情况下为我们工作了近两年,然后突然开始抛出上述错误。我会说环境更新,但谁知道...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多