principalpermission - IIS WebService Request for principal permission failed -
i have created simple web service , in web service have written simple method illustrated in code below.
[principalpermission(securityaction.demand, role = @"kiancoorp\somethingelse users u")] public string helloworld() { var msg = "hello {0} internal.".formatwith(identityname); _log.info(msg); return msg; }
i have hosted web service in app pool set domain user kiancoorp\webapppooluser, , have added user group of "kiancoorp\somethingelse users u" (via active directory).
now when use internet browser browse web service following prompt, try log in same user have used set app pool user helloworld web service of mine.
now if try log in correct credentials, prompt comes again
its have enter credentials 3 times, have tested , everytime have been prompted login dialog box have try 3 times , gets following browser screen.
system.servicemodel warning: 131076 : <tracerecord xmlns="http://schemas.microsoft.com/2004/10/e2etraceevent/tracerecord" severity="warning"><traceidentifier>http://msdn.microsoft.com/en-nz/library/system.servicemodel.diagnostics.tracehandledexception.aspx</traceidentifier><description>handling exception.</description><appdomain>/lm/w3svc/3/root-1-131164864670874625</appdomain><exception><exceptiontype>system.security.securityexception, mscorlib, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089</exceptiontype><message>request principal permission failed.</message><stacktrace> @ system.security.permissions.principalpermission.throwsecurityexception() @ system.security.permissions.principalpermission.demand() @ system.security.permissionset.demandnoncas() @ kianservice.helloworld() in c:\vso\sandbox\kianservice.cs:line 81 @ syncinvokehelloworld(object , object[] , object[] ) @ system.servicemodel.dispatcher.syncmethodinvoker.invoke(object instance, object[] inputs, object[]&amp; outputs)</stacktrace><exceptionstring>system.security.securityexception: request principal permission failed. @ system.security.permissions.principalpermission.throwsecurityexception() @ system.security.permissions.principalpermission.demand() @ system.security.permissionset.demandnoncas() @ kianservice.helloworld() in c:\vso\sandbox\kianservice.cs:line 81 @ syncinvokehelloworld(object , object[] , object[] ) @ system.servicemodel.dispatcher.syncmethodinvoker.invoke(object instance, object[] inputs, object[]&amp; outputs) action failed was: demand type of first permission failed was: system.security.permissions.principalpermission first permission failed was: &lt;ipermission class="system.security.permissions.principalpermission, mscorlib, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089" version="1"&gt; &lt;identity authenticated="true" role="kiancoorp\somethingelse users u"/&gt; &lt;/ipermission&gt; demand for: &lt;ipermission class="system.security.permissions.principalpermission, mscorlib, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089" version="1"&gt; &lt;identity authenticated="true" role="kiancoorp\somethingelse users u"/&gt; &lt;/ipermission&gt; assembly or appdomain failed was: mscorlib, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089</exceptionstring></exception></tracerecord> system.servicemodel error: 131075 : <tracerecord xmlns="http://schemas.microsoft.com/2004/10/e2etraceevent/tracerecord" severity="error"><traceidentifier>http://msdn.microsoft.com/en-nz/library/system.servicemodel.diagnostics.throwingexception.aspx</traceidentifier><description>throwing exception.</description><appdomain>/lm/w3svc/3/root-1-131164864670874625</appdomain><exception><exceptiontype>system.servicemodel.faultexception, system.servicemodel, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089</exceptiontype><message>access denied.</message><stacktrace> @ system.servicemodel.dispatcher.syncmethodinvoker.invoke(object instance, object[] inputs, object[]&amp; outputs) @ system.servicemodel.dispatcher.dispatchoperationruntime.invokebegin(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.immutabledispatchruntime.processmessage5(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.immutabledispatchruntime.processmessage31(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.messagerpc.process(boolean isoperationcontextset) @ system.servicemodel.dispatcher.channelhandler.dispatchandreleasepump(requestcontext request, boolean cleanthread, operationcontext currentoperationcontext) @ system.servicemodel.dispatcher.channelhandler.handlerequest(requestcontext request, operationcontext currentoperationcontext) @ system.servicemodel.dispatcher.channelhandler.asyncmessagepump(iasyncresult result) @ system.runtime.fx.asyncthunk.unhandledexceptionframe(iasyncresult result) @ system.runtime.asyncresult.complete(boolean completedsynchronously) @ system.runtime.inputqueue`1.asyncqueuereader.set(item item) @ system.runtime.inputqueue`1.enqueueanddispatch(item item, boolean candispatchonthisthread) @ system.runtime.inputqueue`1.enqueueanddispatch(t item, action dequeuedcallback, boolean candispatchonthisthread) @ system.servicemodel.channels.singletonchannelacceptor`3.enqueue(queueitemtype item, action dequeuedcallback, boolean candispatchonthisthread) @ system.servicemodel.channels.httpchannellistener.httpcontextreceived(httprequestcontext context, action callback) @ system.servicemodel.activation.hostedhttptransportmanager.httpcontextreceived(hostedhttprequestasyncresult result) @ system.servicemodel.activation.hostedhttprequestasyncresult.handlerequest() @ system.servicemodel.activation.hostedhttprequestasyncresult.beginrequest() @ system.servicemodel.activation.hostedhttprequestasyncresult.onbeginrequest(object state) @ system.runtime.iothreadscheduler.scheduledoverlapped.iocallback(uint32 errorcode, uint32 numbytes, nativeoverlapped* nativeoverlapped) @ system.runtime.fx.iocompletionthunk.unhandledexceptionframe(uint32 error, uint32 bytesread, nativeoverlapped* nativeoverlapped) @ system.threading._iocompletioncallback.performiocompletioncallback(uint32 errorcode, uint32 numbytes, nativeoverlapped* poverlap) </stacktrace><exceptionstring>system.servicemodel.faultexception: access denied.</exceptionstring></exception></tracerecord> system.servicemodel information: 131076 : <tracerecord xmlns="http://schemas.microsoft.com/2004/10/e2etraceevent/tracerecord" severity="information"><traceidentifier>http://msdn.microsoft.com/en-nz/library/system.servicemodel.diagnostics.tracehandledexception.aspx</traceidentifier><description>handling exception.</description><appdomain>/lm/w3svc/3/root-1-131164864670874625</appdomain><exception><exceptiontype>system.servicemodel.faultexception, system.servicemodel, version=4.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089</exceptiontype><message>access denied.</message><stacktrace> @ system.servicemodel.dispatcher.syncmethodinvoker.invoke(object instance, object[] inputs, object[]&amp; outputs) @ system.servicemodel.dispatcher.dispatchoperationruntime.invokebegin(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.immutabledispatchruntime.processmessage5(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.immutabledispatchruntime.processmessage31(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.messagerpc.process(boolean isoperationcontextset)</stacktrace><exceptionstring>system.servicemodel.faultexception: access denied. @ system.servicemodel.dispatcher.syncmethodinvoker.invoke(object instance, object[] inputs, object[]&amp; outputs) @ system.servicemodel.dispatcher.dispatchoperationruntime.invokebegin(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.immutabledispatchruntime.processmessage5(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.immutabledispatchruntime.processmessage31(messagerpc&amp; rpc) @ system.servicemodel.dispatcher.messagerpc.process(boolean isoperationcontextset)</exceptionstring></exception></tracerecord>
i cant find helpful online can me trouble shoot error.
i have solved issue strange issue. looked same user group in active directory, use user group string literal iis logs search same matching group in active directory couldnt find it.
role="kiancoorp\somethingelse users u"/>
but when browse active directory matching user group found it, copied , pasted usergroup string literal iis log's user group name text box in active directory , click apply.
then restart iis , use internet explorer browse web service again, iis able resolve access rights of user using log in , match appropriate appropriate user group (as written in c# code "[principalpermission(securityaction.demand, role = @"kiancoorp\somethingelse users u")]"), , able hellow world response.
Comments
Post a Comment