2013-07-18 4 views
1

토큰 기반 보안 시스템이있는 공용 웹 서비스가 있습니다. 로그인은 사용자 이름 & 암호를 제공함으로써 수행되며 서비스가 호출 될 때마다 앞으로 사용되는 고유 토큰이 반환됩니다.공용 웹 서비스 보안 - 내부 요청

내 질문은 다음과 같습니다. 내부 네트워크 외부에서 걸려 오는 전화와 내부에서 걸려 오는 전화를 구별하는 안전한 방법이 있습니까? 내부 네트워크에서 서비스를 호출하는 클라이언트에게 향상된 권한을 제공하고 싶습니다. 특히 우리는 우리 웹 서비스와 동일한 네트워크에서 운영되는 웹 사이트를 운영하고 있으며, 서비스 요청시 해당 웹 사이트에 높은 권한을 부여하고자합니다.

웹 서비스가 공개 된 상태 일 때 안전한 방법이 있습니까? 내가 원하지 않는 것은 내부 네트워크 외부의 누군가가 어떻게 든 상승 된 권한에 액세스 할 수 있다는 것입니다.

서비스는 Java 및 CXF 프레임 워크를 사용하여 구현되었습니다.

답변

1

분명히 가능합니다. 다음과 같이 제안 할 수 있습니다.

응용 프로그램과 외부 클라이언트간에 리버스 프록시가 있습니다. 이 리버스 프록시는 요청 헤더에서 토큰 및 필요한 필수 권한을 인증합니다. 다음 수행 할 수있는 내부 고객을위한

엘리베이터 권한은 역방향 프록시의 요청에 인증합니다 헤더를 설정

  1. 에 접근한다. 이 헤더를 true로 설정하면 호출이 외부 클라이언트에서 온 것임을 알립니다. 앱은이 헤더를 기반으로 승인해야하는지 여부를 결정할 수 있습니다. 내부 고객은 인증/승인을 거치지 않고도이 서비스를 호출 할 수 있습니다. 이렇게하면 내부 클라이언트에 대한 인증이 제거됩니다.

  2. 호출자의 IP를 기반으로 상승 된 권한을 포함하는 추가 헤더를 설정할 수있는 RP에 규칙이 있습니다. 내부 클라이언트 IP는 이것이 적용되는 목록으로 만들 수 있습니다.

  3. 둘 다 역 프록시가있는 내부 및 외부 클라이언트에 대해 두 개의 끝 점이 있습니다. 내부는 요청 헤더에서 상승 된 권한을 설정합니다.

+0

감사합니다. 저는 일종의 프록시가 해결책이라고 생각했습니다. 그것은 두 번째 사람이 그것을 유효하게하는 것이 좋다. 귀하의 대답을 aet의 대답과 결합하고 프록시, ip 필터링 및 api 키를 모두 보호 할 수 있다고 생각합니다. 그런 식으로 누군가가 실수로 프록시의 보호를 제거하면 다른 보호 계층이 여전히 활성 상태이므로 완전히 열리지 않습니다. 어쨌든 내 웹 서비스에 이미 api 키가 내장되어 있으므로이를 구현하는 데 별도의 작업이 필요하지 않습니다. 그냥 API 키 자체에 의지하고 싶지 않았습니다 ... – craigrs84

1

옵션이 있습니다. 적어도 두 가지 방법을 즉시 고려할 수 있습니다. 1) 웹 서비스에 액세스하려면 API 키가 필요하며 해당 키를 기반으로 웹 사이트에 제공되는 액세스는 특별한 경우입니다. 2) 요청자 (웹 사이트 또는 내부 네트워크)의 IP 주소를 기반으로 권한을 높입니다.