wallarm/api-firewall

Enforce OAuth Access Token Scope requirements

nynymike opened this issue · 3 comments

Ideally, when I design an endpoint, I should be able to say how each method is authorized. In OAuth, we use scopes to determine the extent of access granted for an access_token ("AT"). The AT may be a value token: a JWT requiring signature validation (and auto-fetching of the current keys). The AT may also be a reference token: a guess-resistent identifier requiring OAuth token introspection. In either case, the AT should contain the scope claim, which is a space-delimited list of scopes (normally in URI format).

In the example below, the swagger doc is saying that to do a GET on the persistence endpoint, you need to present a token with either the properties.read OR properties.write scope

/jans-config-api/api/v1/jans-auth-server/config/persistence:
    get:
      summary: Returns persistence type configured for Jans authorization server.
      description: Returns persistence type configured for Jans authorization server.
      operationId: get-properties-persistence
      security:
        - oauth2: [properties.read, properties.write]

For extra credit, you can consider how the scopes are combined. Can you use AND instead of OR for a given endpoint? For more complex booleans, you could support JSONLogic syntax.

Hello nynymike,

Unfortunately, right now we don't support in-depth security requirements analysis (token validation, scope checks and etc.). API-Firewal just checks that you have an "Authorization" header without validation of its content. But we have some ideas regarding integration with OAuth services in the API-Firewall roadmap.
Could you please provide any details regarding OAuth provider you are using? It will help us to adjust our tasks.

Thanks.

I am CEO of Gluu, so of course we use Gluu Server 4.x. The upstream project is Janssen Auth-Server at the Linux Foundation.

this feature will be included in the next release