Megosztás a következőn keresztül:


A szolgáltató által üzemeltetett bővítmények működése leáll, és HTTP 401-hiba lépett fel a SharePoint-farm hibrid funkcióinak konfigurálása után

Jelenségek

Gondolja át a következő forgatókönyvet: Olyan meglévő, üzembe helyezett, szolgáltató által üzemeltetett bővítményekkel (PHA) rendelkezik, amelyek regisztrálva RegisteredIssuerName vannak, és tartalmazzák a SharePoint 2013- vagy SharePoint 2016-farm eredeti farmértékétRealmID, és/vagy létrehozott egy Munkafolyamat-kezelő társításokat a farmban.

Ebben a forgatókönyvben, ha a SharePoint hibrid funkcióinak farmon való konfigurálása után fér hozzá ezekhez a phA-khoz, a phA-k működése leáll. Emellett HTTP 401-hibaüzenetet kap, amikor a bővítményekhez irányítja a rendszer.

Megjegyzés:

A phA-k tartalmazhatnak külsőleg üzemeltetett webalkalmazást, szolgáltatást, adatbázist vagy SharePoint-összetevőt. Ez a probléma nem létezik, ha először hibrid funkciókat konfigurál, majd a szolgáltató által üzemeltetett bővítményeket és/vagy Munkafolyamat-kezelő helyez üzembe egy SharePoint 2013- vagy SharePoint 2016-farmon.

A probléma oka

A SharePoint hibrid funkcióinak konfigurálása a SharePoint 2013-hoz vagy a SharePoint 2016-hoz megszakítja a hibrid szolgáltatások konfigurálása előtt létrehozott kiszolgálók közötti (S2S) megbízhatósági kapcsolatot. Amikor S2S-megbízhatósági kapcsolatot próbál létrehozni a Cloud SSA beszállási szkriptjével vagy a Hibridfunkció-választóval, a helyszíni farm hitelesítési tartománya frissül a Microsoft 365-bérlő környezeti azonosítójának megfelelően. A szkript a Set-SPAuthenticationRealm parancsmaggal állítja be a hitelesítési tartományt. A hitelesítési tartomány módosítása után a meglévő SharePoint-bővítmények hitelesítése sikertelen.

Ez a hitelesítési hiba azért fordul elő, mert a szolgáltató által üzemeltetett bővítmények hogyan férhetnek hozzá a SharePointhoz. A SharePoint-bővítmények az érték használatával IssuerId vannak társítvaSPTrustedSecurityTokenIssuers. Kérésre egy bővítmény megkísérli lekérni a jogkivonatot a Secure Token Service kiállítójától (STS). A tokenkibocsátók a hitelesítési tartományhoz vannak kötve. A tartomány módosítása után a SharePoint-bővítmények már nem tudnak sikeresen hitelesíteni. A farmban továbbra is létezik az a megbízható jogkivonat-kibocsátó, amely a megfelelő kiállítóazonosítóval rendelkezik. Azonban az előző hitelesítési tartományhoz van társítva. A tényleges RegisteredIssuerName érték , IssuerId@OldAuthRealmGuidamelyben az oldAuthRealmGuid érték már nem egyezik az aktuális AuthRealmGuid értékkel. A bővítmény hitelesítése sikertelen, mert az STS nem talál egyező jogkivonat-kibocsátót.

A rendszer az alábbi hibaüzenetet naplózza az ULS-naplókba, és egyértelműen jelzi, hogy a jogkivonat kiállítója már nem megbízható, mert az RealmID értéke már nem egyezik a farméval:

SPApplicationAuthenticationModule: Nem sikerült hitelesíteni a kérést, ismeretlen hiba. Kivétel részletei: System.IdenitytModel.Tokens.SecurityTokenException: A jogkivonat problémái nem megbízható kiállítók.

Megoldás

Ha a hibridet konfigurálja, a módosul, RealmID hogy megfeleljen az Office365-előfizetés bérlőazonosítójának. Ez azt eredményezi, hogy a bővítmények működése leáll, ahogy azt a "Tünetek" szakaszban ismertetik. A SharePoint-bővítmény funkcióinak visszaállításához regisztrálja a szolgáltató által üzemeltetett bővítményeket az RegisteredIssuerName új tartományazonosítót tartalmazó érték használatával. Ezután alkalmazza újra a bővítményengedélyeket az egyes bővítménypéldányokhoz.

A szolgáltató által üzemeltetett bővítményekkel és hibrid funkciókkal kapcsolatos, hitelesítéssel kapcsolatos problémák elhárításához kövesse az alábbi lépéseket:

  1. Futtassa a következő szkriptet a webalkalmazásban üzembe helyezett összes alkalmazáspéldány felderítéséhez:

    A következő szkriptben cserélje le a elemet {0} a webalkalmazásra. A szkript kimenete az alkalmazás címe, az alkalmazás ügyfél-azonosítója és a szolgáltató által üzemeltetett bővítmények célwebhelye. Ezek az értékek a 3. lépésben bemenetként lesznek felhasználva.

     Add-PsSnapin Microsoft.SharePoint.PowerShell
     Add-PsSnapin Microsoft.SharePoint.PowerShell
     $webApp = Get-SPWebApplication "{0}"
     foreach($site in $webApp.Sites){
     foreach($web in $site.AllWebs)
     {
     $appInstance = Get-SPAppInstance -Web $web.Url | ? {$_.LaunchUrl -notlike "~appWebUrl*"} | select Title, AppPrincipalId
     if($appInstance -ne $null)
     {
     foreach ($instance in $appInstance)
     {
     $tmp = $instance.AppPrincipalId.Split('|@',[System.StringSplitOptions]::RemoveEmptyEntries)
     $appInfo = $instance.Title + " - " + $tmp[$tmp.Count - 2] + " - " + $web.Url
     Write-Output $appInfo
     }
     }
     }
     }
    
  2. Frissítse az SPTrustedSecurityTokenIssuers parancsprogramot a következő szkripttel:

     $NewRealm = Get-SPAuthenticationRealm
     $sts = Get-SPTrustedSecurityTokenIssuer | ? {$_.Name -ne 'EvoSTS-Trust' -and $_.Name -ne 'ACS_STS'} | Select RegisteredIssuerName
     $realm = $sts | ?{$_.RegisteredIssuerName -ne $null} | %{$($($_.RegisteredIssuerName).toString().split('@',2)[1]).toString()} | ?{$_ -ne '*' -and $_ -ne $newRealm}
     if($Realm.count -gt 0) {
     $TempRealm = '*@$($NewRealm)'
     $Issuers = Get-SPTrustedSecurityTokenIssuer | ?{$_.Name -ne 'EvoSTS-Trust' -and $_.Name -ne 'ACS_STS' -and $_.RegisteredIssuerName -ne $null -and $_.RegisteredIssuerName -notlike '*@`*' -and $_.RegisteredIssuerName -notlike $TempRealm}
    
     $Guid = [guid]::NewGuid()
     foreach ($Issuer in $Issuers)
     {
     $NameCopy = $Issuer.Name
     $NewIssuerName = $Guid
     $IssuerCertificate = $Issuer.SigningCertificate
     $OldRegisteredIssuerID = $Issuer.RegisteredIssuerName
     $IssuerID = $OldRegisteredIssuerID.Split('@')[0]
     $NewRegisteredIssuerName = $IssuerID + '@' + $NewRealm
     $NewIssuer = New-SPTrustedSecurityTokenIssuer -Name $NewIssuerName -Certificate $IssuerCertificate -RegisteredIssuerName $NewRegisteredIssuerName -IsTrustBroker
     Remove-SPTrustedSecurityTokenIssuer $Issuer -Confirm:$false
     $NewIssuer.Name = $NameCopy
     $NewIssuer.Update()
     }
     }
    
  3. Javítsa ki az 1. lépésben talált összes szolgáltató által üzemeltetett bővítményt a következő szkript futtatásával:

    A szkriptben cserélje le {0}a és {2}{1} a értéket az 1. lépésben beszerzett értékekre.

     $appTitle = '{0}'
     $clientID = '{1}'
     $targetWeb = Get-SPWeb '{2}'
     $Scope = 'Site'
     $Right = 'Full Control'
     $authRealm = Get-SPAuthenticationRealm -ServiceContext $targetWeb.Site
     $AppIdentifier = $clientID + '@' + $authRealm
     Register-SPAppPrincipal -NameIdentifier $AppIdentifier -Site $targetWeb -DisplayName $appTitle
     $appPrincipal = Get-SPAppPrincipal -Site $targetWeb -NameIdentifier $AppIdentifier
     Set-SPAppPrincipalPermission -Site $targetWeb -AppPrincipal $appPrincipal -Scope $Scope -Right $Right
    

    A Munkafolyamat-kezelő hitelesítési tartományának frissítéséhez futtassa a következő parancsmagot:

     $workflowproxy = Get-SPWorkflowServiceApplicationProxy
     $webapp = get-spwebapplication
     if ($webapp)
     {
     $webappurl = $webapp[0].url
     $Site=get-spsite $webappurl
     if ($site)
     {
     $workflowaddress = $workflowproxy.GetWorkflowServiceAddress($site)
     $workflowscopename = $workflowproxy.GetWorkflowScopeName($site)
     $TrimScope = '/'+$workflowscopename+'/'
     $wfmaddress = $workflowaddress.TrimEnd($Trimscope)
     }
     }
     $workflowproxy.delete()
     Register-SPWorkflowService -SPSite $Site -WorkflowHostUri $wfmaddress -Force
    

    Ha a hibrid szolgáltatások konfigurálása előtt farmok közötti megbízhatósági forgatókönyveket helyezett üzembe, a következő TechNet-témakörökben szereplő módszerekkel manuálisan oldhatja meg a forgatókönyveket:

További információ

Ha olyan hibrid számítási feladatokat konfigurál, amelyek s2S-t igényelnek a szolgáltató által üzemeltetett bővítmények vagy Munkafolyamat-kezelő implementálása előtt, a bővítmények a parancsmag frissítése után SPAuthenticationRealm lesznek regisztrálva a Microsoft 365-bérlő környezeti azonosítójának megfelelően. Mindig működni fognak, mert a RealmID értéke nem változik újra. Hibrid számítási feladatok hozzáadása vagy újrakonfigurálása esetén a tartományazonosító ugyanaz marad, mint a Microsoft 365-bérlő környezeti azonosítója.

A helyszíni SharePoint-környezet és a Microsoft 365 közötti megbízhatósági kapcsolat létrehozásához futtassa a Set-SPAuthenticationRealm parancsot.

Fontos

A témakör tartalmaz egy "Figyelmeztetés" szakaszt, amely arra figyelmeztet, hogy az adott tartományhoz létrehozott hozzáférési jogkivonatok nem fognak működni az SPAuthenticationRealm érték módosítása után.

SharePoint-szolgáltató által üzemeltetett bővítmények létrehozásához lásd: A szolgáltató által üzemeltetett SharePoint-bővítmények létrehozásának első lépései.

További segítségre van szüksége? Lépjen a SharePoint Közösség oldalra.