0

현재 인트라넷 웹 응용 프로그램을 개발 중입니다. 홈페이지 및 여러 부서 페이지가있는 웹 응용 프로그램은 모든 사람이 동일한 권한을 가질 수 있도록 정보를 표시하기위한 것입니다. 앱의 액세스 및 인증에 대해 걱정해야한다는 요지에 이르렀습니다. 잠시 동안 검색 한 후에 사용할 수있는 여러 그룹의 활성 디렉토리가 있습니다.asp.net Active Directory 및 Windows 인증을 사용하는 C# 웹 응용 프로그램

  • webconfig 파일을 강제로 Windows 인증 및 차단 된 사용자 (사용자 거부 =)?
  • 나는 어딘가에 각 페이지마다 하나씩 여러 webconfig 파일이 필요하다는 것을 보았습니까? 어떻게하면 각 페이지가 해당 webconfig에 연결됩니까?
  • 몇 가지 예를 살펴본 후 AD 연결 문자열을 알아낼 수 없습니다. (현재 개발 시스템에 있습니다.) AD 그룹은 도메인 컨트롤러에 있으며 물리적 위치는 "DCserver.company_name.local \ city"입니다. 폴더 \ 그룹 "
  • 로그인 페이지를 만들어야합니까? 내 말은 창문 인증의 문제와 관련이 없다는 뜻인가요?
  • 광고 내에서 아무 것도 관리 할 필요가 없습니다. 단순히 그룹을 읽고 마케팅 담당자가 홈페이지 및 마케팅 부서 페이지 (예 :
  • )에만 액세스 할 수 있도록하려는 것입니다. 예를 들어, 마케팅 부서의 사용자가 자신의 부서 페이지 내 모든 것을 클릭 할 수있는 특수 특별 권한이없는 경우

모든 질문에 대해 미안하지만 나는 상대적으로 C# 및 .net을 처음 사용하는 경우

답변

0

다음은 최신 질문에 대한 답변입니다.

- webconfig에서 각 부서 페이지 및 홈페이지에 액세스 할 수있는 그룹을 지정할 수 있습니까? 다음 코드와 같아요. 그렇다면 어떤 그룹에 어떤 페이지에 대한 액세스 권한을 할당하기 전에 배치해야 할 LDAP 연결 문자열이 필요합니까?

[Dipra] web.config에서 역할을 사용하지 않고 인증을 수행하는 것이 좋습니다. 역할을 정의해야하기 때문입니다. 우리는 여기에 AD 그룹에 대해 이야기하고 있으며, 사용자 중 일부는 AD 그룹이 될 것입니다. 따라서 Page_Load()에서 간단히 인증 메소드를 호출하면 사용자 이름과 AD 그룹을 전달하여 페이지에 대한 액세스를 매개 변수로 허용 할 수 있습니다. 솔루션을 구성 할 수있게하려면 특정 페이지의 허용 된 AD 그룹을 web.config의 '키'로 저장 한 다음 코드에서 읽습니다. 그룹을 사용자 이름과 함께 인증 메소드에 전달하십시오.

- 사용자가 웹 사이트를 열면 Windows 자격 증명을 삽입하라는 메시지가 표시됩니다.이 작업은 자동 작업입니까? 그러면 그는 홈페이지를보고 부서 페이지로 이동할 수 있습니다. 맞습니까?

[Dipra] 네, 이것은 자동입니다. 이 경우 별도의 코드가 필요하지 않습니다. 그는 인증을 받으면 원하는 페이지로 이동할 수 있습니다.

내가 올바르게 이해하면 모든 page_load 이벤트에서 사용자 이름을 가져 와서 그가 속한 그룹을 확인하는 검색을 수행해야합니다. 맞습니까?

[Dipra] 예, 모든 Page_Load() 방법을 확인해야합니다.접근 방식으로 사용자가 속해있는 모든 그룹을 가져 와서 해당 페이지의 허용 된 AD 그룹이 해당 그룹 중 하나인지 여부를 확인할 수 있습니다. 그렇다면 사용자를 인증 할 수 있습니다.

-i 위 사실입니다. 이제 페이지의 탐색에 대해 설명 드리겠습니다. page_load를 사용하면 문제가 발생할 수 있습니다. 사용자가 속한 그룹을 확인합니다. 모든 페이지가로드 될 때마다 발생합니까? 그 응용 프로그램을 느리게 만들지 않을까요?

[Dipra] 모든 서버 측 컨트롤 (예 : asp 버튼)은 포스트 백을 유발합니다. Page_Load()의 인증 코드가 페이지에서 다시 게시가 발생할 때마다 실행되지 않도록하려면 해당 비트를 if(!Page.IsPostBack) {}으로 묶어야합니다. 즉, 페이지가 '게시 취소'되지 않을 때, 즉 처음 렌더링 될 때이 블록 내의 모든 코드가 실행됨을 의미합니다. 이 페이지의 서버 측 컨트롤에서 후속 포스트 백이 발생하면이 블록 내부의 코드는 무시됩니다.

-finally 각 사용자의 회원을 확인하려면이 The Link that Dipra posted에 붙여 넣은 두 번째 답변과 비슷한 코드가 필요하지만 아래 C#에 붙여 넣으시겠습니까?

[Dipra] 위의 게시물에서 수락 된 답변을 참조 할 수 있습니다. 아마도 자신의 몇 가지 조정 사항을 참조하십시오. 이미 C#에 있습니다.

0
  1. 네 web.config는 귀하가 말한 것과 같습니다.
  2. 페이지의 특정 그룹에 대한 액세스 권한을 '부여'할 필요는 없습니다. web.config에서 특정 페이지에 대한 액세스가 허용 된 그룹을 키로 저장하고 코드에 this과 같은 구성을 읽습니다. 예를 들어 'Marketing'이라는 key이있는 경우 value 필드에 마케팅 페이지에 액세스 할 수있는 해당 AD 그룹의 이름을 저장할 수 있습니다. 예, 한 페이지에 대해 작업하면 다른 페이지가 더 쉬워집니다.
  3. 아니요, 제가 말했던 인증 방법은 내가 게시 한 링크와 비슷한 논리를 사용하는 직접 작성하는 사용자 지정 방법입니다.
  4. 전체 인증 코드는 try...catch 블록으로 묶어야합니다. 광고 (예 : 연결 문제)에 대한 인증을 수행하는 동안 문제가 발생하면 코드에서 예외가 발생합니다. 예외를 잡아 (그리고 이상적으로) 기록하고 사용자를 오류 페이지로 리디렉션합니다. 아마도 인증을 방해하는 몇 가지 문제가 있다고 말합니다. 이러한 시나리오에서는 사용자에게 액세스 권한을 부여하면 안됩니다.