2009-12-07 7 views
5

저는 ASP.NET 페이지와 Flash 애플릿을 모두 포함하는 웹 사이트를 만들고 있습니다. 두 가지 끝점을 통해 공개 될 WCF 서비스에 비즈니스 로직을 캡슐화하고자합니다. HTTP (S)를 통해 인터넷을 통해 액세스 할 수 있고, Flash 클라이언트에서 사용할 수 있으며, 데이터 센터 내에서 액세스하여 응용 프로그램 서버에서 사용할 수 있습니다. . 이것이 좋은 접근법처럼 보이지 않으면 여기에서 나를 멈추십시오. 그렇지 않으면 계속 진행할 것입니다 ...WCF의 토큰 기반 인증

질문은 플래시 클라이언트에서 오는 요청을 인증하는 방법입니다. 사용자의 암호를 브라우저 쿠키에 저장하고 싶지 않으며 모든 요청에 ​​암호를 보내지 않고 초기 로그인 후에 HTTPS를 사용하지 않으려는 경우 토큰 기반 쿠키를 사용하려고합니다. 기반 인증 시스템. 또한 사용자가 이미 사이트 자체에 로그인 한 후 플래시 클라이언트에 로그인해야하는 것을 원하지 않기 때문에 Javascript를 사용하여 시작시 플래시 클라이언트에 토큰을 전달할 계획입니다.

.NET Framework의 기본 제공 보안 프레임 워크 (System.Security)를 사용하여 WCF가 액세스 제어를 지원한다는 것을 알고 있으며이를 활용하고 싶습니다.

질문은 다음과 같습니다. Flash에서 호출 할 때 토큰을 WCF 서비스에 전달하는 방법과 서버에서 토큰을 처리하는 방법은 무엇입니까?

  • WCF는 "발급 된 토큰"인증 모드를 가지고 있지만이는 보안 토큰 서비스와 함께 본격적인 연합 시나리오에서 사용하기위한 것입니다 나타납니다 및 SAML은 토큰 - 좀 더 복잡 그 정말 필요. 내 자신의 "간단한 임의 문자열"토큰과 함께이 모드를 사용할 수 있습니까? 그렇다면 어떻게? 플래시와 호환되어야 함을 명심하십시오.
  • 잠재적으로 토큰을 헤더 (SOAP 헤더 또는 HTTP 헤더)에 전달할 수 있습니다. 이 경우 어떤 사용자가 요청을했는지 결정한 후 System.Security 검사가 작동하도록 프레임 워크에 어떻게 알릴 수 있습니까?
  • 다른 접근 방식을 모두 고려해야합니까? 모든 요청에 ​​암호를 보내는 것을 피하는 System.Security를 ​​사용하면 Flash와 함께 작업 할 수 있습니다.
+0

아론, 당신은 이것을 할 수있는 간단한 방법을 찾아 냈습니까? 나는 WCF에서 간단한 토큰 기반 인증을 시도하고 있는데, 그것이해야하는 것보다 훨씬 더 어려워 보인다. – technophile

+0

나는 기본적으로 내 자신을 굴렸다.토큰을 발행하는 하나의 WCF 엔드 포인트가 있습니다. 사용자 이름과 암호를 사용하고이를 검증하고 토큰으로 응답합니다.이 경우 토큰은 단순히 임의의 문자열입니다. 실제 비즈니스 로직 메소드는 토큰을 포함하는 사용자 정의 헤더를 읽는 사용자 정의 메시지 관리자가있는 다른 엔드 포인트에 있습니다. 클라이언트에서 다른 메시지 속성은 나가는 메시지에 헤더를 추가합니다. 그것은 내가하고 싶었던 것보다 더 많은 일이지만, 잘 작동하는 것 같습니다. – Aaron

답변

2

원래 질문은 내가이 짧은하겠습니다 대답 한 것으로,하지만 한 가지 방법은 실제로 사용자 정의 ServiceAuthorizationManager에서 HTTP 헤더에 인증 토큰을 전달하고 CheckAccess(OperationContext operationContext, ref Message message)을 무시하는 것입니다.

IAuthorizationPolicy을 구현하는 사용자 지정 정책을 사용하도록 서비스를 미리 구성했을 것입니다.

남아있는 모든 것은 인증 상태를 저장하기 위해 간단한 IIdentityIPrincipal 클래스를 구현하는 것입니다.

좋은 기사의 숫자는이 주제에 존재 :이 여전히 "롤 - 네 - 자신의"솔루션처럼 느낄 수 있습니다 생각

http://msdn.microsoft.com/en-us/library/system.identitymodel.policy.iauthorizationpolicy.aspx

http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceauthorizationmanager.aspx

,하지만 적어도 안심 당신이 확립 된 패턴을 따라갈 때. 그것은 당신의 서비스 방법에서 인증 코드를 블랙 박스 (black-boxing)하는 이점이 있습니다.