2013-07-23 3 views
4

MVC asp.net을 사용하여 인증/권한 부여를 수행하는 방법과 관련하여 몇 가지 질문이 있습니다.WCF 인증 서비스를 사용하여 C# MVC 인증 몇 가지 질문

각 요청마다 사용자 이름과 암호를 전달하여 사용자를 인증/권한 부여하는 WCF 서비스가 있습니다 (HttpModule을 사용하여 유효성을 검사하고 WCF에서 Authenticating 이벤트를 잡음). 해당 HttpModule 내의 aspnet 멤버쉽을 사용하여 사용자의 유효성을 검사하고 또한 Principal을 설정하여 내 서비스에서 역할을 수행 할 수 있습니다 (이러한 서비스는 우리의 다양한 클라이언트와 공유되므로이 작동 방식을 유지해야합니다).

이제 이러한 서비스를 호출 할 수있는 MVC 프로젝트를 만들고 싶지만 세션에 사용자 이름과 암호를 저장하고 각 요청에 전달하고 싶지 않습니다.

누구나 나를 도와 줄 수 있다면 몇 가지 차이가있는 시나리오가 있습니다!

  1. 나는 WCF 서비스 계층에서 WCF가 제공하는 AuthenticationService를 켭니다.

  2. 내 MVC 프로젝트에서 폼 인증을 추가하고 authorize 특성을 사용하여 내 메서드를 꾸미면 승인되지 않은 경우 로그인 페이지로 리디렉션됩니다.

  3. 사용자가 사용자 이름과 암호를 제공하면 로그인 페이지에서 WCF AuthenticationService를 호출하여 사용자에게 로그인합니다. 그런 다음 여기에서 인증 토큰을 검색하여 내 세션에 저장합니다.

  4. 다음 번에 내 서비스 계층에서 WCF 서비스를 호출하려고 할 때이 토큰을 검색하여 요청 헤더에 추가합니다. 서비스 측면에 내 사용자의 유효성을 검사하는 HttpModule을에

  5. , 나는 검사의 경우 유효한 토큰 또는의 유효한 사용자 이름이나 암호가 (이 웹 서비스를 호출하는 다른 사람들을 용이하게하기)합니다. 이 경우,이 요청을 수락하고 정확한 데이터를 반환

  6. ..

는이 접근하는 올바른 방법처럼 보이는가?

도움이 될 것입니다. :/ 미리 감사드립니다! Neil

+0

정말 이상한 접근 방식입니다. 각 단일 요청에 사용자 이름/암호를 전달하는 것은 번거롭고 융통성이 부족합니다. 당신이 당신의 접근 방식을 충족 시키려고하는 중요한 요구 사항이 있습니까 아니면 다른 방법으로 이것을 수행하는 방법을 모른다면? –

+0

우리가 제공하는 서비스 중 일부는 토큰 기반 인증을 처리 할 수 ​​없을 것이라고 생각되는 SAP 기반 시스템 용입니다. 이것이 내가 함께 간 이유 였어. 나는 그다지 나쁜 생각이 아니라고 생각했다. 모든 REST 기반 서비스가 비 상태가 아닌가? –

+0

이것이 나쁜 경우 다른 해결책을 제시 할 수 있습니까? WCF에 대한 많은 지식이 없으면 매우 어렵습니다. –

답변

0

제안 된 해결책은 괜찮습니다. 나쁘게 들리는 요청마다 사용자 이름/암호를 전달하는 것이 좋습니다. 이것에 대한 유일한 수정은 로그인 페이지를 통해 토큰을 얻는 것이 아니라 경비가없는 WCF 방법 중 하나에서 토큰을 얻는 것입니다.

클라이언트 흐름은 다음과 같습니다

  1. 호출 무방비 방법, 토큰을 사용하여 토큰
  2. 전화 다른 방법

하면 인증을받을 매개 변수로 사용자 이름과 암호를 전달 귀하의 고객은 양식 인증에만 의존 할 수있는 http 쿠키를 지원합니다 - 양식 쿠키를 로그인 요청에 추가하고 다른 요청과 함께 쿠키를 전달하십시오. 이렇게하면 추가 모듈이 필요하지 않습니다.