Invitar a un elemento del mismo nivel a un grupo
En este tema se describe el proceso de invitar a un elemento del mismo nivel a unirse a un grupo del mismo nivel mediante las API de agrupación de pares.
Un grupo del mismo nivel requiere credenciales válidas para participar. Las credenciales se emiten desde fuera de un grupo en forma de invitaciones o directamente a los miembros de un grupo cuando se necesitan actualizaciones de credenciales.
Certificados de miembro de grupo
Se crea un grupo del mismo nivel cuando una aplicación realiza una llamada a PeerGroupCreate.
Para participar en un grupo del mismo nivel, cada elemento del mismo nivel debe tener una identidad del mismo nivel. Llame a PeerEnumIdentities hasta que se hayan devuelto todas las identidades del mismo nivel definidas para el mismo nivel y seleccione la que se debe usar. Si no existe una identidad del mismo nivel, cree una llamando a PeerIdentityCreate.
Cada identidad del mismo nivel está asociada a un conjunto específico de credenciales que se pueden usar para demostrar la pertenencia a grupos del mismo nivel al conectarse, así como al publicar registros o invitar a miembros adicionales. Estas credenciales se representan como cadenas de certificados X.509 denominados certificados de pertenencia a grupos (GMC).
Para crear el GMC para una identidad del mismo nivel, primero debe obtener su clave pública. Esta clave se obtiene llamando a PeerIdentityGetXML en el posible invitado y pasando su identidad del mismo nivel. Esta función devuelve un certificado codificado en base 64 (IDC) que contiene la clave pública RSA que se usa para crear el GMC para la identidad del mismo nivel (entre otras cosas), encapsulada en un blob XML, con el siguiente formato:
<PEERIDENTITYINFO VERSION="1.0">
<IDC xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64">
<!-- Base-64 encoded certificate -->
</IDC>
</PEERIDENTITYINFO>
Esta cadena se puede pasar a PeerGroupCreateInvitation, que devuelve una invitación que contiene el GMC para esa identidad del mismo nivel. La invitación debe pasarse al invitado mediante un proceso diferente, como correo electrónico, FTP o un recurso compartido de archivos seguro.
Como alternativa, el propio IDC se puede colocar en una nueva estructura de PEER_CREDENTIAL_INFO y pasarse a PeerGroupIssueCredentials, lo que también genera una invitación.
Tenga en cuenta que las aplicaciones no pueden agregar etiquetas dentro de la etiqueta PEERIDENTITYINFO ni modificar este fragmento XML de ninguna manera. Las aplicaciones pueden incorporar este fragmento XML en otros documentos XML, pero deben quitar todos los XML específicos de la aplicación antes de pasar este fragmento a las funciones PeerGroupCreateInvitation o PeerGroupIssueCredentials .
Los administradores y el creador del grupo del mismo nivel emiten los GMC miembros. Los miembros deben obtener nuevos GMC con vigencias extendidas de sus GMC antes de que haya transcurrido el tiempo de expiración. El administrador del grupo del mismo nivel emite credenciales actualizadas llamando a PeerGroupIssueCredentials con las credenciales existentes para ese mismo nivel.
La estructura PEER_CREDENTIAL_INFO contiene los datos básicos sobre el estado de pertenencia de un mismo nivel, incluida la clave pública para su GMC. Las credenciales recién emitidas se pueden publicar en el grupo del mismo nivel estableciendo la marca PEER_GROUP_STORE_CREDENTIALS en la llamada a PeerGroupIssueCredentials. Cuando el destinatario de las nuevas credenciales se une al grupo del mismo nivel, la infraestructura de agrupación del mismo nivel actualizará las credenciales existentes.
Emisión de una invitación
Se invita a un miembro a unirse al grupo del mismo nivel de una de las dos maneras siguientes:
- Un administrador de grupos del mismo nivel llama a PeerGroupCreateInvitation, pasando la cadena XML de información de identidad obtenida del posible invitado a través de un mecanismo común fuera de banda, como el correo electrónico o una sesión de mensajería instantánea. La invitación también se pasa a través de algún proceso o mecanismo externo al mismo nivel, que en última instancia lo recibirá como una cadena XML o un archivo de texto.
- Un administrador del grupo del mismo nivel llama a PeerGroupIssueCredentials. Para usar esta función, el elemento del mismo nivel debe haber publicado información de pertenencia al grupo del mismo nivel (PEER_MEMBER) o tener una clave pública disponible (del par de claves RSA usada para crear la identidad del sujeto). En el caso anterior, la estructura PEER_CREDENTIAL_INFO necesaria para PeerGroupIssueCredentials se puede obtener de la estructura PEER_MEMBER ; en este último caso, se puede rellenar una nueva estructura de PEER_CREDENTIAL_INFO con la clave pública.
Después de recibir la cadena de invitación, el elemento del mismo nivel lo pasa a PeerGroupJoin para unirse al grupo del mismo nivel. Si la llamada a PeerGroupJoin se realiza correctamente, el mismo nivel puede abrir posteriormente el grupo del mismo nivel llamando a PeerGroupOpen.
Análisis de una invitación
Opcionalmente, se puede analizar una invitación llamando a PeerGroupParseInvitation, que devuelve una estructura de PEER_INVITATION_INFO . Los campos de la estructura se pueden obtener fácilmente con fines de visualización.