Поделиться через


Приглашение однорангового узла в группу

В этом разделе рассматривается процесс приглашения однорангового узла присоединиться к одноранговой группе с помощью 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 структуру. Поля в структуре можно легко получить для отображения.