Funktionsweise der Gruppensicherheit
Peergruppen erfordern, dass jedes Mitglied über ein bestimmtes Zertifikat verfügt, das als Gruppenmitgliedszertifikat (Group Member Certificate, GMC) bezeichnet wird. Das GMC-Zertifikat stellt sicher, dass alle zwischen Peers ausgetauschten Datensätze digital signiert werden. Der öffentliche Schlüssel eines Peers ist in den Strukturen enthalten, die im Rahmen der Kommunikation zwischen Peers übergeben werden – einschließlich PEER_CREDENTIAL_INFO.
Ein GMC kann in einer Kette ausgestellt werden. Beispielsweise kann ein Ersteller einen GMC für Administrator A ausstellen, der einen GMC für Administrator B ausstellen kann, der einen GMC für M-Mitglied ausstellen kann. Die resultierende GMC-Kette ist: creator-A-B-M>>>, die eine Länge von 4 hat. Die Länge der Kette ist wichtig, da sie nicht länger als 24 sein darf. Wenn der 24. Administrator in einer Kette versucht, einen GMC für ein Mitglied auszugeben, gibt PeerGroupIssueCredentials oder PeerGroupCreateInvitation PEER_E_CHAIN_TOO_LONG zurück.
Ein GMC kann auch durch Aufrufen von PeerGroupIssueCredentials ausgestellt werden. Ein GMC impliziert die Benutzermitgliedschaft in der Gruppe, für die der GMC ausgestellt wird, und kann eine begrenzte oder unendliche Lebensdauer haben. Gruppenmitgliedsaktivität darf nicht länger als die im GMC angegebene Lebensdauer sein.
Hinweis
Die unbegrenzte GMC-Lebensdauer ist derzeit auf 1000 Jahre festgelegt.
Die Gruppenmitgliedsaktivität ist durch die GMC-Lebensdauer begrenzt und umfasst Folgendes:
- Datensatzvorgänge : Ein Peer kann nach Ablauf der Gruppenmitgliedschaft keine Informationen in einer Gruppe veröffentlichen oder Datensätze veröffentlichen, die länger als die Lebensdauer der Gruppenmitgliedschaft des Peers sind.
- Mitgliedschaftsvorgänge : Ein Gruppenadministrator kann keine Mitgliedschaft ausstellen, die eine Lebensdauer hat, die über das in der Gruppenadministratormitgliedschaft angegebene Datum hinausgeht. Wenn ein Administrator beispielsweise 500 Stunden auf seiner GMC-Lebensdauer hat, müssen alle ausgestellten Mitgliedschaften weniger als 500 Stunden betragen.
Da ein Gruppenmitglied keine längere Lebensdauer haben kann als der Administrator, der dieses Gruppenmitglied einlädt, wird empfohlen, die GMC-Lebensdauer eines Administrators als unendlich oder für eine sehr lange Lebensdauer festzulegen. Der Gruppenersteller hat standardmäßig eine unendliche Lebensdauer.
Verlängern der Gruppenmitgliedschaft
Um die Anmeldeinformationen eines Administrators oder Mitglieds zu erneuern, dessen GMC-Lebensdauer abläuft, haben Sie die folgenden zwei Optionen:
Rufen Sie PeerGroupIssueCredentials auf, und übergeben Sie die Identität des Members, dessen Lebensdauer abläuft. Wenn die Anmeldeinformationen als NULL angegeben sind und die Mitgliedschaftsinformationen des Peers für die Gruppe verfügbar sind, wird die Verlängerungszeit auf die gleiche Dauer festgelegt, die in den zuvor veröffentlichten Mitgliedsanmeldeinformationen angegeben ist. Wenn ein anderer Zeitraum angegeben werden muss, muss eine neue PEER_CREDENTIAL_INFO-Struktur bereitgestellt werden, die die neue Lebensdauerdauer enthält, und dann wird ein neuer GMC für das Element veröffentlicht.
Die PeerGroupIssueCredentials-Funktion akzeptiert optional das flag PEER_GROUP_STORE_CREDENTIALS, das automatisch die neuen Anmeldeinformationen des Mitglieds in der Gruppendatenbank veröffentlicht. Wenn das Mitglied beim nächsten Mal eine Verbindung mit der Gruppe herstellt, entweder zum ersten Mal oder nach dem Offline schalten, ruft das Mitglied den aktualisierten GMC aus der Datenbank ab.
Rufen Sie PeerGroupCreateInvitation auf, um die Identität des Members zu übergeben, dessen GMC-Lebensdauer abläuft. Wenn der in der Einladung angegebene Ablauf NULL ist, entspricht die Lebensdauer des GMC der GMC des Administrators, der die Mitgliedschaft ausgibt. Wenn der Ersteller den Ablauf als NULL angibt, wird ein GMC mit einer unbegrenzten Lebensdauer ausgegeben.
Wenn einem Peer ein GMC ausgestellt wird, der vor dem Wert für die Anwesenheitsdauer abläuft, sind die Adressen des Peers nicht in den PEER_MEMBER Strukturen verfügbar, die in der Enumeration zurückgegeben werden, die durch einen Aufruf von PeerGroupEnumMembers initiiert wurde. Dies liegt daran, dass Anwesenheitsinformationen in diesem Fall nicht veröffentlicht werden, auch wenn das flag PEER_DISABLE_PRESENCE nicht festgelegt ist.