이전 항목: 원격 권한 부여 API다음 항목: SEOSROUTE_VerifyCreate 함수


파일

원격 권한 부여 API는 다음 파일을 사용합니다.

예제

다음 프로그램은 클라이언트 응용 프로그램이 원격 권한 부여 검사를 수행하는 방법을 보여 줍니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <unistd.h>

#include "api_auth.h"
#include "langapi.h"

int ShowUsage(void)
{
  fprintf( stderr, "Usage:\n"
     " rmt_auth UserName ClassName ResourceName"
     "Access"
  return 1;
}

int main(int argc, char *argv[])
{
char *output;
int rv;
API_AUTH_RES result;
char input[200];
char *Passwd = NULL;

    if ( argc != 6 )
        return ShowUsage();

    Passwd = getpass("Please enter your password:");
    if ( Passwd == NULL )
    {
       printf("Illegal password!!\n");
       return 1;
}

    /*
     * Initialization. get the host name and password from the
     * command line parameters
     */
    rv = lca_rmtauth_Init("rmt_auth", &output, argv[5], Passwd);
    if ( rv )
    {
        printf( "Return value: 0x%08x\n"
              "%s\n", rv, (output) ? output : "Initialization failed" );
        return 1;
    }
    Passwd = NULL;

    /*
     * Send the request to the server and get the result
     */
rv = lca_rmtauth_CheckAccess(argv[1], argv[2], argv[3], argv[4], &result);
    if ( rv )
    {
        printf("Return value: 0x%08x\n"
               "Remote Access Check failed\n", rv);
        return 1;
    }

    /*
     * Print the results.
     * Further analysis as for the reasons for granting/denying
     * access can be made at this stage
     */
    printf("%s's access %s to %s %s at %s is %s!!\n",
               argv[1], argv[4], argv[2], argv[3], argv[5],
            ((char) result.result == 'P') ? "Permitted" : "Denied");

    lca_Terminate();
}

이 예제를 컴파일하고 연결한 후 사용자에게 특정 리소스에 액세스할 수 있는 권한이 있는지 여부를 확인할 수 있습니다. 예를 들어 사용자 Joe에게 /etc/passwd 파일에 대한 읽기 액세스 권한이 있는지 확인하려면 다음 명령을 입력하십시오.

rmt_auth Joe FILE /etc/passwd Read authorizationservername

암호를 입력하면 응답이 수신됩니다.

추가 정보:

원격 권한 부여 작업

함수

권한 부여 및 인증 API는 다음 함수로 구성되어 있습니다.

SEOSROUTE_ParseApiError

오류 문자열을 오류 코드를 나타내는 정수로 변환합니다.

SEOSROUTE_RequestAuth

사용자가 지정된 액세스 유형을 사용하여 리소스에 액세스할 수 있는지 여부를 확인합니다.

SEOSROUTE_VerifyCreate

사용자의 ACEE 핸들을 생성합니다.

SEOSROUTE_VerifyDelete

사용자의 ACEE 핸들을 삭제합니다.

SEOSROUTE_ParseApiError 함수

SEOSROUTE_ParseApiError 함수는 확인 및 인증 함수가 반환한 오류 문자열을 구문 분석하고 해당 오류 문자열과 연결된 정수를 반환합니다.

참고:

szErrMsg

CA ControlMinder가 *szMsg 매개 변수에 반환하는 오류 문자열입니다.

SEOSROUTE_RequestAuth 함수

SEOSROUTE_RequestAuth 함수는 지정된 사용자가 지정된 리소스에 지정된 액세스 유형을 사용하여 액세스할 수 있는지 여부를 seosd에 확인합니다.

SEOSROUTE_RequestAuth 함수는 먼저 매개 변수가 유효한지 여부를 확인하는 요청을 seosd에 보냅니다. 매개 변수가 유효하면 seosd는 지정된 사용자가 지정된 리소스에 지정된 방식으로 액세스할 수 있는지 확인하는 표준 리소스 권한 부여 검사를 수행합니다.

처음 다섯 개의 매개 변수는 응용 프로그램이 제공해야 합니다. 마지막 두 개의 매개 변수는 CA ControlMinder가 반환하며 응용 프로그램이 결과를 결정한 후 사용자에게 상태 정보를 제공하는 데 사용될 수 있습니다.

이 함수는 다음 값 중 하나를 나타내는 정수를 반환합니다.

SEOSAPI_AUTH_OK

사용자가 요청한 리소스에 액세스할 수 있습니다.

SEOSAPI_AUTH_BADACCESS_ERR

올바르지 않은 액세스 권한이 지정되었습니다.

SEOSAPI_AUTH_DENY

요청이 거부되었습니다.

SEOSAPI_AUTH_NORESPONSE_ERR

seosd 데몬이 응답하지 않습니다.

SEOSAPI_AUTH_NOTROOT_ERR

호출 프로세스의 사용자 ID가 0(root)이 아니고 호출 프로세스를 실행하는 사용자에게 SERVER 특성이 없습니다.

SEOSAPI_AUTH_REMOTE_ERR

데몬 또는 서비스가 szMsg에 설명된 오류를 반환했습니다.

참고:

서버 응용 프로그램은 일반적으로 SEOSROUTE_RequestAuth를 호출하기 전에 SEOSROUTE_VerifyCreate를 호출하여 권한 부여 검사 중인 대상 사용자의 ACEE 핸들을 가져옵니다.

szClass

리소스가 속한 클래스의 이름입니다.

szEntity

액세스하려는 리소스를 나타내는 레코드 또는 개체의 이름입니다.

참고: szClass가 대/소문자를 구분하는 개체를 지원하는 경우 szEntity 매개 변수의 대/소문자는 중요합니다.

hACEE

접근자의 ACEE 핸들입니다. 현재 프로세스와 연결된 사용자의 ACEE를 지정하려면 SEOSAPI_AUTH_CURRACEE를 지정하십시오. SEOSAPI_AUTH_CURRACEE 이외의 ACEE 핸들을 지정하려면 호출 프로세스와 연결된 사용자에게 SERVER 특성이 있거나 호출 프로세스가 유효한 사용자 ID인 0(루트)으로 실행 중이어야 합니다.

pAccess

요청된 액세스를 포함하는 구조에 대한 포인터입니다. 이 구조는 SEOS_ACCS 유형의 단일 데이터 구성원 액세스를 포함합니다. 이 구성원에 유효한 값은 다음과 같습니다.

LogOpt

감사 로그 항목을 생성해야 하는지 여부를 결정하는 플래그입니다. 유효한 값은 다음과 같습니다.

SEOSAPI_AUTH_LOGNONE

root가 아닌 일반 사용자의 경우 권한 부여 요청에 성공하면 감사 로그를 생성하지 않습니다. 권한 부여 요청에 실패하고 데이터베이스의 현재 규칙이 감사를 필요로 하는 경우에는 감사 레코드를 생성합니다.

서버 응용 프로그램 및 root 사용자의 경우에는 권한 부여 요청의 성공 여부에 관계없이 감사 레코드를 생성하지 않습니다(값 = 0).

SEOSAPI_AUTH_LOG

데이터베이스의 현재 규칙이 감사 레코드를 필요로 하는 경우 감사 레코드를 생성합니다(값 = 1).

SEOSAPI_AUTH_LOGALL

일반 사용자의 경우 이 옵션은 유효하지 않으며 SEOSAPI_AUTH_LOG에 매핑됩니다.

서버 응용 프로그램의 경우 데이터베이스 규칙에 관계없이 항상 감사 레코드를 생성합니다(값 = 2).

SEOSAPI_AUTH_LOGFAIL

일반 사용자의 경우 이 옵션은 유효하지 않으며 SEOSAPI_AUTH_LOG에 매핑됩니다.

서버 응용 프로그램의 경우 권한 부여 요청에 실패하고 데이터베이스 규칙이 감사 레코드를 필요로 하는 경우에만 감사 레코드를 생성합니다(값 = 3).

SEOSAPI_AUTH_LOGNONE_USER

root를 포함한 일반 사용자의 경우 권한 부여 요청에 성공하면 감사 로그를 생성하지 않습니다. 권한 부여 요청에 실패하고 데이터베이스의 현재 규칙이 감사를 필요로 하는 경우에는 감사 레코드를 생성합니다.

서버 응용 프로그램의 경우에는 권한 부여 요청의 성공 여부에 관계없이 감사 레코드를 생성하지 않습니다(값 = 4).

SEOSAPI_AUTH_LOGNEVER

감사 레코드를 생성하지 않습니다(값 = 5).

pRes

권한 부여 결과를 포함하는 API_AUTH_RES 구조에 대한 포인터입니다.

szMsg

CA ControlMinder가 상태 메시지를 반환하는 대상 SEOSAPI_AUTH_MSGLEN 버퍼에 대한 포인터입니다.

SEOSROUTE_RequestAuthAzn 함수

SEOSROUTE_RequestAuthAzn 함수는 권한 부여 요청을 seosd로 보냅니다. CA ControlMinder는 먼저 매개 변수가 유효한지 여부를 확인합니다. 매개 변수가 유효하면 CA ControlMinder는 SEOSROUTE_RequestAuth 함수에 구현된 표준 리소스 권한 부여 검사를 수행합니다.

중요! 이 함수는 더 이상 사용되지 않으며 이전 버전과의 호환성을 위해서만 사용할 수 있습니다.

이 함수가 성공할 경우 반환 값은 0입니다. 그렇지 않은 경우 반환 값은 오류 코드입니다.

int SEOSROUTE_RequestAzn (
     LPCSTR szClass,
     LPCSTR szEntity,
     LPCSTR szAccess,
     HANDLE *phUserAttributes,
     int hACEE,
     int LogOpt,
     API_AZN_RES  *pres,
     API_RESP_TAB **response,
     LPCSTR szMsg
);
hACEE

접근자의 ACEE 핸들입니다.

LogOpt

감사 로그 항목을 생성해야 하는지 여부를 결정하는 플래그입니다.

phUserAttributes

SEOSROUTE_Create RequestAzn 함수가 생성하는 해시 테이블에 대한 포인터입니다. 이 포인터는 SEOSD 프로세스에만 관련됩니다.

pRes

권한 부여 결과를 포함하는 API_AZN_RES 구조에 대한 포인터입니다.

response

응답 목록을 포함하는 버퍼에 대한 포인터입니다.

SzAccess

null 종결 문자열에 대한 포인터입니다. null 종결 문자열은 szEntity가 설명하는 개체에 해당하는 액세스 이름을 지정합니다.

SzClass

리소스 클래스의 이름을 포함하는 null 종결 문자열에 대한 포인터입니다.

SzEntity

액세스할 리소스를 나타내는 개체의 이름을 포함하는 null 종결 문자열에 대한 포인터입니다.

참고: szClass가 대/소문자를 구분하는 개체를 지원하는 경우 szEntity 매개 변수의 대/소문자는 중요합니다.

szMsg

CA ControlMinder가 상태 메시지를 반환하는 버퍼 SEOSAPI_AUTH_MSGLEN 바이트에 대한 포인터입니다.

SEOSROUTE_CreateRequestAzn 함수

SEOSROUTE_CreateRequestAzn 함수는 seosd에 동일한 사용자와 관련된 사용자 특성의 배열을 보내고 사용자 특성을 기반으로 생성된 해시 테이블을 지정하는 포인터를 받습니다.

참고: 사용자를 처리한 후에 SEOSROUTE_CloseRequestAzn 함수를 호출해야 합니다.

이 함수가 성공할 경우 반환 값은 0입니다. 그렇지 않은 경우 반환 값은 오류 코드입니다.

INT SEOSROUTE_CreateRequestAzn(
     LPCSTR szUserDir,
     DWORD cEntries,
     LPAPI_AZN_USERATTR pUserAttr,
     PHANDLE phUserAttributes,
     LPSTR szMsg
);
SzUserDir in

사용자 디렉터리를 지정하는 null 종결 문자열에 대한 포인터입니다.

CEntries

배열에서 pUserAttr가 가리키는 API_AZN_USERATTR 구조의 수를 지정하는 값입니다. 0일 수 없습니다.

PUserAttr in

사용자 특성을 포함하는 배열에 대한 포인터입니다.

PhUserAttributes out

함수가 성공하면 이 매개 변수는 사용자 특성을 사용하여 계산된 해시 테이블에 대한 포인터를 지정합니다.

함수가 실패하면 값은 INVALID_HANDLE_VALUE입니다.

SzMsg out

CA ControlMinder가 상태 메시지를 반환하는 버퍼 SEOSAPI_AUTH_MSGLEN 바이트에 대한 포인터입니다.

SEOSROUTE_CloseRequestAzn 함수

SEOSROUTE_CloseRequestAzn 함수는 hUserAttributes로 해시 테이블 포인터를 제거합니다. 이 함수를 호출한 후에는 SEOSROUTE_CreateRequestAzn( )을 다시 처리하지 않는 한 SEOSD가 지정된 사용자에 대한 권한 부여 요청을 처리할 수 없습니다.

이 함수가 성공할 경우 반환 값은 0입니다. 그렇지 않은 경우 반환 값은 오류 코드입니다.

INT SEOSROUTE_CloseRequestAzn(
     HANDLE hUserAttributes,
     LPSTR szMsg
);
HUserAttributes in

사용자 특성을 사용하여 계산된 해시 테이블에 대한 포인터입니다.

SzMsg out

CA ControlMinder가 상태 메시지를 반환하는 버퍼 SEOSAPI_AUTH_MSGLEN 바이트에 대한 포인터입니다.

API_AZN_USERATTR 구조

API_AZN_USERATTR 구조는 특성 정보를 지정합니다.

typedef  struct tagAPI_AZN_USERATTR {
     char szAttName[ONAME_SIZE];
     char szAttVal[ONAME_SIZE];
}API_AZN_USERATTR, *PAPI_AZN_USERATTR, FAR *LPAPI_AZN_USERATTR;
szAttName

특성 이름을 포함하는 null 종결 문자열입니다.

szAttVal

특성 값을 포함하는 null 종결 문자열입니다.