Overview
This guide configures Azure Active Directory (now called Microsoft Entra ID) to issue OIDC tokens for Proxy Hopper. It uses the client credentials flow for machine-to-machine access and the roles claim to carry Proxy Hopper role assignments.Prerequisites
- Azure subscription with an Azure AD tenant
- Permission to register applications in Azure AD
- Proxy Hopper with
auth.enabled: true
Step 1 — Register an application
- Go to the Azure portal → Azure Active Directory → App registrations → New registration
- Configure:
- Name:
Proxy Hopper - Supported account types:
Accounts in this organizational directory only - Redirect URI: leave blank (not needed for client credentials)
- Name:
- Click Register and note the Application (client) ID and Directory (tenant) ID
Step 2 — Create a client secret
- In your app registration, go to Certificates & secrets → New client secret
- Set a description and expiry
- Copy the Value immediately — Azure only shows it once
Step 3 — Define app roles
App roles carry the Proxy Hopper role in the token.- In your app registration, go to App roles → Create app role
- Create roles for each Proxy Hopper role you need:
| Display name | Value | Description |
|---|---|---|
Proxy Hopper Admin | admin | Full proxy and admin API access |
Proxy Hopper Operator | operator | Full proxy access, no admin API |
Proxy Hopper Data Team | data-team | Access to analytics targets only |
- Allowed member types:
Applications(for service accounts) orUsers and groups(for human users) - Value: the exact role name that Proxy Hopper will see in the claim
Step 4 — Assign roles to users or service principals
- Go to Enterprise applications → Proxy Hopper → Users and groups → Add user/group
- Select users, groups, or service principals
- Assign the appropriate role
Step 5 — Expose the roles claim in tokens
By default, Azure includes app roles in theroles claim of access tokens. Confirm this:
- In your app registration, go to Token configuration → Add optional claim
- Token type: Access
- Add the
rolesclaim if not already present
Step 6 — Configure Proxy Hopper
The Azure
roles claim is an array. Proxy Hopper reads the first element. If users may have multiple roles, assign only one role per service principal to avoid ambiguity.issuerUrl for Azure AD v2.0 is https://login.microsoftonline.com/<tenant-id>/v2.0.
Step 7 — Test with client credentials
scope value: <application-client-id>/.default — this requests the app’s own scopes and is required for the roles claim to be included.
Troubleshooting
401 Invalid or expired token
- Confirm the
audiencein Proxy Hopper config matches theaudclaim in the token - Decode the token to inspect:
echo $TOKEN | cut -d. -f2 | base64 -d | jq . - Verify the
issuerUrlincludes your tenant ID
403 on target access
- Confirm the role is assigned to the service principal (not just the app registration)
- Verify the
rolesclaim is present in the decoded token - Check the role value exactly matches a built-in or custom role name in Proxy Hopper config
- Azure only includes app roles in access tokens when the scope is
<app-id>/.default - Ensure
Token configuration → Access token → rolesis enabled