Monday, December 2, 2013

Enterprise API Access/ Security Patterns

Accessing an API secured with OAuth, on behalf of a user logged into the system, with SAML2 WebSSO.

User from domain Foo tries to access a web app deployed in domain Bar. The web app is secured with SAML2 Web SSO.

Web App finds user does not have an authenticated session. Finds out from the which domain the request was initiated from and redirects the user to the SAML2 IdP in his own domain.

User authenticates to the SAML2 IdP in his own domain.

SAML2 IdP from domain Foo sends a SAML response back to the web app in domain Bar.

Web app validates the SAML response. It has to trust the domain Foo SAML2 IdP. To access backend APIs - on behalf of the logged in user, web app needs an OAuth access token. Web app talks to the OAuth Authorization Server in its own domain, passing the SAML token.

OAuth Authorization Server trusts the SAML2 IdP in domain Foo. Validates the SAML token and sends back an access token.

OAuth Authorization Server validates the token and sends back a JWT (JSON Web Token) which includes end user details to the API Manager.

API Gateway adds the JWT as an HTTP header and invokes the backend business API.

Accessing an API secured with OAuth on behalf of a user/system authenticated to a SOAP service with WS-Trust.

User / System from domain Foo authenticates to the WS-Trust STS in his own domain.

STS returns back a SAML token to access the SOAP service in domain Bar.

User/System authenticates to the SOAP service in domain Bar with the SAML token.

SOAP service validates the SAML token. It has to trust the domain Foo STS. To access backend APIs - on behalf of the logged in user, SOAP service needs an OAuth access token. SOAP service talks to the OAuth Authorization Server in its own domain, passing the SAML token.

OAuth Authorization Server trusts the STS in domain Foo. Validates the SAML token and sends back an access token.