Det krävs två typer av principalnamn för att upprätta och hantera en säkerhetskontext:
Ett principalnamn för en server. En servers principalnamn anges alltid som en ASCII-sträng avslutad med ett null-värde med formen tjänst@värd - t ex nfs@eng.acme.com.
När en klient skapar en säkerhetskontext anger den serverns principalnamn med det här formatet (se "Skapa en kontext"). När en server ska ange namnet på en principal som den ska representera använder den på liknande sätt rpc_gss_set_svc_name(), vilken behandlar ett principalnamn i det här formatet som ett argument.
Ett principalnamn för en klient. Principalnamnet för en klient, som det tas emot av en server, antar formen av en rpc_gss_principal_t struktur: en numrerad, dold byte-sträng som definieras av mekanismen som används. Strukturen beskrivs i direkthjälpsavsnittet (man page) rpcsec_gss(3N).
En server måste få reda på namnen på de principaler som den ska representera när den startar. (Servern kan agera som fler än en principal.) rpc_gss_set_svc_name() anger namn för principalen/principalerna:
char *principal, *mechanism; u_int req_time; principal = "nfs@eng.acme.com"; mechanism = "kerberos_v5"; req_time = 10000; /* tid under vilken referensen är giltig */ rpc_gss_set_svc_name(principal, mechanism, req_time, SERV_PROG, SERV_VERS);
(Kerberos ignorerar parametern req_time. Den kan användas av andra verifieringssystem.)
Mer information finns i direkthjälpsavsnittet (man page) rpc_gss_set_svc_name(3N).
Servrar måste kunna använda klienters principalnamn - t ex för att kontrollera om en klients principalnamn finns i en lista för åtkomstkontroll eller för att undersöka en UNIX-referens för klienten, om det finns en sådan referens. Sådana principalnamn anges med formen rpc_gss_principal_t strukturpekare. (Mer information om rpc_gss_principal_t finns i direkthjälpsavsnittet (man page) rpcsec_gss(3N).) Om en server vill jämföra ett mottaget principalnamn med namnet på ett känt element måste den skapa ett principalnamn med det formatet.
Anropet rpc_gss_get_principal_name() hanterar flera parametrar som indata, parametrar som identifierar en användare i ett nätverk, och skapar sedan ett principalnamn som en rpc_gss_principal_t-strukturpekare:
rpc_gss_principal_t *principal; rpc_gss_get_principal_name(principal, mekanism, namn, nod, domän); . . .
Argumenten för rpc_gss_get_principal_name() är:
principal är en pekare till rpc_gss_principal_t -strukturen som ska anges.
mekanism är säkerhetsmekanismen som används (kom ihåg att principalnamnet som skapas är beroende av mekanismen).
namn är en användare eller en tjänst, t ex evas eller nfs, eller ett namn för ett användardefinierat program.
nod kan t ex vara ett namn på ett UNIX-system.
domän kan t ex vara domännamn för en DNS, NIS eller NIS+, eller en användarkategori för Kerberos.
Alla säkerhetsmekanismer kräver olika parametrar för identifiering. Kerberos V5 kräver t ex ett användarnamn och, valfritt, fullständiga namn för en nod och en domän (namn för värd och användarkategori med Kerberos-terminologi).
Mer information finns i direkthjälpsavsnittet (man page) rpc_gss_get_principal_name(3N).
Du frigör principalnamn med biblioteksanropet free().