5

사이트 전체에서 폼 인증을 구현하는 기존 ASP.NET 응용 프로그램이 있습니다. 응용 프로그램은 여러 인스턴스 (예 : customer1, customer2, test, dev 등)에 배포되며 인스턴스마다 별도의 데이터베이스가 있습니다. SSL이 작동 중입니다. 인스턴스 구성은 XML 구성 파일을 통해 이루어집니다.폼 인증 응용 프로그램 내의 ASP.NET 웹 서비스

공개 웹 서비스로 구현하려는 특정 데이터의 업로드/다운로드를 허용해야한다는 새로운 요구 사항이 있습니다.

초기의 생각은 응용 프로그램의 하위 디렉토리 (예 : ~/Services)에 대해 양식 인증을 선택적으로 사용 중지 한 다음 SOAP 헤더 또는 유사 물을 통해 인증을 수행하는 것입니다.

그러나 양식 인증을 선택적으로 사용 중지하는 방법을 찾지 못했습니다.

질문 :이 방법이 있습니까? 웹 설정에서 < 위치 > 태그를 사용하지 않으려 고 시도했습니다.

그렇지 않다면 설정하는 방법에 대한 권장 사항은 무엇입니까? 다음 옵션을 생각해 볼 수 있습니다.

1) 내 솔루션에 "서비스"프로젝트를 새로 만든 다음 각 인스턴스의 해당 디렉터리에 별도의 IIS ASP.NET 응용 프로그램을 구성하십시오. (프로 : 인스턴스 구성에 쉽게 액세스 할 수 있으며, 나중에 필요할 수 있습니다.) 단점 : 각 인스턴스에 대한 구성 부담입니다.

2) 응용 프로그램 솔루션에서 필요한 어셈블리를 참조하고 별도의 ASP.NET 응용 프로그램으로 호스팅하는 별도의 "서비스"솔루션을 만듭니다. 그런 다음 SOAP 헤더에 제공된 UserName을 기반으로 db 연결 문자열을 찾습니다. (프로 : IIS에서 구성 할 단일 응용 프로그램 Con : 인스턴스 구성에 쉽게 액세스 할 수 없음)

3) ??

설명 : 여기에 답변을 보았습니다 : Override ASP.NET forms authentication for a single page,하지만 위치 태그를 사용하면 도움이되지 않습니다 (웹 서비스 요청은 계속 리디렉션됩니다). 내 Web.config의에서 관련 부분은 다음과 같이 :

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="Login.aspx"/> 
    </authentication> 
    <authorization> 
    <deny users="?"/> 
    <allow users="*"/> 
    </authorization> 
</system.web> 

<location path="~/Services/MyService.asmx"> 
    <system.web> 
    <authentication mode="None" /> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 
</location> 
난 당신이 모든 사용자를 서비스 폴더를 지정 허용 곳에 위치 태그가 작동 것이라고 생각
+3

내가 모든 경로가 "서비스/MyService.asmx"하지 "~/서비스/MyService.asmx"의 형태로되어있는 Web.config의에서 위치 태그를 사용했습니다 때마다 당신이 지정하는 시도가 물결표가 없는데? –

+0

그게 다야. 나는 그것의 3 개의 다른 버전을 시도했다는 것을 맹세 할 수 있었다. 이번에는 브라우저를 닫았으며 솔루션은 완벽하게 작동했습니다. – dividius

답변

4

, 뭔가 같은 :

<location path="services"> 
     <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
     </system.web> 
</location> 

그러나 당신은 그것이 작동하지 않는다고 말했고, 서비스 폴더에 web.config 파일을 넣고 양식 인증을 비활성화하고 해당 파일의 모든 사용자를 허용 했습니까?

+0

위에서 지적한 바와 같이 내가 실수 한 것은 "서비스"대신 경로에 대해 "~ \ Services"를 지정하는 것이 었습니다 – dividius

+0

다행입니다. 부끄러움 asp.net은 ~ /를 사용할 수있는 곳에서 일관성이 없습니다. 몇 차례에 걸쳐 –

0

액세스 제어가 익명으로 설정된 서비스 폴더에 (무시하는) web.config 파일이있을 수도 있습니다.

0

나를 위해 일한 것은 내 웹 서비스가있는 폴더에서 모든 사용자가 액세스 할 수있게하는 것이 었습니다. 먼저 해당 폴더에 구성 파일을 추가하고 모든 사용자가 사용할 수 있도록 아래 코드를 삽입했습니다.

<authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
관련 문제