Oauth Validator 모듈은 배트맨 토토 세트를 정의하여 기능을 구현합니다. 서버는 사용자로부터 인증 요청을 처리하는 데 필요한대로 전화를합니다.
thestartup_cb
배트맨 토토은 모듈을로드 후 바로 실행됩니다. 이 배트맨 토토을 사용하여 로컬 상태를 설정하고 필요한 경우 추가 초기화를 수행 할 수 있습니다. Validator 모듈에 상태가있는 경우 사용할 수 있습니다State- private_data
저장하려면.
typedef void ( *explatorStartUpcb) (validatorModulestate *state);
thevalidate_cb
콜백은 OAUTH를 사용하여 인증을 시도 할 때 OAUTH 교환 중에 실행됩니다. 이전 통화에 설정된 모든 상태는에서 사용할 수 있습니다.state- private_data
.
typedef bool ( *explatorvalidatecb) (const validatormodulestate *state, const char *토큰, const char *역할, validatormoduleresult *결과);
토큰
검증 할 소지자 토큰이 포함됩니다.PostgreSQL토큰이 구문 적으로 잘 형성되었지만 다른 검증은 수행되지 않았는지 확인했습니다.역할
는 사용자가 로그인하도록 요청한 역할을 포함합니다. 콜백은에서 출력 매개 변수를 설정해야합니다.결과
struct는 다음과 같이 정의됩니다.
typedef struct validatormoduleresult bool 승인; char *authn_id; validatorModulerESult;
모듈이 설정된 경우에만 연결이 진행됩니다결과- 승인
totrue
. 사용자를 인증하려면 인증 된 사용자 이름 (토큰을 사용하여 결정된대로)은 palloc'd로 반환되어야합니다결과- authn_id
필드. 또는결과- authn_id
토큰이 유효하지만 관련 사용자 ID를 결정할 수없는 경우 NULL로 설정 될 수 있습니다.
유효성 검사기가 반환 될 수 있습니다거짓
내부 오류를 알리려면 결과 매개 변수가 무시되고 연결이 실패합니다. 그렇지 않으면 유효성 검사기가 반환해야합니다true
토큰을 처리하고 승인 결정을 내렸다는 것을 나타냅니다.
이후의 행동validate_cb
반환은 특정 HBA 설정에 따라 다릅니다. 일반적으로결과- authn_id
사용자 이름은 사용자가 로그인하는 역할과 정확히 일치해야합니다. (이 동작은 USERMP로 수정 될 수 있습니다.) 그러나 HBA 규칙에 대해 인증 할 때delegate_ident_mapping
켜져 켜짐postgresql값에 대한 점검을 수행하지 않습니다결과- authn_id
전혀; 이 경우 유효성 검사기에 달려있어서 토큰이 사용자가 표시된 내용에 따라 로그인 할 수있는 충분한 권한을 전달하는 것은역할
.
theshutdown_cb
연결과 관련된 백엔드 프로세스가 종료 될 때 콜백이 실행됩니다. Validator 모듈에 할당 된 상태가 있으면이 콜백은 리소스 누출을 피하기 위해 무료로 사용해야합니다.
typedef void ( *validatorshutdowncb) (validatormodulestate *state);