Top Banner
API Security Best Practices & Guidelines Prabath Siriwardena, WSO2 @prabath on Twitter | prabath @wso2. com API Security Best Practices & Guidelines
25

API Security Best Practices & Guidelines

Jan 06, 2017

Download

Technology

WSO2 Inc.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: API Security Best Practices & Guidelines

API Security Best Practices& Guidelines

Prabath Siriwardena, WSO2@prabath on Twitter | [email protected]

API Security Best Practices& Guidelines

Page 2: API Security Best Practices & Guidelines

About Me● The Director of Security Architecture, WSO2● Authored the book Advanced API Security - and three more

Page 3: API Security Best Practices & Guidelines

Managed APIs● The definition of the API has evolved over the time.● It’s not just about the Application Programming Interface.● Hosted, web-centric and public facing.● Public facing does not always mean it’s outside your enterprise.● Expose business functions to the rest of the world.● Managed APIs

○ Secured○ Monitored○ Throttled

Page 4: API Security Best Practices & Guidelines

Think About the Audience● Who’s going to access your API and from where?

○ Employees, within the domain or outside the domain or both.○ Partners ○ Suppliers○ Customers○ General Public

Page 5: API Security Best Practices & Guidelines

Think About the Audience● Is it a human or another system?

○ A user logs into a web app and the web app accesses an API on behalf of the end user.

○ Web app does not worry about the who the end user is when talking to an API

Page 6: API Security Best Practices & Guidelines

Think About the Audience● Who is having control over the system, which talks to the APIs

○ Mobile app talks to an API - the end user has the total control○ Web app talks to an API the end user has no control○ SPA talks to an API the end user has no control○ Trusted clients / public clients

Page 7: API Security Best Practices & Guidelines

Bootstrap Trust● Direct Authentication

○ Trust the user directly - user could validate the trust by presenting a token known to the user and the service provider (API) both.

○ User credentials are under the control of the service provider.○ Authenticate to Github API with username/password.

● Brokered Authentication○ Do not trust each and individual users - but some entity who can

assert a legitimate user to access the API.○ User credentials are not under the control of the service provider.○ The identity of the asserting entity can be validated by signature

verification.○ Login with Facebook

Page 8: API Security Best Practices & Guidelines

Identify the Audience● Direct Authentication

○ Username/password based authentication (basic auth)○ OAuth 2.0

■Authorization server and the resource server under the same domain.

■OAuth for authentication?○ TLS mutual authentication

■Trusts each certificate○ JSON Web Token (JWT)

■ Self-issued JWT○ Kerberos/NTLM○ Custom API keys

Page 9: API Security Best Practices & Guidelines

Identify the Audience● Brokered Authentication

○ OAuth 2.0■ SAML 2.0 grant type■ JWT grant type■….

○ TLS mutual authentication■Trusts the issuer

○ JSON Web Token (JWT)■Trusts the issuer

Page 10: API Security Best Practices & Guidelines

OAuth 2.0

Page 11: API Security Best Practices & Guidelines

Authorization Code Grant Type

Page 12: API Security Best Practices & Guidelines

Implicit Grant Type (I)

Page 13: API Security Best Practices & Guidelines

Implicit Grant Type (II)

Page 14: API Security Best Practices & Guidelines

Client Credentials Grant Type

Page 15: API Security Best Practices & Guidelines

Password Grant Type

Page 16: API Security Best Practices & Guidelines

Federated Access to APIsSAML Grant Type

Page 17: API Security Best Practices & Guidelines

Federated Access to APIsJWT Grant Type

Page 18: API Security Best Practices & Guidelines

Federated Access to APIsSelf-Contained Access Tokens

Page 19: API Security Best Practices & Guidelines

Federated Access to APIsSelf-Issued Access Tokens

Page 20: API Security Best Practices & Guidelines

Chained APIsToken Exchange

Page 21: API Security Best Practices & Guidelines

API Gateway Pattern

Page 22: API Security Best Practices & Guidelines

Fine-grained Access ControlXACML

Page 23: API Security Best Practices & Guidelines

● Use TLS in all the flows (bearer tokens)● Store access tokens/refresh tokens/client credentials in a secure

storage (at the client side)● Store hashed access tokens/refresh tokens/client credentials in a

secure storage (at the server side)● Make sure access tokens/refresh tokens have the proper length to

tolerate brute-force attacks.○ The token value should be >=128 bits long and constructed from

a cryptographically strong random or pseudo-random number sequence

● Use strong client credentials○ Use short-lived assertions as the client_secret

● Use OAuth state parameter to tolerate CSRF attacks.● Use scoped access tokens.● Use PKCE to tolerate authorization code interception attacks

(native mobile apps)

Security Considerations

Page 24: API Security Best Practices & Guidelines

● Enable throttling by user by application● Use TLS token binding to tolerate token exports● Restrict clients by grant types● Avoid using the same client_id/client_secret for each instance of a

mobile app - rather use the Dynamic Client Registration API to generate a key pair per instance.

● Short-lived access tokens● Long-lived refresh tokens● The token expiration time would depend on the following

parameters.○ risk associated with token leakage ○ duration of the underlying access grant ○ time required for an attacker to guess or produce a valid token

● One time access tokens (based on the use case)● Client should validate the token audience

Security Considerations

Page 25: API Security Best Practices & Guidelines