This is how I've been running it in my game. Maybe it's the correct way. But maybe it's not, and I would like some insight into that.
Ideally, I want the players rolling the dice for anything involving their characters.
As an example, let's take Stealth vs. Perception.
If the PC is actively searching for the ninjas, they make a Perception check with the difficulty based on the ninja's Stealth. If the PC is trying to be the ninja, the player makes a Stealth check with the difficulty based on the guard's Perception. In both cases, it's the player making the die roll.
(Now, in a case where I don't want to reveal what's going on to the players, I will make a roll on the NPC's behalf using the PC's numbers as the difficulty. Say, if the PC is "on watch" and not expecting trouble and therefore only passively Perceiving for ninjas. Then I'll roll the ninja's Stealth using the PC's Perception as the difficulty. It'll be behind my screen, and the PCs won't know what I'm rolling.)
Same holds for Deception vs. Discipline, or any other opposed check.
Am I doing it the best way? How do you do it?