
처음에는SO에 게시됨,하지만 여기에 더 속하는 것 같아요. 제안, 의견 및 이상적인 솔루션을 환영합니다! (그런데 SO Thread가 잘못된 위치라면 삭제하겠습니다)
외부에서 내부 서버로 제한된 액세스를 제공하려면 역방향 프록시를 설정해야 합니다. 주요 요구 사항은 다음과 같습니다.
- 다음에서 요청 리디렉션https://www.example.com~로http://내부서버(완료)
- 간단하면서도 검증된 인증 메커니즘을 활용해 보세요. (현재 일하고 있음)
- URL에 일부 GET 매개변수를 추가하여 사용자 역할을 관리합니다. (하지만 어떻게?)
- 서버가 Java 애플리케이션을 호스팅하고 있습니다. 아직 액세스할 수 없으며 앱 코드가 변경되지 않습니다. 이것은 중요하지 않습니다.
설치하고 구성했습니다mod_proxy, 리디렉션이 제대로 작동합니다.
인증은 apache2를 사용하고 있습니다기본 인증보안 측면에서는 충분할 것입니다.
이제 내 문제는 역할 관리입니다. 사용자 foo는 관리자 권한을 갖고 사용자 bar는 그렇지 않도록 요청을 변경해야 합니다. 처럼 하나의 GET 매개변수를 설정하는 것만큼 간단해야 "&role=admin"
하지만 요청을 프록시할 때 이를 수행하는 방법을 모르겠습니다.
역할은 현재 전용 MySQL 데이터베이스에 저장되어 있으므로 권한을 얻으려면 요청만 하면 되며 PHP에서 쉽게 수행할 수 있습니다. 내 문제는 PHP 페이지를 호출할 때 프록시 동작을 유지하는 방법을 모른다는 것입니다. 모든 요청에 역할 매개변수가 추가되기를 원하지만 나머지 요청은 변경되지 않은 상태로 유지해야 합니다.
현재 프록시는 virtualhost 구성(별칭 .htaccess)을 사용하여 모든 작업을 수행하지만 어떤 접근 방식이 효과가 있을지 전혀 모릅니다. VHost에서 MySQL 요청을 수행할 수 없으며 PHP 페이지로 리디렉션하면 -내가 아는 한- 프록시 개념을 "중단"합니다. 리디렉션을 수행하지만 "다른 요청 매개변수"를 잃을 가능성이 높기 때문입니다. 이는 프록시를 사용한 적이 없기 때문에 나에게는 명확하지 않습니다.
. mod_authn_dbd가 해결책이 될 수 있나요? 지금까지는 이를 사용하여 로그인하지 못했지만 어쨌든 get 매개변수를 추가해야 하는 필요성을 해결할 수 있을지 확신할 수 없습니다.libapache2-mod-auth-mysql
해결책이었을지도 모르지만 모드가 중단된 것 같아서 시도조차 할 수 없었습니다
아이디어가 부족해요.
필요한 것을 어떻게 구현할 수 있습니까? 나는 그러한 일반적인 요구에 대한 쉬운 솔루션이 존재한다고 확신합니다.
답변1
마음에 떠오르는 유일한 것은 php/curl과 같이 자신만의 간단한 프록시를 작성하는 것입니다. Apache는 PHP 지원 웹 서버 역할을 하며, php/curl은 제공된 사용자 이름에 따라 요청을 프록시하고 GET 매개변수를 수정합니다. HTTP 인증뿐만 아니라 쿠키 활성화 인증도 만들 수 있습니다.
nginx, HTTP 인증 및 nginx lua 모듈을 사용하여 동일한 작업을 시도할 수도 있지만 이는 기본적으로 lua에서 프록시를 작성할 필요성을 제외하고는 동일합니다. lua는 사용자가 관리자 역할에 적합한지 여부만 결정하고 nginx는 프록시를 수행합니다. GET 인수를 요청하고 수정합니다.