|
1 | 1 | --- |
2 | 2 | ms.subservice: azure-devops-ecosystem |
3 | 3 | ms.topic: conceptual |
4 | | -title: Building custom apps and third party services with Azure DevOps |
5 | | -description: Overview of building apps with Azure DevOps. |
| 4 | +title: Build secure applications and services with Azure DevOps |
| 5 | +description: Learn how to build secure, scalable applications that integrate with Azure DevOps using modern authentication and best practices. |
6 | 6 | ms.assetid: c9b97ad7-ffd8-4657-8322-74f764eec5c9 |
| 7 | +ai-usage: ai-assisted |
7 | 8 | monikerRange: '<= azure-devops' |
8 | 9 | ms.author: chcomley |
9 | 10 | author: chcomley |
10 | | -ms.date: 01/27/2025 |
| 11 | +ms.date: 07/14/2025 |
11 | 12 | --- |
12 | 13 |
|
13 | | -# Build applications |
| 14 | +# Build secure applications with Azure DevOps |
14 | 15 |
|
15 | 16 | [!INCLUDE [version-lt-eq-azure-devops](../includes/version-lt-eq-azure-devops.md)] |
16 | 17 |
|
17 | | -Build custom applications or services that integrate with Azure DevOps to access a user's Azure DevOps resources and perform actions programmatically, instead of needing access through a UI. |
| 18 | +Build secure, scalable applications and services that integrate with Azure DevOps to access user resources and automate processes programmatically. Whether you're creating internal automation tools or building commercial products, Azure DevOps provides robust APIs and modern authentication options to support your integration needs. |
18 | 19 |
|
19 | | -This can be helpful for writing a script to automate a regular to-do item for your team, or building a product offering for customers that pulls the latest status for Azure DevOps. Consider building with Azure DevOps to help you with: |
20 | | -* [Creating new bugs](./quickstarts/create-bug-quickstart.md) discovered by customers |
21 | | -* [Tracking your team's open work items](./quickstarts/work-item-quickstart.md) on a dashboard |
| 20 | +## Why integrate with Azure DevOps? |
22 | 21 |
|
23 | | -To get started, check out the following resources: |
24 | | -* Learn about the different [authentication mechanisms](./get-started/authentication/authentication-guidance.md) available to you. |
25 | | -* [Explore the Microsoft Entra Identity platform](./get-started/authentication/entra.md) when integrating with Azure DevOps to build more secure, enterprise-level applications. |
26 | | -* Read up on the basics to use the [Azure DevOps REST API](./how-to/call-rest-api.md), or |
27 | | -* See if our [client libraries](./concepts/dotnet-client-libraries.md) might be a more suitable alternative to making direct API calls. |
28 | | -* [Integrate with a webhook](../service-hooks/overview.md) to receive and action on events. |
29 | | -* [Develop and publish extensions](../extend/overview.md) on the Visual Studio Marketplace to customize or extend the Azure DevOps platform for your team or customers. |
30 | | -* Review our [app development](./concepts/integration-bestpractices.md) and [security best practices](../organizations/security/security-overview.md) |
| 22 | +Azure DevOps integration enables you to: |
| 23 | + |
| 24 | +**🔧 Automate workflows** |
| 25 | +- [Create and track bugs](./quickstarts/create-bug-quickstart.md) automatically from customer reports |
| 26 | +- [Monitor work items](./quickstarts/work-item-quickstart.md) and display status on custom dashboards |
| 27 | +- Sync data between Azure DevOps and external systems |
| 28 | +- Generate reports and analytics from Azure DevOps data |
| 29 | + |
| 30 | +**🏗️ Build commercial solutions** |
| 31 | +- Develop marketplace extensions for Azure DevOps customers |
| 32 | +- Create SaaS products that integrate with Azure DevOps |
| 33 | +- Build mobile apps that connect to Azure DevOps services |
| 34 | +- Integrate Azure DevOps with enterprise systems |
| 35 | + |
| 36 | +## Getting started: Choose your path |
| 37 | + |
| 38 | +### 🚀 Quick start options |
| 39 | + |
| 40 | +| **Need** | **Recommended approach** | **Best for** | |
| 41 | +|----------|-------------------------|--------------| |
| 42 | +| **Simple automation** | [REST API](./how-to/call-rest-api.md) with personal access tokens (PATs) | Scripts, personal tools | |
| 43 | +| **Production applications** | [.NET client libraries](./concepts/dotnet-client-libraries.md) with managed identity | Enterprise apps, Azure-hosted services | |
| 44 | +| **Interactive applications** | [Microsoft Entra authentication](./get-started/authentication/entra.md) | User-facing apps, desktop tools | |
| 45 | +| **Custom UI components** | [Azure DevOps extensions](../extend/overview.md) | Team customizations, marketplace products | |
| 46 | + |
| 47 | +### 🔐 Authentication: Security first |
| 48 | + |
| 49 | +**Choose the right authentication method:** |
| 50 | + |
| 51 | +**✅ Recommended for production:** |
| 52 | +- **[Managed Identity](./get-started/authentication/authentication-guidance.md#managed-identity)** - For Azure-hosted applications (most secure) |
| 53 | +- **[Service Principal](./get-started/authentication/authentication-guidance.md#service-principal)** - For CI/CD pipelines and automated services |
| 54 | +- **[Microsoft Entra ID](./get-started/authentication/entra.md)** - For user-facing applications requiring OAuth flows |
| 55 | + |
| 56 | +**⚡ Quick development:** |
| 57 | +- **[Personal Access Tokens (PATs)](./get-started/authentication/authentication-guidance.md#personal-access-tokens)** - For testing and personal automation only |
| 58 | + |
| 59 | +**❌ Avoid for production:** |
| 60 | +- Username/password authentication (deprecated) |
| 61 | +- Hardcoded credentials in source code |
| 62 | +- Overly broad permission scopes |
| 63 | + |
| 64 | +## Development approaches |
| 65 | + |
| 66 | +### 🔌 REST API integration |
| 67 | + |
| 68 | +**Best for:** Direct HTTP calls, platform-agnostic development, simple automation |
| 69 | + |
| 70 | +```markdown |
| 71 | +**Key benefits:** |
| 72 | +- Works with any programming language |
| 73 | +- Full control over HTTP requests and responses |
| 74 | +- Lightweight integration for simple scenarios |
| 75 | +- Easy to debug and test |
| 76 | + |
| 77 | +**Get started:** |
| 78 | +- [Learn REST API basics](./how-to/call-rest-api.md) |
| 79 | +- [Browse API reference](/rest/api/azure/devops/) |
| 80 | +- [Try APIs in the browser](https://docs.microsoft.com/rest/api/azure/devops/) |
| 81 | +``` |
| 82 | + |
| 83 | +### 📚 .NET client libraries |
| 84 | + |
| 85 | +**Best for:** C# applications, enterprise development, complex integrations |
| 86 | + |
| 87 | +```markdown |
| 88 | +**Key benefits:** |
| 89 | +- Strongly typed APIs with IntelliSense support |
| 90 | +- Built-in retry logic and error handling |
| 91 | +- Async/await patterns for better performance |
| 92 | +- Production-ready authentication options |
| 93 | + |
| 94 | +**Get started:** |
| 95 | +- [.NET client library samples](./get-started/client-libraries/samples.md) |
| 96 | +- [Authentication guidance](./get-started/authentication/authentication-guidance.md) |
| 97 | +- [Client library concepts](./concepts/dotnet-client-libraries.md) |
| 98 | +``` |
| 99 | + |
| 100 | +### 🔔 Event-driven integration |
| 101 | + |
| 102 | +**Best for:** Real-time responses, webhook-based automation, external system synchronization |
| 103 | + |
| 104 | +```markdown |
| 105 | +**Key benefits:** |
| 106 | +- Real-time event notifications |
| 107 | +- Reduced polling and improved efficiency |
| 108 | +- Support for multiple event types |
| 109 | +- Easy integration with external services |
| 110 | + |
| 111 | +**Get started:** |
| 112 | +- [Service hooks overview](../service-hooks/overview.md) |
| 113 | +- [Webhook configuration guide](../service-hooks/services/webhooks.md) |
| 114 | +- [Event reference documentation](../service-hooks/events.md) |
| 115 | +``` |
| 116 | + |
| 117 | +### 🧩 Platform extensions |
| 118 | + |
| 119 | +**Best for:** Custom UI components, team-specific features, marketplace products |
| 120 | + |
| 121 | +```markdown |
| 122 | +**Key benefits:** |
| 123 | +- Native integration with Azure DevOps UI |
| 124 | +- Access to platform APIs and services |
| 125 | +- Distribution through Visual Studio Marketplace |
| 126 | +- Rich customization capabilities |
| 127 | + |
| 128 | +**Get started:** |
| 129 | +- [Extension development overview](../extend/overview.md) |
| 130 | +- [Extension samples and tutorials](../extend/develop/samples-overview.md) |
| 131 | +- [Marketplace publishing guide](../extend/publish/overview.md) |
| 132 | +``` |
| 133 | + |
| 134 | +## Architecture patterns |
| 135 | + |
| 136 | +### 🏛️ Recommended architectures |
| 137 | + |
| 138 | +**Microservices integration:** |
| 139 | +```markdown |
| 140 | +Azure Function/App Service → Managed Identity → Azure DevOps APIs |
| 141 | +- Secure, serverless integration |
| 142 | +- Automatic credential management |
| 143 | +- Scalable and cost-effective |
| 144 | +``` |
| 145 | + |
| 146 | +**Enterprise application:** |
| 147 | +```markdown |
| 148 | +On-premises App → Service Principal → Azure DevOps REST APIs |
| 149 | +- Certificate-based authentication |
| 150 | +- Centralized credential management |
| 151 | +- Audit logging and compliance |
| 152 | +``` |
| 153 | + |
| 154 | +**User-facing application:** |
| 155 | +```markdown |
| 156 | +Web/Mobile App → Microsoft Entra OAuth → Azure DevOps on behalf of user |
| 157 | +- User consent flows |
| 158 | +- Secure token management |
| 159 | +- Granular permission control |
| 160 | +``` |
| 161 | + |
| 162 | +## Security and compliance |
| 163 | + |
| 164 | +### 🛡️ Security best practices |
| 165 | + |
| 166 | +**Authentication security:** |
| 167 | +- ✅ Use managed identities when possible |
| 168 | +- ✅ Implement proper token refresh logic |
| 169 | +- ✅ Apply principle of least privilege |
| 170 | +- ✅ Enable audit logging for all API calls |
| 171 | +- ❌ Never commit credentials to source control |
| 172 | +- ❌ Don't use overly broad PAT scopes |
| 173 | + |
| 174 | +**Application security:** |
| 175 | +- Implement proper error handling and logging |
| 176 | +- Use HTTPS for all communications |
| 177 | +- Validate all input data |
| 178 | +- Handle rate limiting gracefully |
| 179 | +- Store sensitive data in Azure Key Vault |
| 180 | + |
| 181 | +**Compliance considerations:** |
| 182 | +- Review [Azure DevOps security overview](../organizations/security/security-overview.md) |
| 183 | +- Understand data residency requirements |
| 184 | +- Implement proper access controls and auditing |
| 185 | +- Follow industry-specific compliance guidelines |
| 186 | + |
| 187 | +## Resources and next steps |
| 188 | + |
| 189 | +### 📖 Essential documentation |
| 190 | + |
| 191 | +**Core concepts:** |
| 192 | +- [Authentication guidance](./get-started/authentication/authentication-guidance.md) - Choose the right auth method |
| 193 | +- [Microsoft Entra integration](./get-started/authentication/entra.md) - OAuth and modern auth patterns |
| 194 | +- [Integration best practices](./concepts/integration-bestpractices.md) - Production-ready development patterns |
| 195 | + |
| 196 | +**API references:** |
| 197 | +- [Azure DevOps REST API](/rest/api/azure/devops/) - Complete API documentation |
| 198 | +- [.NET client libraries](./concepts/dotnet-client-libraries.md) - Managed client library information |
| 199 | +- [Service hooks reference](../service-hooks/overview.md) - Event-driven integration |
| 200 | + |
| 201 | +**Code samples:** |
| 202 | +- [.NET client samples](./get-started/client-libraries/samples.md) - Production-ready C# examples |
| 203 | +- [Azure DevOps auth samples](https://github.com/microsoft/azure-devops-auth-samples) - Authentication examples |
| 204 | +- [Extension samples](../extend/develop/samples-overview.md) - Platform extension examples |
| 205 | + |
| 206 | +### 🎯 Quick actions |
| 207 | + |
| 208 | +**Start building today:** |
| 209 | +1. **[Set up authentication](./get-started/authentication/authentication-guidance.md)** - Choose your auth method |
| 210 | +2. **[Try the REST API](./how-to/call-rest-api.md)** - Make your first API call |
| 211 | +3. **[Run client library samples](./get-started/client-libraries/samples.md)** - See working code examples |
| 212 | +4. **[Review security practices](../organizations/security/security-overview.md)** - Build securely from the start |
| 213 | + |
| 214 | +**Need help?** |
| 215 | +- [Azure DevOps Developer Community](https://developercommunity.visualstudio.com/spaces/21/index.html) - Ask questions and get help |
| 216 | +- [Stack Overflow](https://stackoverflow.com/questions/tagged/azure-devops) - Community support and examples |
| 217 | +- [GitHub samples repository](https://github.com/microsoft/azure-devops-auth-samples) - Working code examples |
| 218 | + |
| 219 | +> [!TIP] |
| 220 | +> **New to Azure DevOps integration?** Start with the [authentication guidance](./get-started/authentication/authentication-guidance.md) to understand your options, then try the [REST API quickstart](./how-to/call-rest-api.md) to make your first successful API call. |
0 commit comments