2011-08-17 23 views
8

Herhangi bir anonim kullanıcıdan bir grup rasgele metin alan ve daha sonra arka uçta bazı işlemleri gerçekleştiren bir WCF REST web hizmeti geliştirme sürecindeyiz. biz sadece biz (401) Unauthorized olsun varsayılan IIS ayarları kullanıyorsanızWCF REST Hizmet - 401 Yetkisiz

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
public class MyRESTService : IMyRESTService 
{ 
    [WebInvoke(Method = "PUT", UriTemplate = "/MyRESTMethod?paramA={paramA}&paramB={paramB}")] 
    public Stream MyRESTMethod(string paramA, string paramB, Stream rawData) 
    { 
     //do some stuff... 
    } 
} 

:

Örneğin, burada bizim web hizmetinden bir yöntemdir bu. Ancak, birçok deneme ve hatadan sonra, hizmetimiz için gerçek .svc dosyasındaki 'Herkes' bölümüne WRITE erişimi vererek işe alabileceğimizi anladık.

Sorum şu: Bu iş için IIS'nin bir .svc dosyasına WRITE erişiminin neden dünyada olması gerekir? Daha iyi bir yol var mı yoksa bu hack (ve muhtemelen güvensiz) bir çözümle mi takıldım?

WTF Microsoft?

Muhtemelen ilgili:

+0

erişim hakları <system.web>

<authentication mode="None" /> koyarak düzeltilebilir. Bunun yerine kimliği doğrulanmış kullanıcının bu haklara sahip olması gerekir. Anonim erişim için bu IUSR'dir. – chiccodoro

cevap

7

M $ dan bir teknoloji temsilcisi konuştuktan sonra ben bu gerçekten beklenen davranıştır bilgi verildi. Servis, birisinin kendisine bir istek göndermesi için yazma erişimine sahip olmalıdır ve bunu yaptığınızda, aslında .SVC dosyasında otomatik olarak yazma erişimi ayarlanacaktır.

+0

Günümü kurtardın! BTW: Bunu ikinci kez düşünmek, bu bir anlam ifade etmez: Bir kaynak üzerinde bir PUT istendiğinde, bu kaynağın yazma erişimine izin vermesi gerekir. Şimdi, WCF ile REST muhtemelen büyük olasılıkla IIS bir PUT /foobar.svc/some/path /foobar.svc üzerinde bir PUT isteği olarak yorumlamak ve daha fazla yorumlama için "/ some/path" parçasını WCF'ye iletecek şekilde uygulanmaktadır. Yani, IIS için bu /foobar.svc üzerinde bir PUT isteği - HTTP konuşma: Eğer foobar.svc – chiccodoro

9

Ben de bu bulduk mutlaka "Herkes" verilecek gerekmez senin web.config

+0

değiştirmek istiyorsanız, bu da bana yardımcı oldu, ama güvenli mi? –

+0

Ortamınıza bağlı olarak değişir. Benim durumumda, ağın güvende olduğuna güveniyorduk ve belki de bu yeterli. Hizmetler arasında doğrudan doğrulamaya ihtiyacınız varsa, açıkçası bu bir sorun olacaktır. – captncraig

İlgili konular