Token Handling Best Practices
The below security checklist is a general guidance to all integrations using Adobe IMS authorization to access private XD artefacts. There could be other security requirements for your integration depending upon your design.
|Client Side||Server Side|
|Use state parameter to prevent CSRF attack||Do not log IMS tokens in logs|
|Do not pass tokens in query string||Never include your IMS client secret and permanent auth code in source code; Store them in a secure secret management system.|
|Avoid storing access token and user profile in browser’s local storage||Encrypt refresh/access token while storing them on the server side|
|Ensure tokens are sent over TLS (HTTPS)|
|Use latest version of IMS APIs|
- If you need to log IMS tokens for debugging purpose then you should remove the signature part from the token which makes it invalid. The token format is HEADER.PAYLOAD.SIGNATURE. Alternatively, you could log the decoded JSON payload which is search friendly.
- Keep in mind access token might contain PII data. Talk to Legal researcher/team to come up with the right strategy.
Client side token storage
- Implement CSRF protection
- Set 'Secure' flag to the cookie. This instructs the browser to send the cookie information only over HTTPS.
- Set 'HTTPOnly' flag if you are setting the cookie using server side code.
Server side token storage
Application might have to store access token or refresh token on the server side for certain use case or while using refresh token grant type. Refresh token and access token must be kept confidential in transit and storage. The token should be encrypted by the application and stored in the database. (Do not use disk level encryption or transparent data encryption as they don't protect the tokens against SQL injection type attacks).
- If you have AdobeIO credentials in source code or accidentally committed them in your source code repository then you need to reach out to Adobe admins team to rotate the credentials.
- Make sure to store the new credentials in a secure secret management system.
- Rotation policy: General guidelines is to rotate the credential if it is leaked or person who had access to the credential left Adobe/team.