public bool IsAuthorized(UserContext userContext, Uri resourceUri) { SenderInfo senderInfo = new SenderInfo(userContext.GetIdentity(), userContext.ClientCertificate, resourceUri); CustomAuthorizationHandler.CustomContext customContext = null; TraceHelper.Current.MethodCall0("CustomAuthorizationHandler", "IsAuthorized"); try { using (OperationTracerWithTimeout operationTracerWithTimeout = new OperationTracerWithTimeout(new Action <string>(TraceHelper.Current.CustomAuthzCallStart), new Action <string>(TraceHelper.Current.CustomAuthzCallEnd), "AuthorizeUser", new Action <string>(TraceHelper.Current.CustomAuthzExceedTimeLimit), 30)) { UserQuota userQuotum = null; WindowsIdentity windowsIdentity = this.customAuthorization.AuthorizeUser(senderInfo, out userQuotum); if (windowsIdentity != null) { if (userQuotum != null) { TraceHelper.Current.UserQuotaInformation(userContext.Name, userQuotum.MaxConcurrentRequests, userQuotum.MaxRequestsPerTimeSlot, userQuotum.TimeSlotSize); customContext = new CustomAuthorizationHandler.CustomContext(windowsIdentity, userQuotum); } else { object[] nullQuota = new object[2]; nullQuota[0] = "CustomAuthorization.AuthorizeUser"; nullQuota[1] = Resources.NullQuota; throw new InvalidOperationException(ExceptionHelpers.GetExceptionMessage(Resources.MethodReturnedInvalidOutput, nullQuota)); } } else { object[] nullWindowsIdentity = new object[2]; nullWindowsIdentity[0] = "CustomAuthorization.AuthorizeUser"; nullWindowsIdentity[1] = Resources.NullWindowsIdentity; throw new InvalidOperationException(ExceptionHelpers.GetExceptionMessage(Resources.MethodReturnedInvalidOutput, nullWindowsIdentity)); } } } catch (Exception exception1) { Exception exception = exception1; if (!exception.IsSevereException()) { exception.Trace(null); } else { throw; } } this.customContextStore.StoreContext(customContext); if (customContext == null || customContext.Identity == null) { TraceHelper.Current.AuthorizeUserRequestFailed(userContext.Name, userContext.AuthenticationType); return(false); } else { TraceHelper.Current.AuthorizeUserRequestSucceeded(userContext.Name); return(true); } }
public InitialSessionState Create(UserContext userContext, string membershipId) { InitialSessionState initialSessionState; using (OperationTracerWithTimeout operationTracerWithTimeout = new OperationTracerWithTimeout(new Action <string>(TraceHelper.Current.PSSessionCallStart), new Action <string>(TraceHelper.Current.PSSessionCallEnd), "InitialSessionState", new Action <string>(TraceHelper.Current.PSSessionMethodExceededTimeLimit), 30)) { PSCertificateDetails pSCertificateDetail = null; if (userContext.ClientCertificate != null) { pSCertificateDetail = new PSCertificateDetails(userContext.ClientCertificate.Subject, userContext.ClientCertificate.Issuer, userContext.ClientCertificate.Thumbprint); } PSIdentity pSIdentity = new PSIdentity(userContext.AuthenticationType, userContext.IsAuthenticated, userContext.Name, pSCertificateDetail); PSPrincipal pSPrincipal = new PSPrincipal(pSIdentity, userContext.GetIdentity() as WindowsIdentity); PSSenderInfo pSSenderInfo = new PSSenderInfo(pSPrincipal, DataServiceController.Current.GetCurrentResourceUri().ToString()); try { InitialSessionState initialSessionState1 = this.sessionConfiguration.GetInitialSessionState(pSSenderInfo); if (initialSessionState1 != null) { TraceHelper.Current.GetInitialSessionStateRequestSucceeded(userContext.Name); initialSessionState1.Trace(); initialSessionState = initialSessionState1; } else { object[] objArray = new object[2]; objArray[0] = "PSSessionState.GetInitialSessionState"; objArray[1] = "null"; throw new InvalidOperationException(ExceptionHelpers.GetExceptionMessage(Resources.MethodReturnedInvalidOutput, objArray)); } } catch (Exception exception1) { Exception exception = exception1; TraceHelper.Current.GetInitialSessionStateRequestFailed(userContext.Name, exception.Message); if (!exception.IsSevereException()) { throw new CustomModuleInvocationFailedException(this.sessionConfiguration.GetType().AssemblyQualifiedName, "GetInitialState", exception); } else { throw; } } } return(initialSessionState); }
public string GetMembershipId(UserContext userContext, Uri resourceUri) { string membershipId; string str; TraceHelper.Current.MethodCall0("CustomAuthorizationHandler", "GetMembershipId"); SenderInfo senderInfo = new SenderInfo(userContext.GetIdentity(), userContext.ClientCertificate, resourceUri); try { using (OperationTracerWithTimeout operationTracerWithTimeout = new OperationTracerWithTimeout(new Action <string>(TraceHelper.Current.CustomAuthzCallStart), new Action <string>(TraceHelper.Current.CustomAuthzCallEnd), "GetMembershipId", new Action <string>(TraceHelper.Current.CustomAuthzExceedTimeLimit), 30)) { membershipId = this.customAuthorization.GetMembershipId(senderInfo); if (string.IsNullOrEmpty(membershipId)) { object[] objArray = new object[2]; objArray[0] = "CustomAuthorization.AuthorizeUser"; objArray[1] = "<null>"; throw new InvalidOperationException(ExceptionHelpers.GetExceptionMessage(Resources.MethodReturnedInvalidOutput, objArray)); } } str = membershipId; } catch (Exception exception1) { Exception exception = exception1; TraceHelper.Current.GetMembershipId(userContext.Name, exception.Message); if (!exception.IsSevereException()) { throw new CustomModuleInvocationFailedException(this.customAuthorization.GetType().AssemblyQualifiedName, "GetMembershipId", exception); } else { throw; } } return(str); }