
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