문제

많은 개발자들이 이전에 직면 한 요구 사항이라고 확신합니다. 비즈니스는 누가 시스템에서 조치를 수행하는지 알기 위해 감사 트레일이 필요합니다.

감사 정보를 저장하는 방법에 관계 없이이 문제의 핵심은 현재 사용자를 식별하는 방법입니다.

작은 도메인 모델 클래스에서 서비스 구성 요소에 이르기까지 구성 요소를 작성하고 싶습니다. 다음 호스트 애플리케이션 중 하나에서 안전하게 호출 할 수 있습니다.

  • Windows 데스크탑 응용 프로그램.
  • IIS에서 호스팅 된 ASP.NET 웹 사이트.
  • IIS에서 호스팅 된 WCF 서비스.
  • Windows 서비스에서 호스팅되는 WCF 서비스.

다양한 기술, 다양한 인증 모델과 "익명"사용자의 개념을 설명해야한다는 점을 감안할 때, 나는 내 구성 요소를 중앙 집중식 방식으로 호출 한 사람의 정체성을 얻는 데 사용하는 전략에 대해 명확하지 않습니다.

똑똑한 사람들 중 누구라도 이것을 다루는 접근법을 제안 할 수 있습니까?

도움이 되었습니까?

해결책

일반적으로 응용 프로그램을 설정해야합니다 Thread.CurrentPrincipal 신원이 현재 사용자를 대표하는 교장에게. 이것은 httpcontext.current.user 또는 roboles.getCurrentUser ()에서 IIS 등으로 호스팅 된 ASP.NET 또는 WCF 응용 프로그램에서 클라이언트 (Winforms 또는 Console) 앱에서 응용 프로그램 시작 (WindowsIdentity.getCurrent () 사용)에서 수행 할 수 있습니다. .

그런 다음 하위 레벨 구성 요소에서는 간단하게 사용합니다 Thread.CurrentPrincipal.Identity 감사를 위해.

편집하다(의견에 대한 응답으로) - 주목하십시오 Thread.CurrentPrincipal.Identity 스레드의 보안 컨텍스트와 관련이 없습니다. 이것은 WindowsIdentity로 표시되며 사용하여 검색 할 수 있습니다 WindowsIdentity.GetCurrent 그리고 사용 변경 WindowsIdentity.Impersonate.

다른 팁

최신 기술을 사용하는 최선의 방법은 아마도 사용하는 것입니다. Windows Identity Foundation.

WIF는 .NET을 사용하여 여러 기술에서 사용자 ID 문제를 처리하도록 설계되었습니다.

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