Freelancer Union Forum

CCP Announcements => Dev Blog => Topic started by: CCP on January 29, 2011, 10:00:09 pm

Title: Power to the End User - Customizable Access API Keys
Post by: CCP on January 29, 2011, 10:00:09 pm
Power to the End User - Customizable Access API Keys (http://www.eveonline.com/devblog.asp?a=blog&bid=848)
29 January 2011, 7:07 pm

TL;DR: We are completely overhauling the API authentication system, and the API keys, according to most popular wishes from the community, the application developers and the CSM. We are also changing the nomenclature a bit so the term API Key isn‘t as interchangable between different concepts.

The what.

The EVE API (referred to as API henceforth) is a service we provide to developers outside of CCP so they can provide third party applications aimed at making your EVE experience that more enjoyable. Examples of applications you might recognize, that make use of the API, are: EVEMon, EVE Fitting Tool (EFT) and the EVEBoard. All of these applications rely, to a different extent, on your characters in-game data. As knowledge is power it is imperative that the API is as secure as possible while still being usable.

As it stands the API has two access levels: the limited access API key and the full access API key (referred to as access keys henceforth). These two access keys are currently created and deleted on user demand through the API Key management (http://www.eveonline.com/api/). These access keys consist of a User ID and an API Key for authentication. Access control is only affected by the type of access key generated, that is limited or full. Once the access keys have been created the User ID and API Key pair that belongs to them is put into the third party application settings so it can authenticate against the API and fetch the data it needs.

The full access key gives anyone who has your User ID and API Key pair access to all data we expose through the API, and the limited one gives access to a set of predefined information. This was all fine and dandy as a preliminary inception of the service but as it has grown in both functionality and usage this access restriction schema has become somewhat disadvantageous due to its lack of flexibility.

A lot of this blog is dedicated to technical talk as this mostly affects the application developers. End-users will have to relearn the process of creating and managing access keys, which is also covered in this blog. Important factors are bulletpointed below but a lot of this dev blog will be aimed at the developers. If you are not one of them feel free to skim read this and roll your eyes occasionally.

The why.

Almost every pilot and corporation in New Eden has given their full or limited access key to someone as it has become the de facto standard of both corporations and alliances to verify potential recruits. Both of these access keys often give access to more information than the receiver strictly requires. Directors of corporations must give out their personal character access key in order for alliances to look into their corporations. Access keys handed over to a second party can be traded to the holders liking and will never expire unless the keys' owner generates a new one. All of those points, along with both user and developer requests, have put us on the path of redesigning the access control layer of the API service.

The how.

Here is the design we are working with, in bullet points:

Thus your API call authentication will no longer be based on your User ID and a API Key for verification. Instead you will authenticate with a keyID and its paired verification code as shown in the example key above.

Further security additions!

Seeing as we're doing this massive overhaul of the authentication layer we decided to take the security measures of keys to the next level.

How to customize the access of keys:

The EVE API consists of three categories:

As I mentioned the key bound categories will be split up between keys with the introduction of the corporation API key. But this is not enough granularity! For example, the character bound API contains 25 separate calls. But requiring non-super users to pick from 25 calls in order to make an active key is going to be too confusing for many. So instead we're grouping the calls together according to functionality.

The actual grouping of calls is still up for discussion and the final version will be announced in a much later blog (which will contain things such as the key generation layout and the final plan for migration) but it will look something like this:

These groups will not have any overlapping access as the current design stands, although the data provided will be overlapping in many cases, such as the character sheet and account balance. Even though this will undergo further revision I'd like to encourage all discussions based on how this access grouping should be done and even whether or not it should be more granular.

 

How will this affect the API key generation and the end-user?

Greatly!

The new API keys will be managed through EVE Gate. There you will be able to add, edit and remove keys through a user friendly interface. As the interface has not been created at the time of writing I have no screenshots for you. There will be a management interface for all API keys where you can see your currently active keys, edit or delete them as well as creating new ones.

The process of creating a new API key will go something like this (like I mentioned earlier there is no current design for the layout):

The edit functionality will then allow you to change all of the above with the exception of the keyID itself. You can always delete keys and recreate them for a new keyID if you believe it is somehow compromised. In order to reduce the risk of compromised keys we would advise you to always generate new keys, with an auto-generated verification code as well as a short lifespan, to hand out to second parties.

So... how is this happening?

This is a massive change that will not be rushed out. It will also affect application developers who need to redesign parts of their applications to fit with the new access schema. When it is ready, and we are happy with the internal testing, we will push it out to the public test API that connects to SISI.

Once the new API has been deployed out to Tranquility we intend to keep both versions of the API running for some time. This will allow developers leeway to introduce new versions of their applications and users to generate their new API keys. We do not intend to move the current API keys over to the new system as that would defeat the purpose of this security overhaul. The new custom access level API will be hosted on the EVE Gate along with its API key management.

Once development gets into full swing and we've got more details to give to you we will publish another blog. In the meantime you have the opportunity to give us feedback and ideas to improve this design proposition.

What about all the other features the API is missing?

We are fully aware or both missing pages and other additional functionality that ranks highly on the community wish-list for the EVE API. However we are focusing on the security layer before we add any further complications. We really want feedback on this proposition to make it as compatible with the community wishes as possible and thus I would like to request that we keep the comments section restricted to the subject matter of the Dev Blog rather than risking good feedback getting lost.

So how about it? Got something that might make the API even more awesome?

Fly safe pod-pilots,

CCP Prism X

EVE Software Database Developer and Acting API Dude

 

 

 

Source: eveonline.com | devBlog (http://www.eveonline.com/)