Приглашение однорангового узла в группу
В этом разделе рассматривается процесс приглашения однорангового узла присоединиться к одноранговой группе с помощью API-интерфейсов группирования одноранговых узлов.
Для участия в одноранговой группе требуются допустимые учетные данные. Учетные данные выдаются из-за пределов группы в виде приглашений или непосредственно участникам группы, когда требуется обновить учетные данные.
Сертификаты участников группы
Группа одноранговых узлов создается, когда приложение вызывает PeerGroupCreate.
Для участия в одноранговой группе каждый одноранговый узел должен иметь удостоверение однорангового узла. Вызывайте PeerEnumIdentities , пока не будут возвращены все удостоверения одноранговых узлов, определенные для однорангового узла, и выберите нужное. Если однорангового удостоверения не существует, создайте его, вызвав PeerIdentityCreate.
Каждое удостоверение однорангового узла связано с определенным набором учетных данных, которые можно использовать для подтверждения членства в одноранговой группе при подключении, а также при публикации записей или приглашении дополнительных участников. Эти учетные данные представлены в виде цепочек сертификатов X.509, называемых сертификатами членства в группах (GMC).
Чтобы создать GMC для однорангового удостоверения, необходимо сначала получить его открытый ключ. Этот ключ получается путем вызова PeerIdentityGetXML для потенциального приглашенного и передачи его удостоверения однорангового узла. Эта функция возвращает сертификат в кодировке Base-64 (IDC), содержащий открытый ключ RSA, используемый для создания GMC для однорангового удостоверения (среди прочего), инкапсулированный в БОЛЬШОЙ ДВОИЧНЫй объект XML в следующем формате:
<PEERIDENTITYINFO VERSION="1.0">
<IDC xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64">
<!-- Base-64 encoded certificate -->
</IDC>
</PEERIDENTITYINFO>
Эту строку можно передать в PeerGroupCreateInvitation, которая возвращает приглашение, содержащее GMC для этого однорангового удостоверения. Приглашение должно быть передано приглашенному с помощью другого процесса, например электронной почты, FTP или защищенного файлового ресурса.
Кроме того, сам IDC можно поместить в новую структуру PEER_CREDENTIAL_INFO и передать в PeerGroupIssueCredentials, который также создает приглашение.
Обратите внимание, что приложения не могут добавлять теги в тег PEERIDENTITYINFO или изменять этот фрагмент XML каким-либо образом. Приложениям разрешено включать этот ФРАГМЕНТ XML в другие XML-документы, но перед передачей этого фрагмента в функции PeerGroupCreateInvitation или PeerGroupIssueCredentials необходимо исключить весь XML-код для конкретного приложения.
ГМК-члены выдаются администраторами и создателем группы одноранговых узлов. Члены должны получить новые ГМК с длительным временем существования их GMC до истечения срока действия. Администратор одноранговой группы выдает обновленные учетные данные, вызывая PeerGroupIssueCredentials с существующими учетными данными для этого однорангового узла.
Структура PEER_CREDENTIAL_INFO содержит основные данные о состоянии членства в одноранговом узле, включая открытый ключ для GMC. Недавно выданные учетные данные можно опубликовать в одноранговой группе, установив флаг PEER_GROUP_STORE_CREDENTIALS в вызове PeerGroupIssueCredentials. Когда получатель новых учетных данных присоединяется к одноранговой группе, существующие учетные данные будут обновлены инфраструктурой одноранговой группировки.
Выдача приглашения
Участнику предлагается присоединиться к одноранговой группе одним из следующих двух способов:
- Администратор группы одноранговых узлов вызывает PeerGroupCreateInvitation, передавая XML-строку сведений об удостоверениях, полученную от потенциального приглашающего через общий механизм внешнего подключения, такой как электронная почта или сеанс обмена мгновенными сообщениями. Приглашение также передается через какой-либо внешний процесс или механизм одноранговой системе, который в конечном итоге получит его в виде XML-строки или текстового файла.
- Администратор группы одноранговых узлов вызывает PeerGroupIssueCredentials. Чтобы использовать эту функцию, одноранговый узел должен уже опубликовать сведения о членстве в одноранговой группе (PEER_MEMBER) или иметь доступный открытый ключ (пары ключей RSA, используемой для создания удостоверения субъекта). В первом случае структуру PEER_CREDENTIAL_INFO , необходимую для PeerGroupIssueCredentials , можно получить из структуры PEER_MEMBER ; В последнем случае можно заполнить новую структуру PEER_CREDENTIAL_INFO открытым ключом.
Получив строку приглашения, одноранговый узел передает ее в PeerGroupJoin , чтобы присоединиться к группе одноранговых узлов. Если вызов PeerGroupJoin выполнен успешно, одноранговый узел может позже открыть группу одноранговых узлов, вызвав PeerGroupOpen.
Анализ приглашения
При необходимости можно проанализировать приглашение, вызвав PeerGroupParseInvitation, который возвращает PEER_INVITATION_INFO структуру. Поля в структуре можно легко получить для отображения.