Server authority means that the server has control of an object. Server has authority over an object by default. This means the server would manage and control of all collectible items, moving platforms, NPCs, and any other networked objects that aren't the player.
When a client has authority over an object it means that they can call [Commands](Communications/RemoteActions.md) and that the object will automatically be destroyed when the client disconnects.
Even if a client has authority over an object the server still controls SyncVar and control other serialization features. A component will need to use a [Commands](Communications/RemoteActions.md) to update the state on the server in order for it to sync to other clients.
You can give authority to a client any time using `AssignClientAuthority`. This can be done by calling `AssignClientAuthority` on the object you want to give authority too
```cs
identity.AssignClientAuthority(conn);
```
You may want to do this when a player picks up an item
You can use `identity.RemoveClientAuthority` to remove client authority from an object.
```cs
identity.RemoveClientAuthority();
```
Authority can't be removed from the player object. Instead you will have to replace the player object using `NetworkServer.ReplacePlayerForConnection`.
## On Authority
When authority is given to or removed from an object a message will be sent to that client to notify them. This will cause the `OnStartAuthority` or `OnStopAuthority` functions to be called.