Как работает безопасность группы
Для одноранговых групп требуется, чтобы у каждого члена был определенный сертификат, который называется сертификатом участника группы (GMC). Сертификат GMC гарантирует, что все записи, обмениваемые между партнёрами, имеют цифровую подпись. Открытый ключ однорангового узла содержится в структурах, передаваемых в рамках обмена данными между одноранговыми узлами, включая PEER_CREDENTIAL_INFO.
GMC может быть выдан в цепочке. Например, создатель может выдавать GMC администратору A, который может выдавать GMC администратору B, который может выдавать GMC участнику M. Результирующая цепочка GMC: creator->A->B->M, которая имеет длину 4. Длина цепочки важна, так как она не может быть длиннее 24 символов. Если двадцать четвертый администратор в цепочке пытается выдать GMC члену, PeerGroupIssueCredentials или PeerGroupCreateInvitation возвращает PEER_E_CHAIN_TOO_LONG.
GMC также можно выдавать путем вызова PeerGroupIssueCredentials. GMC подразумевает членство пользователей в группе, для которую выдается GMC, и может иметь ограниченное или бесконечное время существования. Активность участника группы не может превышать срок действия, указанный в GMC.
Заметка
Бесконечное время существования GMC в настоящее время устанавливается в 1000 лет.
Действие члена группы ограничено временем существования GMC и включает в себя следующее:
- операции записи. Одноранговый узел не может публиковать сведения в группе после истечения срока действия членства в группе или публиковать записи, которые имеют срок действия, превышающий срок действия членства в группе.
- операции членства - Администратор группы не может выдавать членство с сроком действия, превышающим дату, указанную в членстве администратора группы. Например, если у администратора осталось 500 часов до конца срока действия GMC, все выданные членства должны быть менее 500 часов.
Поскольку срок действия члена группы не может быть дольше, чем у администратора, приглашающего этого члена, рекомендуется задать срок действия GMC администратора как бесконечный или на очень длительное время. Создатель группы по умолчанию имеет бесконечное время существования.
Продление членства в группах
Чтобы продлить учетные данные администратора или участника, срок действия GMC которого готов к истечению срока действия, у вас есть следующие два варианта:
Вызовите PeerGroupIssueCredentials и передайте удостоверение члена, срок действия которого подходит к концу. Если учетные данные указаны как NULL и сведения о членстве однорангового узла доступны для группы, время продления устанавливается на ту же длительность, которая указана в ранее опубликованных учетных данных участника. Если необходимо указать другой период длительности, необходимо предоставить новую структуру PEER_CREDENTIAL_INFO, содержащую новый срок жизни, после чего публикуется новый GMC для члена.
Функция PeerGroupIssueCredentials при необходимости принимает флаг PEER_GROUP_STORE_CREDENTIALS, который автоматически публикует новые учетные данные члена в базе данных группы. Когда участник подключается к группе в следующий раз, будь то в первый раз или после выхода в автономный режим, он получает обновленный GMC из базы данных.
Вызовите PeerGroupCreateInvitation, чтобы передать удостоверение члена, срок существования GMC которого скоро истекает. Если срок действия, указанный в приглашении, равен NULL, то время существования GMC будет таким же, как у администратора GMC, который выдает членство. Если создатель указывает срок действия как NULL, выдается GMC с бесконечным сроком действия.
Если одноранговому узлу выдан GMC, срок действия которого истекает до значения времени существования присутствия, адреса однорангового узла недоступны в структурах PEER_MEMBER, возвращаемых в перечислении, инициированного вызовом PeerGroupEnumMembers. Это происходит из-за того, что сведения о присутствии не публикуются в этом случае, даже если флаг PEER_DISABLE_PRESENCE не задан.