개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.05 00:31

LDAP 연결 재인증 프로세스 설정 문제

  • 애자일광신도 12일 전 2025.03.05 00:31
  • 13
    1
안녕하세요 LDAP 연결 재인증 프로세스를 설정하는 중에 ldap_set_rebind_proc 함수 관련 문제가 있습니다.

저는 ldap_set_rebind_proc 함수를 사용하여 재인증 프로세스를 설정하였는데, 이 함수의 첫 번째 인자인 `rebind_proc` 함수를 어떻게 구현해야 하는지 모르겠습니다.

이 함수는 LDAP 연결이 실패할 때 호출되는 함수로, 재인증을 위해 사용자 이름과 비밀번호를 다시 입력받아야 합니다. 그러나 저는 이 함수를 어떻게 구현해야 하는지 알 수 없습니다.

혹시 ldap_set_rebind_proc 함수를 사용하여 재인증 프로세스를 설정하는 방법을 알려주실 수 있을까요?

또한, 이 함수를 호출하여 재인증을 하기 위해 필요한 필수 인자를 알려주실 수 있을까요?

감사합니다.

    댓글목록

    profile_image
    나우호스팅  12일 전



    ldap_set_rebind_proc 함수는 LDAP 연결이 실패할 때 호출되는 함수로, 재인증을 위해 사용자 이름과 비밀번호를 다시 입력받습니다.

    이 함수를 구현하는 방법은 다음과 같습니다.

    1. `rebind_proc` 함수를 구현하여 LDAP 연결이 실패할 때 호출되도록 설정합니다.
    2. 이 함수 내에서 사용자 이름과 비밀번호를 다시 입력받습니다.
    3. 입력받은 사용자 이름과 비밀번호를 LDAP 연결에 다시 사용하여 연결을 시도합니다.

    `rebind_proc` 함수의 인자는 다음과 같습니다.

    * `ld`: LDAP 연결 객체
    * `req`: LDAP 요청 객체
    * `sasl_creds`: SASL 인증 정보 (선택 사항)
    * `private`: 사설 데이터 (선택 사항)

    이 함수를 호출하여 재인증을 하기 위해 필요한 필수 인자는 `ld`와 `req`입니다.

    예제 코드는 다음과 같습니다.

    #hostingforum.kr
    c
    
    int rebind_proc(LDAP *ld, BerValue *req, void *sasl_creds, void *private) {
    
        // 사용자 이름과 비밀번호를 다시 입력받습니다.
    
        char *username, *password;
    
        printf("재인증을 위해 사용자 이름과 비밀번호를 입력하세요: ");
    
        scanf("%s %s", username, password);
    
    
    
        // 입력받은 사용자 이름과 비밀번호를 LDAP 연결에 다시 사용하여 연결을 시도합니다.
    
        int rc = ldap_bind_s(ld, username, password, LDAP_AUTH_SIMPLE);
    
        if (rc != LDAP_SUCCESS) {
    
            // 연결 실패 시 재인증 프로세스를 반복합니다.
    
            return LDAP_RESTART;
    
        }
    
    
    
        // 연결 성공 시 재인증 프로세스를 종료합니다.
    
        return LDAP_SUCCESS;
    
    }
    
    
    
    int main() {
    
        // LDAP 연결 객체를 생성합니다.
    
        LDAP *ld = ldap_init("ldap.example.com", LDAP_PORT);
    
    
    
        // 재인증 프로세스를 설정합니다.
    
        ldap_set_rebind_proc(ld, rebind_proc, NULL, NULL);
    
    
    
        // LDAP 연결을 시도합니다.
    
        int rc = ldap_bind_s(ld, "username", "password", LDAP_AUTH_SIMPLE);
    
        if (rc != LDAP_SUCCESS) {
    
            // 연결 실패 시 재인증 프로세스를 호출합니다.
    
            rc = ldap_bind_s(ld, NULL, NULL, LDAP_AUTH_NONE);
    
        }
    
    
    
        // LDAP 연결을 종료합니다.
    
        ldap_unbind_s(ld);
    
    
    
        return 0;
    
    }
    
    


    이 예제 코드는 LDAP 연결이 실패할 때 재인증 프로세스를 호출하여 사용자 이름과 비밀번호를 다시 입력받습니다. 입력받은 사용자 이름과 비밀번호를 LDAP 연결에 다시 사용하여 연결을 시도합니다.

    2025-03-05 00:32

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 4,132건 / 228 페이지

검색

게시물 검색