c# pdf viewer itextsharp : How to change page order in pdf document application SDK tool html .net wpf online Windows%20Powershell%20in%20Action%202nd%20Edition54-part1510

510
CHAPTER 13
R
EMOTING
CONFIGURING
APPLICATIONS
AND
SERVICES
You’ll how to use these cmdlets in the next few sections. 
Testing WSMan connections
You can use the 
Test-WSMan
cmdlet to see if the 
WSM
an connection to your target 
host is working:
PS (1) > Test-WSMan brucepay64h
wsmid           : http://schemas.dmtf.org/wbem/wsman/identity/1/
wsmanidentity.xsd 
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd 
ProductVendor   : Microsoft Corporation 
ProductVersion  : OS: 0.0.0 SP: 0.0 Stack: 2.0
In the output of the command, you see that the 
WSM
an service is running and avail-
able on the target machine.
Establishing a remote WSMan connection
Once you’ve verified that the service is available, you can use the 
Connect-WSMan 
cmdlet to connect to the target service. Run the following:
PS (2) > Connect-WSMan brucepay64h
The prompt returns immediately without displaying any information. So how can 
you check to see if the connection was created? This is where the 
WSM
an: drive comes 
into the picture. This drive lets you examine and manipulate the 
WSM
an service using 
the normal provider cmdlets. Start by looking at the contents of that drive using the 
dir
command:
PS (3) > dir wsman:\
WSManConfig:
ComputerName                                  Type 
------------                                  ----
brucepay64h                                   Container 
localhost                                     Container
Here you see the connection you just created. Now get more details about the con-
nected computer:
PS (5) > dir wsman:\brucepay64h | ft -auto
WSManConfig: Microsoft.WSMan.Management\WSMan::brucepay64h
Name                Value      Type 
----                -----      ----
MaxEnvelopeSizekb   150        System.String 
MaxTimeoutms        60000      System.String 
MaxBatchItems       32000      System.String 
MaxProviderRequests 4294967295 System.String 
Client                         Container
How to change page order in pdf document - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
how to move pdf pages around; how to reorder pages in pdf reader
How to change page order in pdf document - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
reorder pages pdf file; how to rearrange pages in pdf using reader
R
EMOTING
INFRASTRUCTURE
IN
DEPTH
511
Service                        Container 
Shell                          Container 
Listener                       Container 
Plugin                         Container 
ClientCertificate              Container
Digging further, you can obtain information about the 
Shell
container:
PS (6) > dir wsman:\brucepay64h\shell | ft -auto
WSManConfig: Microsoft.WSMan.Management\WSMan::brucepay64h\Shell
Name                   Value      Type 
----                   -----      ----
AllowRemoteShellAccess true       System.String 
IdleTimeout            180000     System.String 
MaxConcurrentUsers     5          System.String 
MaxShellRunTime        2147483647 System.String 
MaxProcessesPerShell   15         System.String 
MaxMemoryPerShellMB    150        System.String 
MaxShellsPerUser       5          System.String
WSM
an shell,  though not identical to a PowerShell session, encapsulates each 
PowerShell session when a user connects—one shell per connection, so 
MaxShells-
PerUser
controls how many remote connects a user may have to a machine. It’s 
worth spending some time exploring the 
WSM
an: drive as we’ll be returning to it a 
number of times throughout the rest of this section. Our next topic is authentication; 
you’ll see how both the target computer and connecting user are verified.
13.1.3
Authenticating the target computer
When you’re  performing remote operations  on a  machine,  these  operations may 
involve transmitting sensitive information to the target computer. As a consequence, 
you need to ensure that the machine you’re connecting to is the one you think it is. In 
this section, we’ll show you how to manage verifying server identity when working in 
a nondomain environment. 
In a domain environment, you’ve already established a trust relationship with the 
domain controller you’re connected to. If the target computer is also connected to 
the same domain controller (that is, it has verified its identity to the domain control-
ler), then you can rely on the domain controller to ensure that you’re connecting to 
the correct machine. But if you’re either not working in a domain environment or 
the target computer isn’t connected to the same domain controller, then you need an 
alternate mechanism for establishing trust. We’ll look at two mechanisms for address-
ing this problem: using 
HTTPS
and using the 
TrustedHosts
WSM
an configuration 
item. First, though, you need to make sure that passwords are set up on the machines 
you’re connecting to. The system won’t allow you to connect to an account without a 
password.
Once you have the account password, authenticating to the server is easy—you 
just use the 
-Credential
parameter and send your credentials to the target server. In
C# Word - Process Word Document in C#
various Word document processing implementations using C# demo codes, such as add or delete Word document page, change Word document pages order, merge or
rearrange pages in pdf reader; change pdf page order
VB.NET Word: Change Word Page Order & Sort Word Document Pages
Note: if you are trying to change the order of a you want to see other VB.NET Word document editing controls, please read this Word reading page which has
how to reorder pages in pdf file; reorder pages in a pdf
512
CHAPTER 13
R
EMOTING
CONFIGURING
APPLICATIONS
AND
SERVICES
this case, it’s extremely important to know what system you’re connecting to as you 
certainly don’t want to send passwords to the wrong machine. The first mechanism 
we’ll look at involves using 
HTTPS
and certificates.
Using HTTPS to establish server identity
One way of validating the identity of the target computer is to use 
HTTPS
when con-
necting to that computer. This works because, in order to establish an 
HTTPS
con-
nection, the target server must have a valid certificate installed where the name in the 
certificate matches the server name. As long as the certificate is signed by a trusted 
certificate authority, you know that the server is the one it claims to be. Unfortu-
nately, this process does require that you have a valid certificate, issued either by a 
commercial or local certificate authority. This is an entirely reasonable requirement in 
an enterprise environment but may not always be practical in smaller or informal 
environments.
If you aren’t able to obtain a valid certificate, then you’ll have to use a different 
mechanism for letting the remoting service know that you trust the target computer. 
This involves manually adding the target computer to the 
TrustedHosts
list on the 
client. We’ll review how to do that in the next section.
Using the TrustedHosts list
The 
TrustedHosts
list is a 
WSM
an configuration item that lists the names of target 
computers you trust. We looked  at 
TrustedHosts
briefly in chapter 12 (section
12.1.4). To review, the 
TrustedHosts
list is a string containing a comma-separated 
list of computer names, IP addresses, and fully qualified domain names. Wildcards 
are permitted to make it easy to specify groups of computers you want to trust.
We’ll repeat the steps used in chapter 12, but this time we’ll explain things in 
more detail. The easiest way to view or change the 
TrustedHosts
list is to use the 
WSM
an:  drive.  The 
TrustedHosts
configuration item for a machine is in the 
WSM
an:\<machine name>\Client node. For the local machine this is 
WSM
an:\local-
host\Client. To view the current 
TrustedHosts
list, use the 
Get-Item
cmdlet:
PS (1) > Get-Item wsman:\localhost\Client\TrustedHosts | Format-Table -auto
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Client
Name         Value                   Type 
----         -----                   ----
TrustedHosts brucepayx61,brucepay64h System.String
To set this item to a new value, use the 
Set-Item
cmdlet:
PS (2) > Set-Item wsman:localhost\client\trustedhosts brucepay64h
WinRM Security Configuration.
This command modifies the TrustedHosts list for the WinRM 
client. The computers in the TrustedHosts list might not be
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
Jpeg to PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF Permission Settings. C# File: Split PDF; C# Page: Insert PDF pages; C#
how to rearrange pdf pages; move pages in pdf online
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
and Files, adding a page into PDF document, deleting unnecessary page from PDF file and changing the position, orientation and order of PDF document pages with
how to move pages around in a pdf document; move pages in a pdf
R
EMOTING
INFRASTRUCTURE
IN
DEPTH
513
authenticated. The client might send credential information to 
these computers. Are you sure that you want to modify this list?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y
Because this operation affects the state of the system in a significant way (it has secu-
rity implications), you’re prompted to confirm this action. If you didn’t want this 
prompt, you’d use the 
-Force
parameter. Now use 
Get-Item
to confirm the change:
PS (3) > Get-Item wsman:\localhost\Client\TrustedHosts | Format-Table -auto
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Client
Name         Value       Type 
----         -----       ----
TrustedHosts brucepay64h System.String
The old list was completely replaced by the new one. This may not be what you 
want—you may want to just edit or append to the list. To do this, first retrieve the 
current value:
PS (5) > $cv = Get-Item wsman:\localhost\Client\TrustedHosts 
PS (6) > $cv.Value 
brucepay64h
It’s what you set it to previously. Now add some additional hostnames to the list in 
the 
Value
key:
PS (7) > $cv.Value = $cv.Value + ', brucepayx61 , 192.168.1.13,bp3' 
PS (8) > $cv.Value 
brucepay64h,brucepayx61, 192.168.1.13,bp3
As mentioned earlier, both machine names and IP addresses are allowed in the list. 
Now use 
Set-Item
to assign the updated value:
PS (9) > Set-Item wsman:localhost\client\trustedhosts $cv.value ` 
>> -Force
Finally, verify the result:
>> Get-Item wsman:\localhost\Client\TrustedHosts | ft -auto 
>>
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Client
Name         Value                           Type 
----         -----                           ----
TrustedHosts brucepay64h,brucepayx61,192.168.1.13,bp3 System.String
NOTE
There’s a somewhat easier way to add items to the 
Trusted-
Hosts
list. The 
WSM
an provider implements a 
-Concatenate
dyna-
mic parameter on the 
Set-Item
cmdlet that allows you to add a new 
host by using 
Set-Item  -Concatenate.\TrustedHosts newHost
Although this technique works, it’s unique to the 
WSM
an provider and 
inconsistent  with  the  normal  PowerShell  command  pattern,  so  it
C# Word - Sort Word Pages Order in C#.NET
library control, developers can swap or adjust the order of all or several Word document pages, or just change the position of certain one Word page in an
reorder pages in pdf preview; change page order pdf
C# PowerPoint - Sort PowerPoint Pages Order in C#.NET
control, developers can swap or adjust the order of all or several PowerPoint document pages, or just change the position of certain one PowerPoint page in an
how to move pages in a pdf file; how to rearrange pdf pages online
514
CHAPTER 13
R
EMOTING
CONFIGURING
APPLICATIONS
AND
SERVICES
doesn’t get mentioned very often. Supporting 
Set-Content
and 
Add-
Content
for this property would’ve been a better, more consistent 
approach.
If you want to add all the computers in a particular domain, you can specify a wild-
card (*) in the name you’re adding to the list. For example, the following command 
sets the configuration element to a value that will trust all servers in the yourdo-
main.com domain:
Set-Item wsman:localhost\client\trustedhosts *.yourdomain.com -WhatIf
If you want to trust all computers, set the 
TrustedHosts
configuration element to 
*
which matches all computers in all domains. This approach isn’t generally recom-
mended for security reasons.
You can also use this technique to add a computer to the 
TrustedHosts
list on a 
remote computer. You can use the 
Connect-WSMan
cmdlet to add a node for the 
remote computer to the 
WSM
an: drive on the local computer. Then use a 
Set-Item 
command to update that machine’s 
TrustedHosts
configuration element.
Now you know how you should set things up so that your users can be confident 
that they’re connecting to the correct service provider. The service provider is also 
extremely interested in verifying the identity of the connecting users before allowing 
them to access any services. That’s the topic of the next section.
13.1.4
Authenticating the connecting user
In the previous section, you saw how the client verifies the identity of the target com-
puter. Now we’ll explore the converse of this—how the target computer verifies the 
identity of the connecting user. PowerShell remoting supports a wide variety of ways 
of authenticating a user, including 
NTLM
and Kerberos. Each of these mechanisms 
has its advantages and  disadvantages.  The authentication mechanism also  has an 
important impact  on  how data  is  transmitted between the  client and  the server. 
Depending on how you authenticate to the server, the data passed between the client 
and server may or may not be encrypted. Encryption is extremely important in that it 
protects the contents of your communications with the server against tampering and 
preserves privacy. If encryption isn’t being used, you need to ensure the physical secu-
rity of your network. No untrusted access to the network can be permitted in this sce-
nario. The possible types of authentication are shown in table 13.5.
Table 13.5 The possible types of authentication available for PowerShell remoting
Auth type
Description
Encrypted payload
Default
Use the authentication method specified by the 
WS-Management protocol.
Depends on what 
was specified.
Basic
Use Basic Authentication, part of HTTP, where the username and 
password are sent unencrypted to the target server or proxy.
No, use HTTPS to 
encrypt the 
connection.
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
Enable C#.NET developers to change the page order of source PDF document file; Allow C#.NET developers to add image to specified area of source PDF document
how to move pages in pdf; reorder pages in pdf document
C# PDF Password Library: add, remove, edit PDF file password in C#
Able to change password on adobe PDF document in C#.NET. On this page, we will talk about how to achieve In order to run the sample code, the following steps
reordering pdf pages; change pdf page order reader
R
EMOTING
INFRASTRUCTURE
IN
DEPTH
515
For all of the authentication types except Basic, the payload of the messages you send 
is encrypted directly by the remoting protocol. If Basic authentication is chosen, you 
have to use encryption at a lower layer, for example by using 
HTTPS
instead of 
HTTP
.
In  simple  network  configurations,  you  only  have  to  worry  about  connecting 
directly to the target machine and authenticating to that computer. There’s a fairly 
common  configuration  where  things  are  more  complicated  and  you  have  to  go 
through an intermediate machine before you can connect to the final target. This 
configuration is the so-called “second-hop” scenario. We’ll look at how authentica-
tion is handled in this configuration next.
Forwarding credentials in multihop environments
In a domain environment, when a user connects from one computer to another, iden-
tity is validated by the domain controller. If the validation process completes success-
fully, a network token is created for those users, allowing them to operate as themselves 
on the target machine.
This arrangement works perfectly when the user can connect directly to the target 
computer, but that’s not always the case in an enterprise environment. Sometimes, 
for security or performance reasons, you have to go through a gateway or bastion 
server to get to your final target. In this scenario, you run into a problem with the 
normal remote-access authentication mechanism. Because you only have a network 
token on the second computer, you can’t directly connect to another computer. This 
is a deliberate restriction in the domain architecture designed to limit the amount of 
damage an attacker can inflict on the enterprise. An interactive token—what you get 
when you sit down in front of a PC and log on “on the glass”—is required to auto-
matically connect to another computer, and to create an interactive token, the user’s 
credentials are needed. This means that you have to get the user’s credentials to the 
second computer, a process that’s called credential forwarding.
Digest
Use Digest Authentication, which is also part of HTTP. This 
mechanism supersedes Basic authentication and encrypts 
the credentials.
Yes.
Kerberos
The client computer and the server mutually authenticate using 
the Kerberos network authentication protocol.
Yes.
Negotiate
Negotiate is a challenge-response scheme that negotiates with 
the server or proxy to determine the scheme to use for authenti-
cation. For example, negotiation is used to determine whether 
the Kerberos protocol or NTLM is used.
Yes.
CredSSP
Use Credential Security Service Provider (CredSSP) authentica-
tion, which allows the user to delegate credentials. This mecha-
nism, introduced with Windows Vista, is designed to support the 
second-hop scenario, where commands that run on one remote 
computer need to hop to another computer to do something. 
Yes.
Table 13.5 The possible types of authentication available for PowerShell remoting (continued)
Auth type
Description
Encrypted payload
516
CHAPTER 13
R
EMOTING
CONFIGURING
APPLICATIONS
AND
SERVICES
To accomplish this credential forwarding magic, PowerShell uses a mechanism 
introduced with Windows  Vista called 
C
red
SSP
(Credential Security Service  Pro-
vider). This mechanism was originally designed for Windows Terminal Server  to 
facilitate single sign-on. Since then, it has been expanded to work with web services as 
well, so PowerShell, through 
WSM
an, can take advantage of it. The 
C
red
SSP
mecha-
nism enables you to securely pass your credentials to a target machine via a trusted 
intermediary. This process is shown in figure 13.2.
NOTE
C
red
SSP
is another of the protocols that are publicly docu-
mented  through  the  Microsoft  Communications Protocol  Program. 
The  specification  for 
C
red
SSP
 designated 
MS-CSSP
 is  available  at 
http://mng.bz/q6Qo.
In the upper part of the figure, you see what happens when a user remotely connects 
to the first-hop computer. A network token is created for the user, allowing local 
access; but when they try to connect to the second machine, the connection fails. In 
the lower sequence, 
C
red
SSP
is enabled and the user has provided credentials to the 
first-hop computer, allowing it to create an interactive token. With an interactive 
token, the user can successfully connect to the second-hop computer.
For this delegation process to work, both the client and the server have to be 
enabled to allow it. To do so, use the 
Enable-WSManCredSSP
cmdlet. To enable the 
client side, execute the following command on the client:
Enable-WSManCredSSP -Role client -DelegateComputer computername
Without CredSSP: credentials aren’t passed
R
EMOTING
INFRASTRUCTURE
IN
DEPTH
517
This command enables you to pass credentials from the client to the delegate computer 
for authentication. To enable the server side, run the following command on the server:
Enable-WSManCredSSP -Role server
As you might expect, you have to run these commands from an elevated PowerShell 
session.
Be aware that there are some security concerns with this mechanism. It requires 
that the credentials be stored on the intermediate machine, even if only temporarily. 
If  that  machine  is  compromised,  these  stored  credentials  are  at  risk.  The  more 
machines that store credentials, the greater the potential risk of having credentials 
stolen becomes. In a bastion server scenario, this may represent a serious concern and 
so care must be taken in choosing when and where to use this feature.
There’s one more variation in our discussion of user authentication that we have to 
cover before we move on: handling administrator privileges in cross-domain scenarios.
Enabling remoting for administrators in other domains
In a large enterprise with more than one domain, an administrator in one domain 
may have to perform administrative tasks cross-domain and may encounter a prob-
lem with the way remoting works. Even when a user in another domain is a member 
of the Administrators group on the local computer, the user can’t connect to the tar-
get computer remotely with Administrator privileges. The reason is that, with the 
default settings, remote connections from other domains run with only standard user 
privilege tokens. To enable what you want, you can use the 
LocalAccountToken-
FilterPolicy
Registry entry to change the default behavior and allow remote users 
who are members of the Administrators group to run with Administrator privileges. 
NOTE
Allowing remote users who are members of the Administrators 
group to run with Administrator privileges isn’t the default because 
making  this  change  has  a  specific  security  concern.  Setting  the 
LocalAccountTokenFilterPolicy
entry will disable User Account 
Control 
(UAC)
remote restrictions for all users on all affected comput-
ers.  Make  sure  you’ve  considered  the  consequences  of  this  change 
before proceeding with it.
To change the policy you must define a new value at a specific place in the Registry. 
You’ll use the provider commands and the Registry provider to make this change, set-
ting the value of the 
LocalAccountTokenFilterPolicy
Registry entry to 1. The 
command to do this looks like this:
C:\PS> New-ItemProperty -Path `
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System `
-Name LocalAccountTokenFilterPolicy `
-PropertyType DWord -Value 1
518
CHAPTER 13
R
EMOTING
CONFIGURING
APPLICATIONS
AND
SERVICES
This  code  will  create  the  new 
LocalAccountTokenFilterPolicy
value in the 
Registry at the path
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
Once this change has been made, administrators from another domain will be able to 
remotely access this computer through PowerShell.
At this point, you’re able to set things up so that the server can verify the identity 
of the connecting user and the user can verify that they’re connected to the correct 
server. Next you’ll learn the various ways you can address the target computer.
13.1.5
Addressing the remoting target 
In this section we’ll look at how to specify the address of the target remoting service 
that you want to connect to. With 
TCP/IP
-based protocols, there are two parts to a 
service address: the IP address of the computer and the network port number that ser-
vice is operating on. We’ll examine both of these elements and also show how proxy 
servers fit into the overall scheme. 
DNS names and IP addresses
The typical way to address a computer is to use its name. This name is resolved 
through the Domain Name Service 
(DNS)
into an IP address. But sometimes it’s nec-
essary to specify the IP address of a computer explicitly instead of going through 
DNS
 To  permit  this,  the 
New-PSSession
Enter-PSSession
 and 
Invoke-
Command
cmdlets can also take the 
IP
address of the computer. But because Kerberos 
authentication doesn’t support 
IP
addresses, 
NTLM
authentication is used by default 
whenever you specify an 
IP
address. In other words, you’re looking at the same issues 
you  encountered  earlier  when  working  in  a  nondomain  environment.  The 
IP 
addresses for these machines must be added to the 
TrustedHosts
list. See section
13.1.2 for details on how to do this.
Connecting to nondefault ports
By default, PowerShell connects to port 5985 for inbound remoting over 
HTTP
and 
to port 5986 for connections over 
HTTPS
. This information can also be retrieved 
directly from the 
WSM
an: drive using the following command:
PS (1) > dir WSMan:\localhost\Service\DefaultPorts | 
>> Format-Table -AutoSize name,value 
Name   Value 
----   -----
HTTP   5985 
HTTPS  5986
On the client end, when you need to connect to a nondefault port, use the 
-Port 
parameter as follows:
Invoke-Command -ComputerName localhost -Port 5985 -ScriptBlock {hostname}
R
EMOTING
INFRASTRUCTURE
IN
DEPTH
519
On the server side, you can change the default port that the service listens on using 
the 
WSM
an: drive.
NOTE
If you change the default port, you may also be required to add 
a new firewall exception for that port.
You use the 
Set-Item
cmdlet to change the 
Port
value in the path 
WSM
an:\local-
host\Listener\<listener>\Port.  For  example,  the  following  command  changes  the 
default port to 8080:
Set-Item WSMan:\localhost\Listener\Listener_641507880\Port -Value 8080
You  can verify the  change  using  the 
dir
command on the path 
WSM
an:\local-
host\Listener\Listener_641507880\Port. 
Addressing using a URI
Given all this talk about 
HTTP
IP
addresses, and ports, you might expect that a 
machine can be addressed using a 
URI
(or 
URL
) just like a web server and this is, in 
fact, the case. In the following example, you’ll use a 
URI
to connect to the default ser-
vice on machine1:
PS (1) > Invoke-Command ` 
>>   -ConnectionUri http://machine1:5985/WSMAN ` 
>>  -Credential $c -ScriptBlock { hostname } 
>> 
machine1 
PS (2) >
This 
URI
tells 
Invoke-Command
the protocol to use 
(HTTP)
, the machine  name 
(machine1), and the port (5985) to connect to, all in a single string.
That covers the basic addressing mechanisms. Now we’ll look at how proxy servers 
come into all of this.
Specifying default session options
It should be apparent by now that the number of options you can specify for a 
connection  is  quite  large.  Specifying  this  option  collection  eventually  becomes 
cumbersome, so PowerShell provides a mechanism for predefining the options to 
use via the New-PSSession-Option cmdlet. This cmdlet will create an object that 
contains  the default values  to  use.  If this object is then stored  in  the variable 
$PSSessionOption, it’ll be used to set the defaults for subsequent connection. 
You’ll see an example of this in a minute. 
The other approach for managing sets of options is to assign them to a hashtable 
and then use splatting to parameterize the command. Splatting was covered in 
section 5.8.4.
Documents you may be interested
Documents you may be interested