private IPrincipal SetCurrentThreadPrincipal(ServiceSecurityContext securityContext, out bool isThreadPrincipalSet) { IPrincipal currentPrincipal = null; IPrincipal windowsPrincipal = null; if (this.principalPermissionMode == PrincipalPermissionMode.UseWindowsGroups) { windowsPrincipal = this.GetWindowsPrincipal(securityContext); } else if (this.principalPermissionMode == PrincipalPermissionMode.UseAspNetRoles) { windowsPrincipal = new RoleProviderPrincipal(this.roleProvider, securityContext); } else if (this.principalPermissionMode == PrincipalPermissionMode.Custom) { windowsPrincipal = GetCustomPrincipal(securityContext); } if (windowsPrincipal != null) { currentPrincipal = Thread.CurrentPrincipal; Thread.CurrentPrincipal = windowsPrincipal; isThreadPrincipalSet = true; return(currentPrincipal); } isThreadPrincipalSet = false; return(currentPrincipal); }
IPrincipal SetCurrentThreadPrincipal(ServiceSecurityContext securityContext, out bool isThreadPrincipalSet) { IPrincipal result = null; IPrincipal principal = null; ClaimsPrincipal claimsPrincipal = OperationContext.Current.ClaimsPrincipal; if (this.principalPermissionMode == PrincipalPermissionMode.UseWindowsGroups) { principal = (claimsPrincipal is WindowsPrincipal) ? claimsPrincipal : GetWindowsPrincipal(securityContext); } else if (this.principalPermissionMode == PrincipalPermissionMode.UseAspNetRoles) { principal = new RoleProviderPrincipal(this.roleProvider, securityContext); } else if (this.principalPermissionMode == PrincipalPermissionMode.Custom) { principal = GetCustomPrincipal(securityContext); } else if (this.principalPermissionMode == PrincipalPermissionMode.Always) { principal = claimsPrincipal ?? new ClaimsPrincipal(new ClaimsIdentity()); } if (principal != null) { result = Thread.CurrentPrincipal; Thread.CurrentPrincipal = principal; isThreadPrincipalSet = true; } else { isThreadPrincipalSet = false; } return(result); }