libpq사설 토토 사이트 V2 장치 권한 부여 클라이언트 흐름에 대한 지원을 구현합니다.RFC 8628, 선택 모듈로. 참조설치 문서내장 흐름으로서 장치 승인을 지원하는 방법에 대한 정보.
지원이 활성화되고 선택 모듈이 설치된 경우libpq서버 인 경우 기본적으로 내장 흐름을 사용합니다PostgreSQL : 문서 : 18 : 20.15. 사설 사설 토토 사이트 인증/인증인증 중. 클라이언트 애플리케이션을 실행하는 시스템에 사용 가능한 웹 브라우저가 없어도이 흐름을 활용할 수 있습니다.SSH.
내장 흐름은 기본적으로 방문 할 URL을 인쇄하고 여기에 입력 할 사용자 코드를 인쇄합니다.
$ psql 'dbname = postgres 사설 토토 사이트_issuer = https : //example.com 사설 토토 사이트_client_id = ...' https://example.com/device를 방문하여 코드를 입력하십시오 : ABCD-Efgh
(이 프롬프트가 될 수 있습니다사용자 정의.) 사용자는 사설 토토 사이트 제공 업체에 로그인하여 LIBPQ와 서버가 자신을 대신하여 작업을 수행 할 수 있는지 묻습니다. 계속하기 전에 URL과 명시된 권한을 신중하게 검토하여 기대치를 일치시키기 전에 신중하게 검토하는 것이 좋습니다. 신뢰할 수없는 제 3 자에게는 권한을 부여해서는 안됩니다.
클라이언트 애플리케이션은 응용 프로그램과의 상호 작용 및 통합을 사용자 정의하기 위해 자체 흐름을 구현할 수 있습니다. 보다섹션 32.20.1사용자 정의 흐름을 추가하는 방법에 대한 자세한 내용은libpq.
사설 토토 사이트 클라이언트 흐름을 사용할 수 있으려면 연결 문자열은 최소한으로 포함되어야합니다사설 토토 사이트_issuerand사설 토토 사이트_client_id. (이러한 설정은 조직의 사설 토토 사이트 제공 업체에 의해 결정됩니다.) 내장 흐름은 추가로 사설 토토 사이트 인증 서버가 장치 인증 엔드 포인트를 게시하도록 요구합니다..
내장 장치 인증 흐름은 현재 Windows에서 지원되지 않습니다. 사용자 정의 클라이언트 흐름은 여전히 구현 될 수 있습니다.
사설 토토 사이트 흐름의 동작은 다음 후크 API를 사용하여 클라이언트에 의해 수정되거나 대체 될 수 있습니다 :
pqsetauthdatahook
#설정pgauthdatahook
, 재정의libpq의 사설 토토 사이트 클라이언트 흐름의 하나 이상의 측면을 처리합니다.
void pqsetauthdatahook (pqauthdatahook_type hook);
ifhook
isNULL
, 기본 핸들러가 다시 설치됩니다. 그렇지 않으면 응용 프로그램은 서명이있는 콜백 함수에 대한 포인터를 전달합니다.
int hook_fn (pgauthdata 유형, pgconn *conn, void *data);
whylibpq응용 프로그램에 대한 조치가 필요할 때 호출합니다.type
요청에 대해 설명합니다.conn
연결 핸들이 인증되고 있으며data
요청 별 메타 데이터를 가리 킵니다. 이 포인터의 내용은에 의해 결정됩니다.type
; 보다섹션 32.20.1.1지원되는 목록의 경우
훅은 협력 및/또는 폴백 행동을 허용하기 위해 함께 묶을 수 있습니다. 일반적으로 후크 구현은 들어오는 것을 조사해야합니다type
(및 잠재적으로 요청 메타 데이터 및/또는 특정 설정conn
사용 중) 특정 AuthData를 처리할지 여부를 결정합니다. 그렇지 않은 경우 체인의 이전 후크에 위임해야합니다 (reatible v.pqgetauthdatahook
).
성공은 0보다 큰 정수를 반환하여 표시됩니다. 음의 정수를 반환하면 오류 조건을 신호하고 연결 시도를 포기합니다. (기본 구현을 위해 제로 값이 예약되어 있습니다.)
pqgetauthdatahook
#현재 값을 검색pgauthdatahook
.
pqauthdatahook_type pqgetauthdatahook (void);
초기화 시간에 (첫 번째 호출 전pqsetauthdatahook
),이 함수는 반환됩니다pqdefaultauthdatahook
.
다음pgauthdata
유형 및 해당 해당데이터
구조가 정의되어 있습니다 :
pqauthdata_prompt_oauth_device
#내장 장치 인증 클라이언트 흐름에서 기본 사용자 프롬프트를 대체합니다.데이터
인스턴스를 가리 킵니다pgprompt사설 토토 사이트device
:
typedef struct _pgprompt사설 토토 사이트device const char *verification_uri; / * 방문 할 URI 확인 */ const char *user_code; / * 입력 할 사용자 코드 */ const char *verification_uri_complete; /* URI의 선택적 조합 * 코드 또는 null */ int expires_in; / * 사용자 코드가 만료 될 때까지 */ pgprompt사설 토토 사이트device;
사설 토토 사이트 장치 권한 부여 흐름포함 할 수 있습니다inlibpq최종 사용자가 브라우저를 사용하여 URL을 방문한 다음 허용하는 코드를 입력해야합니다libpq대신 서버에 연결합니다. 기본 프롬프트는 단순히 인쇄합니다.verification_uri
및user_code
표준 오류에서. 교체 구현은 선호하는 방법 (예 : GUI)을 사용 하여이 정보를 표시 할 수 있습니다.
이 콜백은 내장 장치 인증 흐름 중에 만 호출됩니다. 응용 프로그램이 a를 설치하는 경우Custom 사설 토토 사이트 흐름또는libpq내장 흐름에 대한 지원으로 구축되지 않았 으며이 authdata 유형은 사용되지 않습니다.
null이 아닌 경우verification_uri_complete
제공되면 선택적으로 비 텍스트 검증에 사용될 수 있습니다 (예 : QR 코드를 표시 함). 이 경우 URL 및 사용자 코드는 여전히 최종 사용자에게 표시되어야합니다.이 경우 코드가 공급자가 수동으로 확인하고 URL을 사용하면 비 텍스트 방법을 사용할 수없는 경우에도 URL을 계속할 수 있습니다. 자세한 내용은 섹션 3.3.1 in을 참조하십시오.RFC 8628.
pqauthdata_oauth_bearer_token
#흐름의 사용자 정의 구현을 추가하여 내장 흐름을 대체합니다.설치. 후크는 현재 사용자/발행자/스코프 조합에 대한 베어러 토큰을 직접 반환하거나 차단하지 않고 사용할 수 있거나 다른 콜백을 설정하여 하나를 검색해야합니다..
data
인스턴스를 가리 킵니다pg사설 토토 사이트bearerRequest
,이 구현에 의해 채워야합니다.
typedef struct pgoauthbearerrequest / * 후크 입력 (모든 통화에 따라 상수) */ const char *OpenID_Configuration; / * OIDC Discovery URL */ const char *범위; / * 필수 범위 또는 null */ / * 후크 출력 */ /* 콜백 사용자 지정 비동기식 Oauth 흐름을 구현합니다. */ postgrespollingstatustype ( *async) (pgconn *conn, struct pgoauthbearerrequest *요청, SOODTYPE *ALTSOCK); /* 콜백 사용자 정의 할당을 정리합니다. */ void ( *cleanup) (pgconn *conn, struct pgoauthbearerrequest *요청); 숯 *토큰; / * 취득한 소지자 토큰 */ 무효 *사용자; / * 후크 정의 할당 된 데이터 */ pg사설 토토 사이트bearerRequest;
두 개의 정보가 훅에 제공됩니다.libpq: OpenID_Configuration
권한 부여 서버의 지원 흐름을 설명하는 사설 토토 사이트 발견 문서의 URL을 포함합니다.스코프
서버에 액세스하는 데 필요한 공간 분리 된 OAUTH 스코프 목록이 포함되어 있습니다. 둘 중 하나 또는 둘 다일 수 있습니다NULL
정보를 발견 할 수 없음을 나타냅니다. (이 경우 구현은 다른 미리 구성된 지식을 사용하여 요구 사항을 설정하거나 실패하기로 선택할 수 있습니다.)
후크의 최종 출력은입니다.토큰
는 연결에 사용하기 위해 유효한 베어러 토큰을 가리켜 야합니다. (이 토큰은에 의해 발행되어야합니다.Oauth_issuer요청 된 스코프를 보관하거나 서버의 유효성 검사기 모듈에 의해 연결이 거부됩니다.) 할당 된 토큰 문자열은까지 유효합니다libpq연결이 완료되었습니다. 후크는 a를 설정해야합니다.정리
libpq더 이상 필요하지 않습니다.
구현이 즉시 a를 생산할 수없는 경우토큰
훅으로의 초기 호출 중에를 설정해야합니다.async
인증 서버와의 비 차단 통신을 처리하려는 콜백.[16]이것은 후크에서 돌아 오는 즉시 흐름을 시작하도록 호출됩니다. 콜백이 차단하지 않고 더 많은 진전을 이룰 수 없으면 둘 중 하나를 반환해야합니다pgres_polling_reading
또는pgres_polling_writing
설정 후*pgsocket
진행 상황이 다시 만들 수있을 때 읽거나 쓸 준비가 될 파일 설명 자에게. (이 설명자는를 통해 최상위 폴링 루프에 제공됩니다pqsocket ()
.) returnpgres_polling_ok
설정 후토큰
흐름이 완료되면 또는pgres_polling_failed
실패를 나타내는 것.
구현은 전화를 걸어서 부기를위한 추가 데이터를 저장할 수 있습니다async
and정리
콜백. 그만큼user
포인터 가이 목적을 위해 제공됩니다.libpq| 내용은 내용을 만지지 않으며 애플리케이션은 편의상이를 사용할 수 있습니다. (토큰 청소 중에 할당을 해제해야합니다.)
환경 변수를 설정하여 "위험한 디버깅 모드"를 활성화 할 수 있습니다pg사설 토토 사이트debug = 안전하지 않은
. 이 기능은 현지 개발 및 테스트의 용이성 만 제공됩니다. 그것은 당신이 생산 시스템을 원하지 않는 몇 가지 일을합니다 :
사설 토토 사이트 제공 업체 교환 중에 암호화되지 않은 HTTP의 사용을 허용
시스템의 신뢰할 수있는 CA 목록을를 사용하여 완전히 교체 할 수 있습니다.pg사설 토토 사이트cafile
환경 변수
사설 토토 사이트 흐름 중에 HTTP 트래픽 (여러 중요한 비밀 포함)을 표준 오류로 인쇄
2 초의 재 시도 간격을 사용하여 클라이언트가 바쁜 루프를 만들고 무의미하게 CPU를 소비 할 수 있습니다
사설 토토 사이트 흐름 트래픽의 출력을 제 3 자와 공유하지 마십시오. 여기에는 고객과 서버를 공격하는 데 사용할 수있는 비밀이 포함되어 있습니다.
[16]pqauthdata_oauth_bearer_token
후크 콜백은 |와 같은 비 차단 연결 API를 방해합니다.pqconnectpoll
동시 연결이 진행되는 것을 방지합니다. 와 같은 동기 연결 프리미티브 만 사용하는 응용 프로그램PQCONNECTDB
, 후크 중에 토큰을 동기로 검색 할 수 있습니다async
콜백이지만 반드시 한 번에 하나의 연결로 제한됩니다.