#oauth2 #eve-online #eve-sso #black-rose #eve-esi

eve_oauth2

Black Rose's OAuth2 implementation for EVE Online SSO

1 unstable release

0.2.0 Apr 1, 2024
0.1.0 Jul 17, 2023

#274 in Authentication

Download history 5/week @ 2024-02-17 5/week @ 2024-02-24 2/week @ 2024-03-02 188/week @ 2024-03-30 18/week @ 2024-04-06

206 downloads per month

MIT license

19KB
193 lines

Rust EVE OAuth2

Black Rose's implementation of an OAuth2 method for authenticating with EVE Online's SSO for use with your preferred Rust web framework.

Initial Setup

  1. You will first need to create an application at https://developers.eveonline.com/.
  2. Set your callback URL in your application to the same one you will use in your application else you will encounter errors.
    • localhost:8000/callback
  3. Select the scopes your application intends on using, add more later if needed.
  4. Create a .env file with your client id & client secret that you will use in your login & callback API routes.

Implementation

You will need the following API routes:

  1. Login GET route to send the user to CCP's login page (localhost:8000/login)
    • Call the create_login_url function to get the login link for the page
    • Store the state code returned from create_login_url in a session
  2. Redirect GET route with code & state paramters (localhost:8000/callback?code=...&state=...)
    • Validate state from session with the state code from the calback for additional security
    • Call the get_access_token function which uses the application client id & client secret & the code returned in the redirect to retrieve an access token
    • Call the validate_access_token function to validate the token & to access the data within the token you can use in your application to verify the user

See the axum example to see the implementation above in action.

To test out the axum example:

  1. Copy .env.example to .env and fill out the variables which you can get from https://developers.eveonline.com/
  2. Run cargo run --example axum
  3. Login at http://localhost:8000/login
  4. On successful login you'll see your character id & name

Dependencies

~10–25MB
~390K SLoC