을 구성하는 방법 보안 편안하고 서비스와 WCF 사용하는 사용자 이름/비밀번호+SSL

StackOverflow https://stackoverflow.com/questions/141484

문제

내가 찾는 쓰 config 파일을 허용하는 편안하고 서비스에 WCF,하지만 나는 아직 할 수있는 기능을 원하는'탭으로'구성원 공급자에 대한 사용자명/암호를 인증합니다.

아래의 현재 설정을 사용하여 basicHttp 바인딩 또는 즉 w/out WS 보안,어떻게 이 변경 w/나머지 부분은 다음과 같습니다.

    <bindings>
        <wsHttpBinding>
            <binding name="wsHttp">
                <security mode="TransportWithMessageCredential">
                    <transport/>
                    <message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false"/>
                </security>
            </binding>
        </wsHttpBinding>
        <basicHttpBinding>
            <binding name="basicHttp">
                <security mode="TransportWithMessageCredential">
                    <transport/>
                    <message clientCredentialType="UserName"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="NorthwindBehavior">
                <serviceMetadata httpGetEnabled="true"/>
                <serviceAuthorization principalPermissionMode="UseAspNetRoles"/>
                <serviceCredentials>
                    <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"/>
                </serviceCredentials>
            </behavior>
        </serviceBehaviors>
    </behaviors>
도움이 되었습니까?

해결책 7

업데이트 01/23/2012

글을 썼기 때문에 이 질문을 보았다는 것을 훨씬 더 좋은 방법을 확보과 같은 나머지 웹 서비스에서 야생입니다.그것은 복잡한 소리를 들었을 때 그것에 대해 그러나 아이디어는 간단하고 모든 웹을 통해 모두를 위해 웹 서비스와 다른 안전한 통신입니다.

그것의 사용을 필요/공개 키를 사용합니다.

1.) 각 사용자가(고객)의 끝점을 등록해야합니다 당신의 나머지 웹 서비스

  • 니다.) 당신이 사용자는 개인 키지 않아야 공유 누구
  • b.) 당신은 또한 당신을 생성하는 공개 키를 이야기할 수 있습 철사 일반 텍스트에 필요하다면(이것은 또한 수를 식별하는 데 사용되는 클라이언트)

2.) 각 요청을 사용자의 요구에서 해시를 생성하여 서명 요청

  • 니다.) 이 중 하나는 예를 들어 볼 수 있습니다.개인 키+타임 스탬프+로 인코딩된 페이로드(있다면 충분히 작은 다음과 같은 간단한 사용자 정보를 업데이트할 예를 들어)
  • b.) 당신이 이러한 3(또는 어떤 당신에 결정)및 생성 방법 1 해쉬를 사용하여(hmac 예를 들어)
  • c.) 요청에서 전송되는 와이어를 통해 당신을 포함 공개키(그 서버 측 알고 있는 사람은 보내기를 시도하고 이 요청 시),해시 생성된 w/개인 핵심,그리고 타임 스탬프.

3.) 서버의 끝점(의 나머지 부분법)이 필요를 생성하는 해쉬를 사용하여 동일한 입력에서 사용되는 클라이언트입니다.이 단계에 증명하는 클라이언트와 서버 모두 알고 있는 개인 키 일치된 공개 키를 전달된 요청과 함께.(이 설정에서 사용자를 보내는 요청을 합법적으로 아무도 알 수 있었습 private key)

  • 니다.) 조회 고객 개인 키 의 공개 키를 전달되는 도중에 따라 요청

  • b.) 다른 파라미터(타임스탬프 및 인코딩된 페이로드)개인 키와 함께 당신은 발견은 이전 단계에서와 동일한 알고리즘을 사용하여 생성 방법 1hash(시 hmac 은 무엇을 봤어요 실제 세계에서 사용)

  • c.) 결과 1 방법으로 해시의 일치해야 해시 유선으로 전송되는 경우,다시 보내지는 400 명의(또는 어떤 http 코드에 당신은하다고 판단되는"잘못된"요청)

다른 팁

여기에서 팟 캐스트 보안에 대 WCF 나머지 서비스 ASP.net 회원업체:

http://channel9.msdn.com/posts/rojacobs/endpointtv-Securing-RESTful-services-with-ASPNET-Membership/

동의함으로 휴즈 로는 복잡한 나머지 시나리오를 통해 WCF 은 나쁜 생각이 아니다.그냥 예쁘지 않습니다.

그러나,도미닉 Baier 부 좋은 게시물 이에 그의 최소한의 권한 블로그입니다.

만약 당신이보고 싶은 WSSE 인증 지원으로 대체하 FormsAuthenticationTicket 지원 WCF 확인 의 소스 코드 BlogService.

계속하기 전에 아래 이 경로의 싸움을 구현하는 나머지 WCF,나는 당신이 읽 게시 팀에 의해에 발트.특히 영향을 받는 다음과 같은 문:

나는 확실하지 않다고 싶을 구축에 층의 디자인 요소는 HTTP 에 의 상단하는 레이어도록 설계되었다 요소이다.

니라 12 개월을 개발하 따라 나머지 물건과 WCF 고 그 문을 입증했다 그래서 진정한다.이럴 무엇 WCF 제공하는 테이블에 의해 무거운 복잡성을 소개한을하고 나머지 작동합니다.

는 경우에 관계없이 지역 사회가 의견에 대한 나머지에 WCF (나 개인적으로 울타리에) Microsoft 는 와이프에 그것은, http://msdn.microsoft.com/en-us/netframework/cc950529.aspx

예.동의 모토는 링크가 오프 WCF 시동기 장비 가장 가까운 것을 보았하는 인증의 자격을 사용하여 사용자 지정한 HTTP 헤더(http://msdn.microsoft.com/en-us/library/dd203052.aspx).

그러나 내가지 예제다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top