2012-10-23 2 views
3

그래서 나와 함께, 나는 MVC 및 WCF에 새로운. 이미 BLL을 노출하는 서비스 집합 (WCF)을 가지고 있으며 MVC.net 웹 응용 프로그램에서 해당 서비스를 사용하려고하지만 여기서 보안 작업을 수행하는 방법이 확실하지 않습니다.BLL (중간 계층) 및 보안 기술로 WCF

이 내 응용 프로그램 요구 사항 :

  • 하는
  • 내 BLL (WCF)이 그것을 호출 무엇 소비자 알 필요가 웹 응용 프로그램의 모든 사용자에 대해 다른 자격 증명을 사용하여 WCF 서비스를 소비 할 수 있어야 (오른쪽 지금은 MVC 응용 프로그램 만 있지만 iOS 및 Andriod 호출을 추가 할 예정이므로 나중에 WCF 끝점에 REST 서비스를 추가합니다.) 거기에 어떤 디자인 패턴이 있습니까? (또는 발신자 ID를 포함시키기 위해 비누 헤더를 사용해야합니까?) 어떤 종류의 발신자 비밀이나 다른 종류의 발신자를 사용해야합니까?)
  • 사용자 이름과 암호를 전달하지 않아도되는 Token 같은 보안 메커니즘이 필요합니다. 서비스 방법의 모든 호출 (WCF)는

무엇 내가 지금까지 가지고하는 것은 :

  • WCF는 사용자 정의 사용자 이름 유효성 검사기와 인증서를 사용합니다.
  • 생성 된 프록시 대신 계약 인터페이스를 사용하여 수동으로 프록시를 코딩했습니다. 그러나 WCF 서비스를 호출 할 때마다 사용자 이름과 암호의 유효성을 검사해야한다는 사실이 싫습니다. 토큰은 천국에서 어떻게 사용할 수 있습니까? 비누 헤더에 보내진 주어진 토큰이 유효하거나 아직 만료되지 않았는지 알고 싶습니까? 튜토리얼/코드/예제는 실제로 코딩을 시작하기에 충분할 정도로 명확합니다. (
  • ChannelFactory를 캐시하려고하는데, 그렇습니까? 저는 채널러 팩토리를 캐시해야합니다. 계약에 따라 로그인 한 사용자;??!? (즉 괜찮아 내가 여기에 무엇을 할 수

사전에 감사

+1

이 블로그 게시물은 도움이 될 수 있습니다. http://webservices20.blogspot.ca/2009/01/stateful-security-context-tokens-in-wcf.html –

+0

덕분에 도움이되었습니다. – rzumbado

답변

0

당신이 계약에 따라 사용자 당 ChannelFactory에 캐시해야

을이 달려있다. 몇 가지 고려 사항 채널 팩토리를 인스턴스화하는 데 최대 70ms가 걸릴 수 있습니다.이 작업을 반복적으로 수행하면 ChannelFactory를 캐싱하지 않고 사용자가 MVC 응용 프로그램에 http 요청을 만들어 웹 서비스를 호출하는 컨트롤러 작업을 수행 할 때마다 하나 이상의 (또는 그 이상을) 인스턴스화하면 눈에 띄는 성능이 저하됩니다. 이는 channelFactory를 캐싱하면 속도가 향상된다는 것을 나타냅니다.

반면에 사용자의 수에 따라 많은 수의 채널 팩터 리 (예 : 정적 사전)를 캐싱하는 경우 중요한 메모리를 사용하기 시작할 것입니다 - 이것은 당신에게 문제가 될 수 있습니다.

MVC 응용 프로그램을 호스팅하는 응용 프로그램 풀에서 채널 팩토리를 즉석에서 처리하는 비용 (너무 정확하게 닫히거나 중단되는 채널 및 포함 된 채널)이 너무 높으면 비용이 많이 들지 않을지 결정해야합니다.

어쨌든 프로덕션 환경에 배포하기 전에 앱의 프로필을 작성하는 것이 좋습니다.