Skip to content

API returns 403 when using client-credential flow because IPAM validates only scp (delegated) tokens and not roles (application permissions) #370

@rachit22test

Description

@rachit22test

When calling the Azure IPAM Engine API using a service principal (client-credentials flow), the request fails with 403 Forbidden even though the service principal has been granted the correct App Role under “Expose an API”.
The access token contains a roles claim, but the API rejects it because IPAM appears to validate only delegated-permission (scp) tokens.

Expected Behavior

IPAM Engine API should accept tokens obtained via application permissions (client-credential flow), using the roles claim.
This would allow automation tools, DevOps pipelines, and backend services to call IPAM without interactive login.

Actual Behavior

Service principal token contains:

"aud": "<ENGINE_APP_ID>",
"roles": ["ipam-access-via-pipeline"]

API call returns: 403 Forbidden

Debug logs show token is parsed, but authorization fails because no scp claim is present.

If I request a token as a user (delegated grant), token contains scp, and the API works correctly.

This strongly suggests the engine checks only for scp and does not process roles.

Metadata

Metadata

Assignees

Labels

help wantedExtra attention is needed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions