Skip to content

Addition of Azure DevOps enumeration module with full resource coverage. Added DevOps resource GUID in API V2 for FOCI-based refresh token pivoting to devops access token - #25

Open
21090503AKHSHAY wants to merge 2 commits into
RedByte1337:masterfrom
21090503AKHSHAY:addition-of-feature-azuredevops

Conversation

@21090503AKHSHAY

Copy link
Copy Markdown

Adds a complete Azure DevOps enumeration module to GraphSpy.

Added DevOps resource GUID (499b84ac-1321-427f-aa17-267ca6975798) in API V2 for FOCI-based refresh token pivoting to devops access token . Useful when pivoting a FOCI refresh token to a valid Azure DevOps bearer token using any compatible FOCI client ID . [eg., Devops Resource - 499b84ac-1321-427f-aa17-267ca6975798 & Client ID - d3590ed6-52b3-4102-aeff-aad2292ab01c [MS Office] utilize to access this from a FOCI refresh token.

azure_devops.py - [Covering detailed Hosts and API Endpoints for the enumeration] /api/azdevops/* blueprint covering - profile [Staus, access level] , organisations, projects, users, groups (with descriptor→name resolution), repositories (browse/read/edit/push/zip download), commits, branches, pipelines, teams, service connections, variable groups, secure files, environments, agent pools, audit log, PATs, and security namespaces. Correct API hosts used per surface.

UI with org/project selector, repo file tree browser with inline edit and commit, group members modal with resolved identities, and all tables with export/column controls & Error handling covers.

Sample preview of UI look of Azure Devops enumeration module ,
image

Let me know if you have any ideas or changes , I'm happy to discuss and work it out. Thanks !

- Add repo browser: file tree navigation, view, edit/push, commits, branches, zip download
- Fix zip download: add \=zip param (was returning 0 bytes)
- Fix group members: resolve descriptors to display names via subjects/lookup
- Fix my_entitlement: pass member_id, handle 404 gracefully
- Fix audit log, PATs: correct base URLs and org-scoped endpoints
- Add adoParseError: human-readable errors for 203/expired, 401, 403, HTML sign-in page
- Add global ajaxError handler for mid-session token expiry
- Enumerate button: btn-primary, auto-enable on project select
- Repos table: clean action buttons (Browse/Commits/Branches/Download), btn-outline-light
- File browser: dark thead, remove folder icon, SVG download icon, bold Edit button
- Groups table: Category badge instead of raw domain URI, descriptor truncated with tooltip
- Group members modal: Name/UPN/Type columns instead of raw descriptors
- Apply adoParseError to all 27 error handlers across the section
- adoParseError: catch backend-wrapped 203/Sign-In HTML in all 27 error handlers
- Global ajaxError handler for mid-session expired tokens (5s dedup)
- my_entitlement: any non-200 returns synthetic Active+Stakeholder/Restricted response
- Profile banner: always show Status:Active badge on successful auth; entitlement enriches it
- Repo browser table header: table-dark to match tool theme
- Repo browser empty repo: friendly English message instead of raw VS403403 JSON
- Folder name: removed [+] icon prefix, plain link only
- Download button: SVG icon + Zip label instead of arrow character
- Repos action buttons: btn-outline-light for visibility on dark background
- Edit button in file viewer: btn-primary fw-semibold
- Group members modal: Name/UPN/Type columns via subjects/lookup API
- Groups table: Category badge instead of raw domain URI
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant