Invito di un peer a un gruppo
Questo argomento illustra il processo di invito di un peer a partecipare a un gruppo peer usando le API di raggruppamento peer.
Un gruppo peer richiede credenziali valide per partecipare. Le credenziali vengono rilasciate dall'esterno di un gruppo sotto forma di inviti o direttamente ai membri all'interno di un gruppo quando sono necessari aggiornamenti delle credenziali.
Certificati dei membri del gruppo
Un gruppo peer viene creato quando un'applicazione effettua una chiamata a PeerGroupCreate.
Per partecipare a un gruppo peer, ogni peer deve avere un'identità peer. Chiamare PeerEnumIdentities finché non vengono restituite tutte le identità peer definite per il peer e selezionare quella da usare. Se non esiste un'identità peer, crearne una chiamando PeerIdentityCreate.
Ogni identità peer è associata a un set specifico di credenziali che possono essere usate per dimostrare l'appartenenza al gruppo peer durante la connessione, nonché durante la pubblicazione di record o l'invito di membri aggiuntivi. Queste credenziali sono rappresentate come catene di certificati X.509 denominati Certificati di appartenenza al gruppo.
Per creare il GMC per un'identità peer, è prima necessario ottenere la relativa chiave pubblica. Questa chiave viene ottenuta chiamando PeerIdentityGetXML sul potenziale mittente dell'invito e passando la relativa identità peer. Questa funzione restituisce un certificato con codifica Base 64 (IDC) che contiene la chiave pubblica RSA usata per creare il GMC per l'identità peer (tra le altre cose), incapsulato in un BLOB XML, nel formato seguente:
<PEERIDENTITYINFO VERSION="1.0">
<IDC xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64">
<!-- Base-64 encoded certificate -->
</IDC>
</PEERIDENTITYINFO>
Questa stringa può essere passata a PeerGroupCreateInvitation, che restituisce un invito che contiene il GMC per tale identità peer. L'invito deve essere passato all'mittente dell'invito usando un processo diverso, ad esempio posta elettronica, FTP o una condivisione file sicura.
In alternativa, il data center IDC stesso può essere inserito in una nuova struttura di PEER_CREDENTIAL_INFO e passato a PeerGroupIssueCredentials, che genera in modo analogo un invito.
Si noti che le applicazioni non possono aggiungere tag all'interno del tag PEERIDENTITYINFO o modificare questo frammento XML in alcun modo. Le applicazioni possono incorporare questo frammento XML in altri documenti XML, ma devono rimuovere tutti i dati XML specifici dell'applicazione prima di passare questo frammento alle funzioni PeerGroupCreateInvitation o PeerGroupIssueCredentials .
Gli GMC dei membri vengono rilasciati dagli amministratori e dall'autore del gruppo peer. I membri devono ottenere nuovi GMC con durate prolungate prima che sia trascorsa la scadenza. L'amministratore del gruppo peer rilascia le credenziali aggiornate chiamando PeerGroupIssueCredentials con le credenziali esistenti per tale peer.
La struttura PEER_CREDENTIAL_INFO contiene i dati di base sullo stato di appartenenza di un peer, inclusa la chiave pubblica per il GMC. Le credenziali appena rilasciate possono essere pubblicate nel gruppo peer impostando il flag PEER_GROUP_STORE_CREDENTIALS nella chiamata a PeerGroupIssueCredentials. Quando il destinatario delle nuove credenziali viene aggiunto al gruppo peer, le credenziali esistenti verranno aggiornate dall'infrastruttura di raggruppamento peer.
Invio di un invito
Un membro viene invitato a partecipare al gruppo di peer in uno dei due modi seguenti:
- Un amministratore del gruppo peer chiama PeerGroupCreateInvitation, passando la stringa XML delle informazioni sull'identità ottenuta dal potenziale invito tramite un meccanismo comune fuori banda, ad esempio la posta elettronica o una sessione di messaggistica istantanea. L'invito viene inoltre passato tramite un processo o un meccanismo esterno al peer, che in definitiva lo riceverà come stringa XML o file di testo.
- Un amministratore del gruppo peer chiama PeerGroupIssueCredentials. Per usare questa funzione, il peer deve avere già pubblicato le informazioni di appartenenza al gruppo peer (PEER_MEMBER) o avere una chiave pubblica disponibile (della coppia di chiavi RSA usata per creare l'identità del soggetto). Nel caso precedente, la struttura PEER_CREDENTIAL_INFO necessaria per PeerGroupIssueCredentials può essere ottenuta dalla struttura PEER_MEMBER ; in quest'ultimo caso, una nuova struttura PEER_CREDENTIAL_INFO può essere popolata con la chiave pubblica.
Dopo aver ricevuto la stringa di invito, il peer lo passa a PeerGroupJoin per partecipare al gruppo peer. Se la chiamata a PeerGroupJoin ha esito positivo, il peer può successivamente aprire il gruppo peer chiamando PeerGroupOpen.
Analisi di un invito
Facoltativamente, è possibile analizzare un invito chiamando PeerGroupParseInvitation, che restituisce una struttura PEER_INVITATION_INFO . I campi nella struttura possono essere facilmente ottenuti a scopo di visualizzazione.