Microsoft MVP성태의 닷넷 이야기
Question - HTTP 401.3 on DELETE, PUT verbs [링크 복사], [링크+제목 복사],
조회: 14505
글쓴 사람
Daniel Seo (jungsoo.seo at sap.com)
홈페이지
첨부 파일
[Sample.zip]    

Hi,

I am writing this thread to ask your help.

I am encountering a problem while we are using  PUT / DELETE verbs for RESTful webservice.

 

As you see the below table,

In case I call a web service with administrator right, all verbs are operated successfully.

In case I call a web service with non-admin right, the method which is using PUT / DELETE verbs returns  401.3 error while GET/POST verbs are operated successfully.

 

I found some related articles and tested them, but I did not get reasonable results yet.

http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/thread/3a67a302-6f7d-4453-8ce9-3d540ee8a9fa

 

As temporary workaround to enable the service, I granted access right of a user(mydomain\user) to .svc file manually.

(However, I don’t think it could be a solution because of security violation. )

 

I would very appreciate it if you would give me any opinions.

For your convenience, I am attaching a simple .NET project.

I hope I am missing a simple point. J

Thank you.

 

 

Verb

Admin user

Non-admin user

GET

O

O

POST

O

O

PUT

O

X

DELETE

O

X

 

·         System: Windows 2003 + IIS6 + .NET3.5 SP1

·         Setting in Web.Config
<authentication mode="Windows"/>
<
identity impersonate="true"></identity>

 

 

:::: Event Message (1)::::

Access is denied.

Description: An error occurred while accessing the resources required to serve this request. You might not have permission to view the requested resources.

Error message 401.3: You do not have permission to view this directory or page using the credentials you supplied (access denied due to Access Control Lists). Ask the Web server's administrator to give you access to 'C:\BPC\service1.svc'.

 

:::: Event Message (2)::::

Event Type:             Information

Event Source:          ASP.NET 2.0.50727.0

Event Category:       Web Event

Event ID: 1314

Date:                        2/17/2010

Time:                       11:14:27 AM

User:                       N/A

Computer:               ICND50076690A

Description:

Event code: 4008

Event message: File authorization failed for the request.

Event time: 2/17/2010 11:14:27 AM

Event time (UTC): 2/17/2010 2:14:27 AM

Event ID: 7ccb60ad5fd341aaba44f16bdd7f3bfd

Event sequence: 3

Event occurrence: 1

Event detail code: 0

 

Application information:

    Application domain: /LM/W3SVC/1/Root/Bpc-1-129108464673098914

    Trust level: Full

    Application Virtual Path: /Bpc

    Application Path: C:\BPC\

    Machine name: ICND50076690A

 

Process information:

    Process ID: 11392

    Process name: w3wp.exe

    Account name: NT AUTHORITY\NETWORK SERVICE

 

Request information:

    Request URL: http://10.60.50.200/bpc/service1.svc/PUT

    Request path: /bpc/service1.svc/PUT

    User host address: 10.60.50.200

    User: ICND50076690A\User

    Is authenticated: True

    Authentication Type: NTLM

    Thread account name: NT AUTHORITY\NETWORK SERVICE

 

Custom event details:

 

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

 








[최초 등록일: ]
[최종 수정일: 2/18/2010]


비밀번호

댓글 작성자
 



2010-02-18 02시29분
[꼭지] 안녕하세요. 이전에 인증관련으로 질문드렸던, 꼭지(서정수) 입니다.
영어로 써놓은 글이 있어 개인 편의상 그대로 옮겨왔습니다. 혹.... 영어로 고민 하시지 않으시길..^^
[guest]
2010-02-24 09시45분
이미 해결하셨는지 모르겠는데. 퇴근 후 테스트 해보고 ^^ 말씀드리겠습니다.
kevin25
2010-02-24 11시28분
일단, 미리 답변드리면.
impersonate 모드로 일반 User계정으로 삭제가 안된다는 것은, 보안상 적절한 조치라고 보입니다.
아마도 적절한 ACL 설정으로 가능하지 않을까 싶은데... 암튼 자세한 것은 집에서. ^^;

kevin25
2010-02-25 12시07분
[kevin25] 위의 글에서, 보안상 피하고 싶다고는 했지만 테스트 해본 바로는 어쩔 수 없이 svc 파일에 ACL 권한을 주는 수 밖에는 별다른 방법을 찾지 못했습니다.

대신에, HttpContext.Current를 안 써도 되는 경우라면 "AspNetCompatibilityRequirements" 설정을 제거할 수가 있는데, 그런 상태에서는 svc 보안을 주지 않아도 정상적으로 admin/non-admin 계정으로 호출이 되었습니다.

kevin25
2010-03-29 03시10분
[꼭지] 이런 내용이 MSDN에 있네요.
"When this property("aspNetCompatibilityEnabled") is set to true, requests to Windows Communication Foundation (WCF) services flow through the ASP.NET HTTP pipeline and communication over non-HTTP protocols is prohibited.

http://msdn.microsoft.com/en-us/library/system.servicemodel.configuration.servicehostingenvironmentsection.aspnetcompatibilityenabled.aspx


[guest]
2010-05-03 05시49분
[꼭지(서정수)] 정확한 정보가 될 것 같네요.

FileAuthorizationModule Class
http://msdn.microsoft.com/en-us/library/system.web.security.fileauthorizationmodule(v=VS.80).aspx

Remarks
This module provides authorization services against file-system access-control lists (ACLs). When the mode attribute of the authentication Element (ASP.NET Settings Schema) configuration element is set to Windows so that the WindowsAuthenticationModule is being used for the application, the FileAuthorizationModule module ensures that the requesting user is allowed read or write access to the resource, depending on the request verb, before executing the request. For more information, see the CheckFileAccessForUser method.



FileAuthorizationModule.CheckFileAccessForUser Method
http://msdn.microsoft.com/en-us/library/system.web.security.fileauthorizationmodule.checkfileaccessforuser(v=VS.80).aspx

Remarks
The CheckFileAccessForUser method checks to see whether the current user, represented by a Windows access token, is granted access to the requested file in the file-system access-control lists (ACLs). The virtual path is mapped to the physical file-system path before the check is made.
If the HTTP verb used to make the request is GET, POST, or HEAD, the CheckFileAccessForUser method checks for read access to the file. If any other verb is used, the CheckFileAccessForUser method checks for read/write permission to the file.
Security Note If the FileAuthorizationModule module is not defined in the httpModules configuration section for the application, the FileAuthorizationModule module always returns true.

[guest]

... 16  17  18  19  20  21  22  23  24  25  26  27  28  [29]  30  ...
NoWriterDateCnt.TitleFile(s)
5155세퉁5/7/201910717관리자 권한으로 실행 시 알림창(?) 없이 바로 실행 시킬 수 있는 방법이 있을까요?? [2]파일 다운로드1
5154Soul...5/4/20197596NamedPipe 질문드립니다. [2]
5153개태5/4/20198546WCF RESTful Service에서 enum을 parameter로 쓰는방법 [2]
5152세퉁5/3/20199563인터넷 시간을 불러와 pc에 적용 시키고 싶습니다. [3]파일 다운로드1
5151이대희5/3/20197774C# 7.3으로 개정판 출간 계획이 있으신가요? [1]
5150김이현5/2/20199149C# 딕셔너리 생성에 대해 질문드립니다. [1]
5149민성5/1/20197463ftp 이미지 업로드중 [1]
5148wpf질문4/30/20197771특정 사이트를 wpf에서 popup을 항상 허용하게 할려면 어떻게 해야할까요? [5]
5147민성4/30/20196770wpf에서 작업관리자를 띠울려면 어떻게 해야 하나요? [1]
5146불파겐4/25/20196854하나의 필드를 여러 스레드에서 읽어갈 때 스레드 동기화를 하지 않으면 문제가 생길까요? [2]
5145e구름4/17/20199812Properties.Setting.Default값에 대해 질문드립니다. [2]
5144성태님 ...4/17/20197031질문하시기 전에 10000 페이지 오류 납니다. [1]
5143헌이4/16/20197946윈도우 작업표시줄에 프로그램 띄우기 [2]파일 다운로드1
5142cab2...4/9/201913508C#으로 만든 DLL 배포하기 [10]
5141하늘사랑4/5/20198447Axinterop 래퍼에 관해서 질문드립니다. [7]
5140게스트4/1/20198052안녕하세요. 초보 개발자입니다. SD리더기에서 SD카드를 꽂으면 발생하는 이벤트 문의 [2]
5139김이현3/28/201911285C#에서 CRON 같은 스케줄러를 사용하려면 어떻게 해야 하나요? [3]
5138김지원3/22/20198892유니티 쉐이더에서 오로지 포워드 애드 패스로만 만들 수 있을까요? [1]
5137세퉁3/22/201910756wpf 쓰레드에 대해 질문 있습니다. [4]
5136KGY3/13/20197469안녕하세요 닷넷코어 콘솔 프로그램 관련 질문입니다. [1]
5135러쎌3/13/20197905ASP.NET 공부 관련해서 문의를 드립니다. [1]
5134이정호3/12/20197310SampleProfiler 예제를 이용한 Class 객체의 접근 문의 [1]파일 다운로드1
5133ㅇㅇ3/12/20198205멀티코어사용 방법에 궁금한것이 있습니다. [3]
5132존기미3/3/20198460Physical Disk Access문의 [1]
5131강용규2/25/20197573c# 개발자입니다. 타이머 질문드립니다. [1]
5130노인코래방2/25/201911166C#에서 가장 좋은 성능을 보이는 파일 읽고 쓰는 방법이 무엇인가요? [2]
... 16  17  18  19  20  21  22  23  24  25  26  27  28  [29]  30  ...