Zur Einrichtung und Verwaltung eines Sicherheitskontextes werden zwei Arten von Hauptbenutzernamen benötigt:
Ein Server-Hauptbenutzername. Der Hauptbenutzername eines Servers wird immer als durch NULL beendete ASCII-Zeichenfolge mit dem Format service@host festgelegt -- z. B. nfs@eng.acme.com.
Wenn ein Client einen Sicherheitskontext erstellt, legt er den Hauptbenutzernamen für den Server in diesem Format fest (siehe "Erstellen eines Kontextes"). Wenn ein Server gleichsam den Namen eines Hauptbenutzers festlegen muß, den er vertreten wird, dann verwendet er die Funktion rpc_gss_set_svc_name(), die einen Hauptbenutzernamen in diesem Format als Argument verwendet.
Ein Client-Hauptbenutzername. Der Hauptbenutzername eines Clients, wie er von einem Server empfangen wird, übernimmt die Form einer rpc_gss_principal_t -Struktur: Eine gezählte, undurchsichtige Byte-Zeichenfolge, die vom verwendeten Mechanismus bestimmt wird. Diese Struktur wird in der Online-Dokumentation zu rpcsec_gss(3N) beschrieben.
Einem Server müssen die Namen der Hauptbenutzer mitgeteilt werden, die er beim Start darstellen wird. (Ein Server kann mehrere Hauptbenutzer vertreten.) rpc_gss_set_svc_name() legt die Namen des/der Hauptbenutzer(s) fest:
char *principal, *mechanism; u_int req_time; principal = "nfs@eng.acme.com"; mechanism = "kerberos_v5"; req_time = 10000; /* Zeitabschnitt für den Berechtigungsnachweise gültig sein sollten */ rpc_gss_set_svc_name(principal, mechanism, req_time, SERV_PROG, SERV_VERS);
(Kerberos ignoriert den Parameter req_time. Andere Authentisierungsysteme können ihn verwenden.)
Weitere Informationen finden Sie in der Online-Dokumentation zu rpc_gss_set_svc_name(3N).
Server müssen mit dem Hauptbenutzernamen eines Clients operieren können -- z. B. um den Hauptbenutzernamen eines Clients mit einer Zugriffssteuerungsliste zu vergleichen, oder um einen UNIX-Berechtigungsnachweis für diesen Client nachzusehen, wenn dieser Berechtigungsnachweis vorhanden ist. Derartige Hauptbenutzernamen werden in Form eines rpc_gss_principal_t Strukturzeigers gespeichert. (Weitere Informationen über rpc_gss_principal_t finden Sie in der Online-Dokumentation zu rpcsec_gss(3N).) Wenn ein Server einen empfangenen Hauptbenutzernamen mit dem Namen einer bekannten Entität vergleichen möchte, muß er in der Lage sein, einen Hauptbenutzernamen in dieser Form zu erstellen.
Der Aufruf von rpc_gss_get_principal_name() verwendet verschiedene Parameter als Eingabe, die eine Entität im Netzwerk identifizieren und generiert einen Hauptbenutzernamen als Zeiger auf eine rpc_gss_principal_t-Struktur:
rpc_gss_principal_t *principal; rpc_gss_get_principal_name(principal, mechanism, name, node, domain); . . .
Folgende Argumente werden für rpc_gss_get_principal_name() verwendet:
Hauptbenutzer stellt einen festzulegenden Zeiger auf die Struktur rpc_gss_principal_t dar.
Mechanismus steht für den verwendeten Sicherheitsmechanismus (der generierte Hauptbenutzername ist vom Mechanismus abhängig).
Name steht für eine Entität oder einen Service-Namen, wie z. B. joeh oder nfs oder sogar für den Name einer benutzerdefinierten Anwendung.
Knoten könnte z. B. der UNIX-Systemname sein.
Domain kann z. B. einen DNS-, NIS- oder NIS+-Domain-Name sowie einen Kerberos-Bereich darstellen.
Jeder Sicherheitsmechanismus erfordert unterschiedliche, kennzeichnende Parameter. Kerberos V5 erfordert z. B. einen Benutzernamen und (optional) qualifizierte Knoten- und Domain-Namen (die in Kerberos als Host- und Bereichsnamen bezeichnet werden).
Weitere Informationen finden Sie in der Online-Dokumentation zu rpc_gss_get_principal_name(3N).
Hauptbenutzernamen werden über den Bibliothekenaufruf free() freigegeben.