콘텍스트는 rpc_gss_seccreate() 호출로 작성됩니다. 이 함수는 다음을 인수로 받습니다.
클라이언트 핸들(예를 들면 clnt_create()에 의해 반환됨)
서버 주체의 이름(예: nfs@acme.com)
해당 세션의 메커니즘(예: Kerberos V5)
보안 서비스 유형(예: 프라이버시)
해당 세션의 QOP
대부분의 경우 익스포트되지 않은 상태로 유지할 수 있는 두 개의 GSS-API 매개변수(즉, 프로그래머가 널 값을 제공할 수 있음)
이 함수는 AUTH 인증 핸들을 반환합니다. 예 8-1 은 Kerberos V5 보안 메커니즘과 무결성 서비스를 사용하여 콘텍스트를 작성하기 위해 rpc_gss_seccreate()함수가 어떻게 사용되는지를 보여줍니다.
CLIENT *clnt; /* client handle */ char server_host[] = "foo"; char service_name[] = "nfs@eng.acme.com"; char mech[] = "kerberos_v5"; clnt = clnt_create(server_host, SERVER_PROG, SERV_VERS, "netpath"); clnt->clnt_auth = rpc_gss_seccreate(clnt, service_name, mech, rpc_gss_svc_integrity, NULL, NULL, NULL); . . .
다음은 예 8-1 에서 주의해야 할 몇 가지 사항입니다.
비록 메커니즘이 읽기 쉽도록 명시적으로 선언되었더라도, 일반적으로 프로그램에서 rpc_gss_get_mechanisms() 를 통해 해당 메커니즘 테이블로부터 얻게 됩니다.
QOP는 NULL로 전달되어 해당 QOP를 이 메커니즘의 기본으로 설정합니다. 또는 유효한 값을 통해 메커니즘과 마찬가지로 rpc_gss_get_mechanisms()를 사용하여 프로그램에서 가져올 수 있습니다. 자세한 내용은 rpc_gss_get_mechanisms(3N) 매뉴얼 페이지를 참고하십시오.
보안 서비스 유형인 rpc_gss_svc_integrity는 RPCSEC_GSS 유형 rpc_gss_service_t의 enum입니다. rpc_gss_service_t 는 다음과 같은 형식을 갖습니다.
typedef enum { rpc_gss_svc_default = 0, rpc_gss_svc_none = 1, rpc_gss_svc_integrity = 2, rpc_gss_svc_privacy = 3 } rpc_gss_service_t;
기본 보안 서비스는 무결성으로 지정되므로, 프로그래머가 rpc_gss_svc_default 를 지정하여 같은 결과를 얻을 수 있습니다.
자세한 내용은 rpc_gss_seccreate(3N) 매뉴얼 페이지를 참고하십시오.