# IClientSecurity

Gives the client control over the call-security of individual interfaces on a remote object.

All proxies generated by the COM MIDL compiler support the IClientSecurity interface automatically. If a call to QueryInterface for IClientSecurity fails, either the object is implemented in-process or it is remoted by a custom marshaler which does not support security (a custom marshaler may support security by offering the IClientSecurity interface to the client). The proxies passed as parameters to an IClientSecurity method must be from the same object as the IClientSecurity interface. That is, each object has a distinct IClientSecurity interface: calling IClientSecurity on one object and passing a proxy to another object will not work.

##### When to Implement

The system proxy manager provides an implementation to objects, so you would typically not implement this interface.

If, however, you are defining objects that support custom marshaling, you may choose to implement IClientSecurity on the objects’ custom proxy to maintain a consistent programming model for the objects’ client applications. You may also choose to support this interface on in-process objects.

##### When to Use

Call the methods of this interface to examine or modify the security settings of a particular connection to an out-of-process object. For example, you might temporarily establish a higher security level &emdash; one with complex encryption &emdash; only for the period when sensitive information or data is being sent to the object. Alternately, you might establish different proxies to the same object with different security levels and use them to support different clients that are calling your object, or to support different operations within your application.

Methods in Vtable Order

IUnknown Methods | Description
QueryInterface | Returns pointers to supported interfaces.
AddRef | Increments the reference count.
Release | Decrements the reference count.

IClientSecurity Methods | Description
IClientSecurity::QueryBlanket | Retrieves authentication information.
IClientSecurity::SetBlanket | Sets the authentication information that will be used to make calls on the specified proxy.
IClientSecurity::CopyProxy | Makes a copy of the specified proxy.

See Also

Security in COM