-
Notifications
You must be signed in to change notification settings - Fork 38
Issue with providing the right granular purpose and not over-provisioning access #336
Description
Issue with providing the right granular purpose and not over-provisioning access
Running into a pure OAuth 2.0 scope syntax problem: need granular CAMARA permissions (“purpose” + specific operation) in a single scope token, but the separator you choose must not conflict with URL encoding or the OAuth scope grammar. More important if using 3rd party out of the box IDPs with brittle scope patterns and consent management.
Legacy Example (original 1 camara scope)
GET/authorize?response_type=code&scope=openid dpv:FraudPreventionAndDetection#sim-swap:check dpv:FraudPreventionAndDetection#sim-swap:retrieve-date offline_access&client_id=s6BhdRkqt3&state=af0ifjsldkj&redirect_uri=https://client.example.org/cbHTTP/1.1Host:server.example.com
New Example (1 camara scope)
GET/authorize?response_type=code&scope=openid dpv:FraudPreventionAndDetection sim-swap:check sim-swap:retrieve-date offline_access&client_id=s6BhdRkqt3&state=af0ifjsldkj&redirect_uri=https://client.example.org/cbHTTP/1.1Host:server.example.com
New Example (2 camara scopes)
GET/authorize?response_type=code&scope=openid dpv:FraudPreventionAndDetection sim-swap:check sim-swap:retrieve-date dpv:IdentityVerification number-verification:device-phone-number offline_access&client_id=s6BhdRkqt3&state=af0ifjsldkj&redirect_uri=https://client.example.org/cbHTTP/1.1Host:server.example.com
Original scopes had “#” like dpv:FraudPreventionAndDetection#sim-swap:check, this was one scope. But “#” isn’t url friendly
New way suggested using spaces like “ “ but this is a reserved as a scope delimiter. Causing over provisioning.
Suggestion to use another delimiter like “-“ and not “:”
Example (original 1 camara scope)
GET/authorize?response_type=code&scope=openid dpv:FraudPreventionAndDetection-sim-swap:check dpv:FraudPreventionAndDetection-sim-swap:retrieve-date offline_access&client_id=s6BhdRkqt3&state=af0ifjsldkj&redirect_uri=https://client.example.org/cbHTTP/1.1Host:server.example.com