Dela via


Förhandling om säkerhetsavstäck

En säkerhetsfilt är en grupp med värden som beskriver de säkerhetsinställningar som gäller för alla proxyservrar i en process eller bara för en viss gränssnittsproxy. En säkerhetsfilt består av följande värden:

  • Autentiseringstjänst
  • Auktoriseringstjänst
  • Huvudnamn
  • Autentiseringsnivå
  • Personifieringsnivå
  • Autentiseringsidentitet
  • Kapacitet
  • En åtkomstkontrollista (ACL) (endast servrar)

Allmänna förhandlingar om säkerhet är den process som COM använder för att välja säkerhetsinställningar för en proxy när den skapas. Den här processen innebär att jämföra serverns säkerhetsfilt med klientens säkerhetsfilt och använda dessa värden för att skapa en lämplig standardsäkerhetsfilt för proxyn. I följande stycken förklaras var klientens och serverns säkerhetsfilter kommer ifrån och beskriver hur COM förhandlar om säkerhetstäcket för proxyn med hjälp av klientens och serverns säkerhetsfilter.

Klienten och servern kan anropa CoInitializeSecurity för att ange sina respektive säkerhetsfiltar. Om ett program inte anropar CoInitializeSecurity explicit anropar COM det implicit för programmet med lämpliga standardvärden. Mer information om dessa standardvärden finns i COM Security Defaults.

Vissa parametrar för att CoInitializeSecurity tillämpas när programmet är en server och vissa gäller när programmet är en klient. När programmet fungerar som en server är dessa parametrar relevanta: en ACL, en lista över tupplar för autentiseringstjänst/auktoriseringstjänst/huvudnamn och en autentiseringsnivå. En servers anrop till CoInitializeSecurity, oavsett om det är implicit eller explicit, avgör serverns säkerhetsfilt, som fortfarande är fast.

När programmet fungerar som en klient är följande värden som skickas till CoInitializeSecurity relevanta: en autentiseringsnivå, en personifieringsnivå, autentiseringsidentiteten och funktionerna. En klients implicita eller explicita anrop till CoInitializeSecurity anger den säkerhetsfilt som klienten vill ha.

När en proxy skapas använder COM de värden som anges av serverns säkerhetsfilt och klientens säkerhetsfilt för att förhandla fram en standardsäkerhetsfilt som är lämplig för proxyn. COM väljer en autentiseringstjänst som fungerar på både klienten och servern. Auktoriseringstjänsten och huvudnamnet väljs för att fungera med autentiseringstjänsten. För autentiseringsnivån väljer COM det högre av de autentiseringsnivåer som anges av klienten och servern. Personifieringsnivån och de funktioner som valts av COM är de som anges av klienten. Autentiseringsidentiteten är den som anges av klienten för den valda autentiseringstjänsten.

När standardsäkerhetstäcket har beräknats tilldelas dess värden till den nyligen skapade proxyn. Klienten kan åsidosätta säkerhetsinställningarna för proxyn genom att anropa IClientSecurity::SetBlanket. Värdena som anges för SetBlanket förhandlas inte. de tilldelas helt enkelt till den angivna proxyn. Men om standardparametrar (till exempel RPC_C_IMP_LEVEL_DEFAULT) skickas till SetBlanketanvänder COM den tidigare beskrivna algoritmen för generella förhandlingar för säkerhet för att beräkna standardparametrarna.

Säkerhet i COM-