Looking through Valence, there does not seem to be any samples of how to use the .NET SDK in a server environment. Our system needs access to the APIs in a non-interactive environment, but the documentation seems to indicate that there needs to be user interaction.
The difference with non-interactive services is that the interactive step of getting keys for a particular user occurs at configuration time: the calling server then caches those keys for later use when calling the API (according to the docs).
In this model, you must have a generic "utility use" user account and all the API calls will occur in the context of that account, rather than in the context of each of the individual users as it would for an interactive application.
Note that this works because the keys are very long lived; however, site administrators can make the keys expire with a timeout, so you will want to check the configuration value d2l.Security.Api.TokenTimeout to determine what the timeout value on these keys might be. Site admins can also intentionally reset the tokens for the generic utility use account, so you'll still want to verify by referring to returned status codes that this hasn't happened.