2009-02-24 2 views
7

나는 스왑 가능한 구체적인 구현에 의해 뒷받침되는 .NET 인터페이스 집합으로 드러나는 비즈니스 로직 계층 ("저장소")을 가지고있다.비즈니스 로직 계층이 인증 및 인증을 구현해야합니까?

원래이 비즈니스 계층에서 인증 및 권한 부여 (authn/authz)를 구현 했으므로 IUserIdentity 및 IUserRole과 같은 인터페이스가 있었으며 중요한 데이터에 액세스 한 모든 메서드가 IUserIdentity를 가져와 작업을 허용하기 전에 권한 부여를 수행했습니다.

비즈니스 계층은 지금까지 매우 프런트 엔드에 대해 불가지론 적 이었지만 ... 지금은 ASP.NET 웹 사이트에 통합하려고 할 때 ASP.NET 자체에 풍부한 인증/권한 부여가 있음을 알았습니다. 시스템에 회원 및 역할 API를 통해 구축되었습니다.

그래서 비즈니스 로직 레이어에서 authn/authz를 모두 제거하고 웹 프런트 엔드를 사용하여이 작업을 수행해야합니까? 이것은 많은 일을 단순화 할 것이지만, 나는 그것을 후회할 지 여부를 알지 못한다.

대안은 내 비즈니스 논리에서 authn/authz를 유지하면서 사용자 지정 멤버쉽/역할 공급자를 통해 ASP.NET과 통합하는 것입니다. 그러나 이것은 정말로 성가신 것 같습니다 ... 나는 아직도 이것을하는 비용을 조사 할 필요가 있습니다.

무엇을 하시겠습니까?

답변

5

보안은 측면에 속한 교차 관심사라고 생각합니다. Spring.NET을 사용하지 않는 한 .NET에 aspect가 있는지 나는 모른다.

+0

사실 (미안하지만이 부분을 언급해야합니다.) 권한 부여 특성을 통해 보안 측면에서 개념을 구현하는 ASP.NET MVC를 사용하고 있습니다. – DSO

+0

.NET의 애트리뷰트는 Java EE의 애노테이션과 비슷하다. 다양한 메소드, 클래스, 패키지에 애스펙트를 적용하기위한 AspectJ 표현 언어 같은 것이 있는가? – duffymo

1

보관하십시오. ASP.NET의 폼 인증은 매우 쉽게 사용자 정의 할 수 있으며 비즈니스 논리 계층은 프런트 엔드에 영향을받지 않습니다.

this approach에서 떨어져 있고 Forms Authentication을 시도해보십시오. 기본적으로 Login 컨트롤의 Authenticate 이벤트에서 기존 메서드를 호출 할 수 있습니다.

0

여러 프런트 엔드 (asp.net, winforms, mobile?)를 사용하거나 (웹) 서비스를 통해 비즈니스 계층을 노출 하시겠습니까? 그런 다음 비즈니스 계층 위에 인증을 구현해야합니다.

액세스 권한을 부여하려는 경우 IIS에서 통합 보안을 사용하고 사용자 지정 코드를 사용하지 마십시오.

asp.net 멤버 자격 공급자를 살펴볼 수도 있습니다.

1

기존 논리를 유지하고 asp.net을 사용하여 동일하게 사용하려는 경우 기존 보안 클래스를 중심으로 사용자 지정 멤버십/역할 공급자를 작성하는 것이 좋습니다. 이것은 생각보다 쉽습니다.

http://www.codeproject.com/KB/aspnet/customaspnetproviders.aspx

이미 보안 권한을 관리하기위한 클래스를 가지고

, 이것은 단지 기존의 논리를 포장 의미한다.

이 나중에 보안 로직을 사용하는 데 도움이됩니다, 당신은 당신의 비즈니스 로직을 소비하거나의 WinForm 클라이언트를 만들 때 웹 서비스로 비즈니스 로직을 노출 할 때

0

내가 역할을 믿고, 우리가 가정 해 봅시다 기반 보안은 CSLA가 제시하는 비즈니스 계층에 있어야합니다.