Trending Issue: Office Online Server (OOS) Integration with SP2016 fails after installing July 2026 CU

After installing July 2026 CU you might experience the issue that Office Online Server will fail to show Office and PDF documents.

Symptoms

The issue is typically reflected in the ULS logs with entries similar to the following:

w3wp.exe (0xXXXX)   SharePoint Foundation   Claims Authentication   ahds5   Unexpected   SPJsonWebSecurityBaseTokenHandler: ValidateTokenIssuer rejected Issuer '00000003-0000-0ff1-ce00-000000000000@...random-guid...' because no registered STS matches the signing certificate 'CN=SharePoint Security Token Service, OU=SharePoint, O=Microsoft, C=US'

Current Status

This issue is currently under investigation by the product group.

Workaround

Seems we have a workaround!

$stsm = Get-SPSecurityTokenServiceConfig 
$live = $stsm.LocalLoginProvider.SigningCertificate
$pub = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(,$live.Export('Cert'))
$realm = $stsm.NameIdentifier # e.g. 00000003-0000-0ff1-ce00-000000000000@

New-SPTrustedSecurityTokenIssuer -Name "LocalSelfIssuerWopiFix" -Description "Re-trust farm self-issuer after KB5002891" -Certificate $pub -RegisteredIssuerName $realm

Ensure to restart IIS (IISRESET) on each server of the SharePoint farm .

Solution

The fix for this issue is included in August 2026 CU

76 Comments


  1. Hi Stephen,

    Thanks for your update.. Could you please share the workaround mentioned here

    Workaround
    There is known workaround available at this time.

    Reply

    1. Hi Ashish,
      the line was missing a “no”. I fixed it.

      There is no workaround available at this time.

      Cheers,
      Stefan

      Reply

  2. The title says “SP2016” but nothing mentioned on the body… Just to clarify, does it also happens to SPSE ?

    Reply

    1. Hi Andre,
      in theory it can also happen in SPSE – but only if you did not apply the script in the “Known Issue” section of KB https://support.microsoft.com/en-us/servicing/office/update/2026/5002882


      Known issues in this update
      After you run PSConfig, run the following PowerShell commands. This setting disables a defense-in-depth feature that is currently under development that may cause a regression. Existing actor token validation checks remain in place.

      $farm = Get-SPFarm

      $farm.DisableActorTokenAudienceValidation = $true #disables only the defense-in-depth validation

      $farm.update()

       

      If you applied this required step it should not happen.

      Reply

  3. Hello, do you know if the issue happens with a SP 2019 Farm?

    Reply

    1. Hi Kristine, SP2019 is not affected.

      Reply

  4. Hi Stefan,

    I am seeing below errors in OOS logs when i try to access documents like word excel on sharepoint 2016 sites after installing SharePoint 2016 related July 2026 patches. Apart from SP2010 workflow issues now the new addition of issues related to OOS also started.

    Getting WOPI 401 unauthorized error

    WOPI CheckFile: Catch-All Failure [exception:Microsoft.Office.Web.Common.EnvironmentAdapters.WopiUserUnauthorizedException: WOPI 401 —> System.Web.HttpException: Unauthorized –
    — End of inner exception stack trace —
    at Microsoft.Office.Web.Apps.Common.WopiTalky.AddHostResponseDataAndThrow(Exception exception, HttpRequestAsyncResult result)
    at Microsoft.Office.Web.Apps.Common.WopiTalky.LogAndThrowWireException(HttpRequestAsyncResult result, HttpRequestAsyncException delayedException)
    at Microsoft.Office.Web.Apps.Common.WopiDocument.LogAndThrowWireException(HttpRequestAsyncResult result, HttpRequestAsyncException delayedException)
    at Microsoft.Office.Web.Common.HttpRequestAsync.End()
    at Microsoft.Office.Web.Apps.Common.WopiDocument.CheckWopiFile()]

    Reply

    1. Hi John,

      yes that the symtom on the OOS side. On SharePoint side the Claims token from OOS are rejected by SP2016 resulting in the 401 unauthorized being reported in OOS.
      This the issue discussed here in this blog post.

      Cheers,
      Stefan

      Reply

  5. Hi Stefan do you have an approximate date when the issue will be resolved?
    In our farm 2016 we have the same situation.

    Reply

    1. Hi Alex,
      engineering is working on a fix for the issue but I do not have a date.
      Cheers,
      Stefan

      Reply

  6. I found this blog because we have the exact same issue.

    We are still on SP 2016. The patch went very smooth last week so we didn’t expect to encounter any issue but here we are:

    -Getting WOPI 401 unauthorized error
    WOPI CheckFile: Catch-All Failure [exception:Microsoft.Office.Web.Common.EnvironmentAdapters.WopiUserUnauthorizedException: WOPI 401 —> System.Web.HttpException: Unauthorized –

    Needless to say, I will be following this forum and hope that someone finds a fix soon.

    Reply

    1. We are also experiencing this issue. Hopefully MSFT gets the fix soon.

      Reply

  7. We are experiencing exactly the same issue after installing the July 2026 SharePoint 2016 CU.

    After the update, Office Online Server can no longer open documents. We have verified the WOPI configuration, certificates, DNS, authentication, and connectivity between SharePoint and OOS, with no configuration issues found. IIS logs show the WOPI requests are rejected with HTTP 401, and the SharePoint ULS logs report:

    Issuer name is not registered
    Microsoft.SharePoint.IdentityModel.SPJsonWebSecurityBaseTokenHandler.ValidateTokenIssuer

    We also have a sandbox environment cloned from production before applying the July CU, and Office Online Server continues to work correctly there, which strongly suggests the issue was introduced by this update.

    Thank you for publishing this information. It matches our environment and symptoms exactly. Please keep us informed if Microsoft provides a workaround or releases a fix.

    Reply

  8. We are experiencing the same issue in our SP16 farm. We also have a SPSE Farm that is NOT experiencing the issue, and we did execute the PowerShell to prevent this/disable the problematic feature.

    We are planning to wait for a fix.

    Reply

  9. Hi Stefan, we installed the July 2026 CU on our SPSE farm and we are having issues with OOS – users attempting to open office documents in the web view are getting errors like “You do not have permissions to open this file in the browser”. We notice this issue only on the farms where there are multiple web front ends. We did run the DisableActorTokenAudienceValidation script. We notice ‘401’ unauthorized responses to calls from the OOS server to the _vti_bin/wopi.ashx/files/ endpoint on the WFEs where the access_token is passed in the request. If we point the OOS to just one WFE, then it all works but only for sessions that originate from that WFE, fails for users who get signed in to any other WFE. This all worked fine before the CU, so could this possibly be related to the development work being done related to tokens? Any other customers with multi-server SPSE farms reporting the same issue?

    Reply

    1. Hi Sanjeev,
      did you apply the script as requested in the known issues section of the SPSE KB article?
      https://support.microsoft.com/en-us/servicing/office/update/2026/5002882

      Known issues in this update
      After you run PSConfig, run the following PowerShell commands. This setting disables a defense-in-depth feature that is currently under development that may cause a regression. Existing actor token validation checks remain in place.

      $farm = Get-SPFarm
      $farm.DisableActorTokenAudienceValidation = $true #disables only the defense-in-depth validation
      $farm.update()
      

      Cheers,
      Stefan

      Reply

      1. Hi Stefan, yes in my comment above, I did note that: “We did run the DisableActorTokenAudienceValidation script.”. Although we ran it a day or so after we installed the CU – does the timing matter? If I call that property now, it returns the value ‘True’. We also re-ran the PSConfigUI again on all the servers yesterday.

        Reply

        1. Hi Sanjeev,
          no it does not matter,
          In this case I would recommend to open a ticket with Microsoft to get this analyzed.
          Cheers,
          Stefan

          Reply

  10. Hi Stefan,

    Do we still not have any workaround for Office Online issue with SP 2016?
    Please confirm.

    Reply

    1. Hi Aditya,

      the issue causing this does not allow a workaround.
      A fix is in the works.

      Cheers,
      Stefan

      Reply

      1. Any ETA on this one and MS will release the fix?

        Reply

        1. Please see the correction:
          Any ETA on this one and how MS will release the fix?

          Reply

          1. Hi Aditya,
            there is no ETA at this time but an out-of-band fix is planned – means it should arrive before August CU.
            Cheers,
            Stefan


  11. August CU? I think this is the last CU released by MS for SP 2016.

    Reply

    1. I was talking about the date when August CU would usually be released. So this fix should arrive before that date.

      Reply

  12. Stephan ,

    Thank you for providing updates on this issue.

    Is the ‘$farm. DisableActorTokenAudienceValidation’ solution not compatible with SharePoint 2016? The July CU is applied on a SP2016 Test Farm.

    Reply

    1. Hi Peggy,
      no it is not. This property does not exist in SP2016.
      Cheers,
      Stefan

      Reply

  13. Hi Stefan,

    I am facing this issue as well after the July patch installation.
    Please would it worth to unistall this patch? I mean if I would unistall this patch and would install for example the June patch – do you think the opening of office documents would work again?
    Thank you.

    Reply

    1. Hi Tomas,
      SharePoint fixes cannot be uninstalled. Only if you have a snapshot from before installing July 2026 CU you could pursue this path.
      But you would also have to revert the databases to the earlier state as databases upgraded to July 2026 CU cannot be mounted with June 2026 CU or earlier.
      Cheers,
      Stefan

      Reply

      1. Sorry, I am not pretty sure about this – has to be made rollback just of office online servers (I have 2 nodes in farm) or as well as all sharepoint servers? (I am using sharepoint 2016 on premises).
        Thank you.

        Reply

        1. Hi Tomas,
          this is not a problem with OOS – the problem is in SP2016.
          It does not matter which patch level OOS has – the problem will always occur if July 2026 CU for SP2016 is installed.
          Cheers,
          Stefan

          Reply

          1. Oh ok I understand now.
            Many thanks for you information, Stefan!
            BR,
            Tomas


  14. Hi ,

    Can i check this issue only happening after installed patch in OOS server or SP2016 server?

    Reply

    1. This is caused by the SP2016 fix

      Reply

  15. Can i confirm this is sharepoint 5002891?

    Reply

    1. Yes. This is the fix introducing this issue

      Reply

  16. Hi,

    Any news about the fix ? Have the Microsoft teams announced a date?
    Thanks
    Regards

    Reply

    1. Hi Berliozm,
      the fix is still in the works and a release date has not been announced.
      Usually the fix will only be announced when it has been released.
      Cheers,
      Stefan

      Reply

  17. We decompiled the affected assembly and can share the exact root cause plus a configuration-only workaround that does not require patching any binaries.

    ROOT CAUSE

    The regression is a single flipped branch in Microsoft.SharePoint.IdentityModel.dll, in:

    SPJsonWebSecurityBaseTokenHandler.ValidateTokenIssuer(X509SecurityToken signingKey, string tokenIssuer)

    The method resolves the token’s signing certificate to a registered STS via:

    manager.TrustedSecurityTokenServices.GetProviderBySigningCertificate(signingKey.Certificate, tokenIssuer)

    Comparing the July 2026 build (16.0.5561.1001) with RTM (16.0.4312.1000), the only behavioral change is the “provider == null” branch (ULS tag 1848479):

    Before: logged “ValidateTokenIssuer accepted Issuer … because no registered STS matches the signing certificate” and returned -> token accepted.
    After: logs “ValidateTokenIssuer rejected Issuer …” and throws SecurityTokenException(“Issuer name is not registered”).

    In other words, the CU turned a fail-open path into fail-closed (a legitimate security hardening).

    WHY IT BREAKS WOPI / OOS

    The WOPI callback token that OOS presents back to SharePoint is a self-issued (loopback) token: issuer 00000003-0000-0ff1-ce00-000000000000@, signed by the farm STS certificate.

    The local self-issuer is represented by SPLocalLoginProvider, whose RegisteredIssuerName is the farm NameIdentifier and whose SigningCertificate is the farm STS certificate. However, GetProviderBySigningCertificate only enumerates the persisted TrustedSecurityTokenServices collection, and that collection does NOT contain the LocalLoginProvider. So for the farm’s OWN self-issued token the lookup returns null.

    Pre-CU, null was accepted; post-CU, null is rejected -> HTTP 401 -> OOS “WOPI 401 unauthorized”. The reject branch is unconditional (no farm property, registry key, or feature flag guards it), which is consistent with the “no workaround” observation.

    CONFIGURATION-ONLY WORKAROUND (no binary patching)

    Explicitly register the farm’s own STS as a trusted token issuer, so the signing-certificate lookup finds a match instead of returning null:

    $stsm = Get-SPSecurityTokenServiceConfig
    $live = $stsm.LocalLoginProvider.SigningCertificate
    $pub = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(,$live.Export(‘Cert’))
    $realm = $stsm.NameIdentifier # e.g. 00000003-0000-0ff1-ce00-000000000000@

    New-SPTrustedSecurityTokenIssuer -Name “LocalSelfIssuerWopiFix” -Description "Re-trust farm self-issuer after KB5002891"
    -Certificate $pub -RegisteredIssuerName $realm

    # then, on each server in the farm:
    # iisreset (and recycle the SecurityTokenServiceApplicationPool)

    Notes:
    – RegisteredIssuerName must equal the farm NameIdentifier (the issuer of the self-issued tokens). If different tenants emit different issuer realms, the “@*” context-id wildcard can be used instead.
    – The certificate passed to New-SPTrustedSecurityTokenIssuer must be public-only (no private key) – hence the Export(‘Cert’) round-trip above.
    – This does not weaken the CU hardening: it only re-establishes trust for the farm’s own signing certificate, which is implicitly trusted anyway. External-issuer validation stays enforced.
    – Fully reversible: Get-SPTrustedSecurityTokenIssuer | ? Name -eq “LocalSelfIssuerWopiFix” | Remove-SPTrustedSecurityTokenIssuer. The registration lives in the config DB and replicates farm-wide.

    This is derived from decompiled-code analysis rather than a supported fix, so please validate it in a test farm before production. Feedback on whether it holds up across multi-tenant / host-named site collections would be very welcome.

    Reply

    1. Thank you. This worked for us.

      Reply

  18. it works for me, SP2016 on-prem

    $stsm = Get-SPSecurityTokenServiceConfig
    $live = $stsm.LocalLoginProvider.SigningCertificate
    $pub = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(,$live.Export(‘Cert’))
    $realm = $stsm.NameIdentifier # e.g. 00000003-0000-0ff1-ce00-000000000000@

    New-SPTrustedSecurityTokenIssuer -Name “LocalSelfIssuerWopiFix” -Description “Re-trust farm self-issuer after KB5002891”
    -Certificate $pub -RegisteredIssuerName $realm

    then, on each server in the farm:

    iisreset (and recycle the SecurityTokenServiceApplicationPool)

    Reply

    1. Hi Nail,
      thanks for sharing and Steve, thanks for confirming!

      I have added the workaround in the article above.

      Reply

  19. Thanks for confirming!

    If you experience a powershell error with certificate environment …( New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(,$live.Export(‘Cert’)))

    try to export certificate in base64 format from frontend sharepoint server. certificate store (local machine level). container sharepoint\certificates. Certificate: issued to ‚SharePoint Security Token Service‘. without private key. For an example export it to C:\SharePointSecurityTokenService.cer.

    then run:
    $pub = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(‚C:\SharePointSecurityTokenService.cer‘)

    Reply

  20. Thanks Nail for the fix, also works for me SP 2016 on-prem.

    Reply

  21. Worked! Single SP2016 server and separate OOS machine.

    Command to undo:
    Get-SPTrustedSecurityTokenIssuer | Where-Object Name -eq „LocalSelfIssuerWopiFix“ | Remove-SPTrustedSecurityTokenIssuer -Confirm:$false
    iisreset

    Reply

  22. Since encountering this bug, we needed to remove the bindings to OOS to force SharePoint to open office documents in the desktop app (Because otherwise, users can’t open attached documents in list items). I am glad someone finally found a workaround but since we have a way of opening documents atm, we will wait for the official fix.

    Reply

  23. Thanks all the workaround work fine for us

    Reply

  24. Do we need to run this only OOS servers or on all servers (APP, WFE,Search, OOS)? Is there any risk with this commands ?

    Reply

    1. It needs to be run on one server in the SharePoint farm. Not on a server in the OOS farm.

      Reply

  25. The workaround perfectly works, thanks a lot!
    T.

    Reply

  26. Thanks Stefan, above given workaround fixed our issue.
    Office Online is back up and running.

    Reply

  27. Hi Stefan, I need to patch both my SharePoint 2016 farm as well as OOS due to the recent vulnerabilities. Is it still advised to patch the OOS server first? or due to the issues caused by the SP2016 patch, should that patch order change?

    Reply

    1. Hi Ray
      the sequence does not really matter.
      Cheers,
      Stefan

      Reply

      1. Thank you so much for the feedback. Appreciate you sir!

        Reply

  28. Hi Stefan,
    could this new workaround also work for our SE farm? We have here also problems with accessing office dokuments.

    Thanks Marcel

    Reply

    1. Hi Marcel,
      I don’t think so. It just fixes the issue which is addressed through the script in the KB article for SPSE:


      After you run PSConfig, run the following PowerShell commands. This setting disables a defense-in-depth feature that is currently under development that may cause a regression. Existing actor token validation checks remain in place.

      $farm = Get-SPFarm
      $farm. DisableActorTokenAudienceValidation = $true #disables only the defense-in-depth validation
      $farm.update ()

      Cheers,
      Stefan

      Reply

  29. the same issue happened for SPSE after applying July CU

    Reply

    1. Hi Farid,
      this indicates that you did not apply the required steps outlined in the KB article for July CU for SPSE:


      After you run PSConfig, run the following PowerShell commands. This setting disables a defense-in-depth feature that is currently under development that may cause a regression. Existing actor token validation checks remain in place.

      $farm = Get-SPFarm
      $farm. DisableActorTokenAudienceValidation = $true #disables only the defense-in-depth validation
      $farm.update ()

      Cheers,
      Stefan

      Reply

  30. what’s the fix for if the documents opens in browser, but the search preview does not work SPSE?

    Reply

    1. Hi Abdul,
      the required script from the the SPSE KB should help:

      After you run PSConfig, run the following PowerShell commands. This setting disables a defense-in-depth feature that is currently under development that may cause a regression. Existing actor token validation checks remain in place.

      $farm = Get-SPFarm
      $farm. DisableActorTokenAudienceValidation = $true #disables only the defense-in-depth validation
      $farm.update ()

      Cheers,
      Stefan

      Reply

      1. Hi Stefan and Abdul,

        the specific question was:

        what’s the fix for if the documents opens in browser, but the search preview does not work SPSE?

        If OOS integration itself works and only the search preview is missing:
        You need to rerun the search crawl. Probably a full crawl.

        Reply

  31. Hi Stefan,

    Should we proceed with installing this July update in the Production environment using the documented workaround to mitigate the known issue, or would it be preferable to wait for the official security update that includes a permanent fix?

    Thanks,
    Babu M.

    Reply

    1. Hi Babu,
      this depends on your specific requirements.
      Cheers,
      Stefan

      Reply

  32. Hi Stefan,

    I run SP2016 and OOS but have not yet run the July CU update but just to confirm, once all the binaries have been installed and I’ve run PSConfig on all SP servers (I have 2x WFE and 2x APP) do I run:

    $stsm = Get-SPSecurityTokenServiceConfig
    $live = $stsm.LocalLoginProvider.SigningCertificate
    $pub = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(,$live.Export(‘Cert’))
    $realm = $stsm.NameIdentifier # e.g. 00000003-0000-0ff1-ce00-000000000000@

    New-SPTrustedSecurityTokenIssuer -Name “LocalSelfIssuerWopiFix” -Description “Re-trust farm self-issuer after KB5002891” -Certificate $pub -RegisteredIssuerName $realm

    Or:

    $farm = Get-SPFarm
    $farm. DisableActorTokenAudienceValidation = $true #disables only the defense-in-depth validation
    $farm.update ()

    Reply

    1. Hi Neil,
      only the first script – the second one only applies to SPSE and not to SP2016.
      Be aware that KB 5002891 has been updated to include a slightly updated script:

      # Get STS certificate

      $stsm = Get-SPSecurityTokenServiceConfig
      $live = $stsm.LocalLoginProvider.SigningCertificate

      # Export public certificate only (without private key)

      $bytes = $live.Export("Cert")
      $tempFile = "$env:TEMP\STS_Public.cer"
      Set-Content -Path $tempFile -Value $bytes -Encoding Byte

      # Load public certificate

      $pub = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($tempFile)

      # Verify it does NOT contain private key

      $pub.HasPrivateKey

      # Get realm

      $realm = $stsm.NameIdentifier

      # Create trusted issuer

      New-SPTrustedSecurityTokenIssuer -Name "LocalSelfIssuerWopiFix"
      -Description "Re-trust farm self-issuer after July PU" -Certificate $pub
      -RegisteredIssuerName $realm

      # IIS Reset on all SharePoint servers

      iisreset

      Cheers,
      Stefan

      Reply

      1. I’m having this problem; I already followed the Microsoft procedure, but it didn’t fix it. I’m still getting the error X-WOPI-ServerError: Verifying signature failed.

        Reply

        1. I’ve already solved the problem.

          Remove-SPWOPIBinding -All:$true
          New-SPWOPIBinding -ServerName ….
          Set-SPWOPIZone……
          Iisreset

          Reply

          1. Thanks for this. This also fixed it for me


      2. Thanks, Stefan. I see the August update is out, and you’ve said it’s fixed within that. I don’t see it in the improvements and fixes. Or is it deemed a security issue, rather than a nonsecurity issue? Just want to ensure I’m good to roll this update into production. Thank you!

        Reply

  33. Hello, thks 4 the workaround it works perfect for us!

    Just hope that M$ fix what they broke….

    Many thks.

    Reply

  34. Is the August OOS update expected to resolve this issue? If we haven’t installed the July CU yet, should we install the August OOS update first and then the July CU or what are the proper steps to update so it won’t break?
    Thanks!

    Reply

    1. Hi Staci,
      not the OOS update.
      This is a SharePoint issue. But the August update for SP2016 fixes it.
      Cheers,
      Stefan

      Reply

  35. The August patches have been released. Do you have any updates on whether there are any known issues or impacts with the following updates, or if they are working fine?

    KB5002905
    KB5002906

    Please let me know your observations or recommendations.

    Reply

    1. Usually it takes a couple of days or weeks till issues are identified.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.