보안 세션을 구현할 때 보안에 영향을 주는 다음 항목을 고려해야 합니다. 보안 고려 사항에 대한 자세한 내용은 보안 고려 사항 및 보안 모범 사례를 참조하세요.
보안 세션 및 메타데이터
보안 세션이 설정되고 RequireCancellation 속성이 false로 설정된 경우, Windows Communication Foundation(WCF)는 서비스 엔드포인트에 대한 WSDL(Web Services Description Language) 문서의 메타데이터의 일부로 mssp:MustNotSendCancel 어설션을 보냅니다. 어설션은 mssp:MustNotSendCancel 서비스가 보안 세션을 취소하는 요청에 응답하지 않는다는 것을 클라이언트에 알릴 수 있습니다.
RequireCancellation 속성이 true로 설정되면 WCF는 WSDL 문서에서 mssp:MustNotSendCancel 어설션을 생성하지 않습니다. 클라이언트는 더 이상 보안 세션이 필요하지 않은 경우 서비스에 취소 요청을 보내야 합니다.
ServiceModel 메타데이터 유틸리티 도구(Svcutil.exe)를 사용하여 클라이언트가 생성되면 클라이언트 코드는 어설션의 mssp:MustNotSendCancel 존재 여부 또는 부재에 적절하게 반응합니다.
대화 및 사용자 지정 토큰 보호
WS-SecureConversation 사양에 정의된 방식으로 인해 사용자 지정 토큰 및 파생 키를 혼합하는 데 몇 가지 문제가 있습니다. 사양 wsse:SecurityTokenReference 은 파생 토큰을 참조하는 선택적 요소입니다. "/wsc:DerivedKeyToken/wsse:SecurityTokenReference 이 선택적 요소는 파생에 사용되는 보안 컨텍스트 토큰, 보안 토큰 또는 공유 키/비밀을 지정하는 데 사용됩니다. 지정하지 않으면 받는 사람이 메시지 컨텍스트에서 공유 키를 확인할 수 있다고 가정합니다. 컨텍스트를 확인할 수 없는 경우 wsc:UnknownDerivationSource와 같은 오류를 발생시켜야 합니다.
즉, 사용자 지정 토큰을 파생하려면 해당 절 형식을 SecurityTokenReference 요소로 래핑해야 합니다. 파생을 해제하는 옵션이 있지만 기본값은 키를 파생하는 것입니다. 키를 래핑하지 않으면 파생 키 토큰을 직렬화하는 데 성공하지만 역직렬화할 때 예외가 발생합니다.