vsql_oauth2는 계정이 비밀번호 대신 JWT로 로그인하게 합니다. 확장 기능은 JWKS
엔드포인트에서 가져온 키 또는 정적 공개 키 하나로 토큰의 서명을 검증하고, 토큰이
만료되지 않았는지 확인하며, 토큰 안의 클레임을 VillageSQL 계정에 매핑합니다.
자격 증명을 발급하는 곳은 여전히 ID 공급자뿐입니다.
설치
설치 스크립트, Docker 이미지 또는 릴리스 tarball로 VillageSQL을 설치했다면vsql_oauth2.veb는 이미 서버의 lib/veb/ 디렉터리에 있습니다. 문 하나로
서버에 설치하세요:
추가되는 기능
SQL 함수가 아니라 인증 플러그인을 추가합니다. 계정을 만들 때 플러그인을 지정하면, 그 계정은 토큰을 제시하여 인증합니다:username_claim의 클레임(기본값 sub)이 제공합니다. 그 값이 analyst이면
위의 문만으로 충분합니다. 이메일 주소처럼 다른 것을 가리키면, 그 계정도 만들고
연결 계정이 그 계정으로 프록시하게 하세요:
ACCOUNT LOCK은 누구도 alice@example.com으로 직접 로그인하지 못하게 하며,
잠긴 계정에도 프록시 권한은 동작합니다. validate_password를 실행하는 서버는
잠김 여부와 상관없이 비밀번호 없는 계정 생성을 거부하며,
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 오류로 답합니다. 이 경우에는 아무도 모르는 비밀번호를 계정에
부여하세요.
프록시 권한이 없으면 로그인이
ERROR 6126 (HY000): Access denied for user 'oidc_user'@'localhost', missing proxy privilege. 오류로 거부됩니다.
나머지는 모두 구성입니다.
RSA 서명은 RS256, RS384, RS512로, ECDSA 서명은 ES256, ES384, ES512로
허용됩니다.
SET PERSIST로 쓴 설정은 재시작 후에도 유지되지만, UNINSTALL EXTENSION이
이를 삭제합니다. 제거 후 다시 설치하면 모든 설정이 기본값으로 돌아가며, 재시작해도
이전 값은 돌아오지 않습니다.상태 변수
참고 항목
- MySQL에서의 JWT 인증 — 실제 로그인 예제, 클레임 매핑, 거부된 토큰이 잘못된 비밀번호처럼 보이는 이유
- 확장 기능 관리 — 확장 기능 설정을 읽고 쓰는 방법
- 미리 보기 기능 — 미리 보기 플래그가 켜는 것과 보장하는 것
- 사용 가능한 확장 기능 — 전체 카탈로그
- villagesql/vsql-oauth2 — 소스, 실제 공급자 설정 예제, 알려진 제한 사항