EVEMon 4.0.20 - ESI Edition

An alternative option could be to write up a little proxy server in a language such as Go that you could talk to from EveMon, and let the proxy server proxy the OAuth2 redirect via a socket. That would be simplier and quicker than reimplementing a full HttpListener. You just launch the proxy when doing a character SSO then shut it down after completion. That way you can use the existing OAuth2 application grant flow.

[EveMon] ← socket → {Go proxy listener} ← OAuth2 → [CCP SSO]

More moving parts, but doing it in something like Go should keep it small and simple.

Now you have three possible solutions

  1. OAuth2 device grant flow (Request to implentment OAuth 2.0 Device Flow · Issue #65 · ccpgames/sso-issues · GitHub),
  2. Go proxy listener (http package - net/http - pkg.go.dev and net package - net - pkg.go.dev),
  3. Reimplement HttpListener in .Net (GitHub - space-wizards/ManagedHttpListener: Literally .NET's build in managed HttpListener butchered so that you compile it for Windows).

I would seriously consider option 2 as a stop gap before the migration to .Net 6+ and other larger gutting (UI framework for example). That way you will have it up and running on Linux and Mac. You could do that proxy either for all platforms or just for Linux and Mac as experimental. It looks like a major refactoring of the app is necessary anyway for future proofing. This proxy solution would still continue to work with a .Net 6 migration so it can last longer if need be.

.Net Framework is dead.