2010-07-05 2 views
1

다른 asp.net에서 호스팅되는 WCF 서비스를 사용하는 asp.net 웹 응용 프로그램을 빌드하는 방법에 대한 의견을 보내고 싶습니다. 신청. 두 응용 프로그램은 같은 컴퓨터에 있지만 WCF 서비스가있는 응용 프로그램은 외부에서 액세스 할 수 없습니다. 로드 밸런서 뒤에로드를 공유하는 두 개의 웹 서버가 있습니다.권장 사항 및 ASP.NET + WCF + 보안에 대한 도움이 필요합니다.

두 응용 프로그램의 응용 프로그램 풀은 동일한 로컬 사용자 계정 (웹 서버는 도메인의 일부가 아님)을 사용하므로 클라이언트와 내부 wcf 서비스 간의 통신을 위해 Windows 보안과 함께 WsHttpBinding을 사용하려고합니다.

fron-end asp.net 앱은 사용자 정의 멤버십/역할 공급자를 통한 폼 인증을 사용하여 사용자를 인증하고 권한을 부여합니다. 사용자 데이터베이스는 SQL Server 데이터베이스에 있습니다.

어떻게 든 wcf 서비스에 사용자 세부 정보 (사용자 이름 + 역할)를 전달하여 프런트 엔드에 로그인 한 사용자의 역할에 따라 인증하고 권한을 부여 할 수 있어야합니다. 나는 "지원 토큰"을 사용해야한다고 읽었지 만 이것을 어떻게 사용하는지 알지 못했습니다.

나는 또한 클레임과 WIF에 대해서도 읽었는데 흥미로운 것 같지만 어떻게 내 시나리오에서 이것을 사용할 수 있을지 모르겠다.

아키텍처에 대한 권장 사항을 제공하고 wcf 서비스에 사용자 이름을 전달하는 방법을 보여줄 수도 있고 클레임 기반 권한을 사용하는 것이 가능한지 알려줄 수있는 사람은 누구입니까?

답변

1

우선 두 서버가 회사 LAN의 회사 방화벽 뒤에 있으면 모든 HTTP 기반 바인딩 대신 netTcpBinding을 사용하는 것이 좋습니다. NetTcpBinding은 이진 형식으로 메시지를 인코딩하므로 훨씬 빠릅니다.

사용자 이름/암호 : ASP.NET 프런트 엔드 서버에서 WCF 서비스를 호출하는 사용자의 클라이언트 자격 증명을 설정할 수 있습니다. 결국 ASP.NET 서버는 ASP.NET 멤버 자격 데이터베이스에 액세스 할 수 있습니다 그렇지?

또는 사용자 자격 증명을 전달할 수없는 경우 사용자를 설명하는 일부 헤더를 WCF 서비스에 전달할 수 있습니다. 실제로는 사용자의 고유 ID 만 필요합니다. WCF 서비스가 필요한 경우 ASP.NET 사용자 데이터베이스에서 다시 정보를 얻으십시오.

클레임은 여기에 좋은 아이디어가 될 것이라고 생각하지 않습니다. 실제로 여러 가지 인증 스키마를 다룰 필요가 없으며 어떤 연합도 사용하지 않고 있습니다 (예 : 사용자 허용 귀하의 서비스를 사용하기 위해 다른 회사 또는 도메인에서) - 명백한 이점이 귀하의 사례에 실제로 적용되지 않을 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 netTcpBinding이 웹 서버가 불행히도 IIS6을 실행하는 옵션 원인이라고 생각하지 않습니다. 프런트 엔드 웹 응용 프로그램에 로그인하는 사용자의 사용자 이름을 wcf 서비스에 전달하려면 지원 토큰을 전달해야합니다. 하지만 불행히도 나는 그것을 설정할 수 없습니다, 그것은 인증서와 함께 문제가 있어야합니다 ... 나는 메시지가 서버 컴퓨터를 떠나지 않을 것이므로이 시나리오에서 전혀 필요합니까? – skyplusplus

+0

@skyplusplus : 웹 서버는 WCF 클라이언트로 작동하며, WCF 서비스를 호출합니다. 이 경우 netTcpBinding을 사용하는 데 문제가 없습니다! 유일한 요점은 WCF 서비스가 다른 쪽에서 자체 호스팅되어야하고 IIS6에서 호스팅되지 않아야한다는 것입니다. NetTcpBindign을 사용하려면 그만한 가치가 있습니다. –

+0

네, 그런 식으로 진행할 것입니다. 즉, Windows 서비스에서 wcf 서비스를 호스팅하고 netTcpBinding을 사용하여 노출합니다. 맞습니다. wcf 서비스는 로컬에서만 액세스되므로 호출자를 신뢰할 수 있으므로 헤더에 사용자 ID를 추가하는 것이 좋습니다. 건배 – skyplusplus

관련 문제