diff --git a/docs/saas/dev.md b/docs/saas/dev.md index ce5e29f5d..dd291d9e1 100644 --- a/docs/saas/dev.md +++ b/docs/saas/dev.md @@ -5,23 +5,30 @@ keywords: Azure AppSource Marketplace SaaS comments: false # Hero section -title: Mastering SaaS offers +title: Mastering SaaS offers for developers description: These topics focus on helping you understand general topics regarding SaaS offers for the Microsoft commercial marketplace. hide: - toc --- -SaaS offers are a popular deployment architecture for deploying offers onto the Azure marketplace. The below course takes you through SaaS offers from start to finish. +Learn how to create custom SaaS offers for the marketplace. This course offers all you need to know to integrate successfully with the marketplace for SaaS applications. + +In this learning path, you'll work your way through all of the technical aspects of creating SaaS offers. When you're done, you'll have the skills to: + +- Understand the elements of a complete SaaS offer. +- Create a custom landing page for your customers. +- Create and secure a webhook that listens for messages from the marketplace. +- Interact with the marketplace SaaS fulfillment API. + +If you're a developer who is tasked with integrating your company's SaaS solution into the marketplace, this learning path is for you. + +--- 1. [SaaS Offer Overview](#saas-offer-overview) -1. [SaaS Offer Technical Overview](#saas-offer-technical-overview) -1. [Purchasing a Private SaaS Plan](#purchasing-a-private-saas-plan) -1. [Purchasing a SaaS offer from the Azure Marketplace](#purchasing-a-saas-offer-from-the-azure-marketplace) -1. [Purchasing a SaaS offer from AppSource](#purchasing-a-saas-offer-from-appsource) 1. [Publishing a SaaS Offer](#publishing-a-saas-offer) -1. [Publishing a Private SaaS Plan](#publishing-a-private-saas-plan) +1. [SaaS Offer Technical Overview](#saas-offer-technical-overview) 1. [Microsoft Entra ID configuration for your SaaS offer](#microsoft-entra-id-configuration-for-your-saas-offer) 1. [Using the SaaS Offer Fulfillment API](#using-the-saas-offer-fulfillment-api) 1. [The SaaS Client Library for .NET](#the-saas-client-library-for-net) @@ -38,153 +45,103 @@ SaaS offers are a popular deployment architecture for deploying offers onto the ## SaaS Offer Overview -Video | [PDF](./pdfs/01-SaaS-Offer-Overview.pdf) +Video | [PDF](./pdfs/01-SaaS-Offer-Overview.pdf) This video offers a technical overview of #Microsoft Azure Marketplace SaaS offers. It shows what you need to get started creating a SaaS offer of your own. -- 00:00 – [Overview](https://www.youtube.com/watch?v=9PCTioPbI8M&t=0s) -- 00:57 - [Microsoft commercial marketplace](https://www.youtube.com/watch?v=9PCTioPbI8M&t=57s) -- 05:01 - [SaaS offer creation process](https://www.youtube.com/watch?v=9PCTioPbI8M&t=301s) -- 07:53 - [Pricing models](https://www.youtube.com/watch?v=9PCTioPbI8M&t=473s) -- 13:31 - [Summary](https://www.youtube.com/watch?v=9PCTioPbI8M&t=811s) - -## SaaS Offer Technical Overview - -Video | [PDF](./pdfs/04-SaaS-Offer-Technical-Overview.pdf) - -Watch a deep technical overview of how SaaS offers work in the Microsoft Azure Marketplace. Learn how the API flows and interactions should work and how to build your landing page. Topics include the following. - -- [00:00 - Overview](https://www.youtube.com/watch?v=0c-rzJkTV7w&t=0s) -- [00:45 - Flow overview](https://www.youtube.com/watch?v=0c-rzJkTV7w&t=45s) -- [02:15 - The Landing Page​](https://www.youtube.com/watch?v=0c-rzJkTV7w&t=135s) -- [03:38 - SaaS Offer Purchase Flow in Depth​](https://www.youtube.com/watch?v=0c-rzJkTV7w&t=218s) -- [07:53 - SaaS Offer Fulfillment API​](https://www.youtube.com/watch?v=0c-rzJkTV7w&t=473s) -- [09:20 - Metered Billing Overview​](https://www.youtube.com/watch?v=0c-rzJkTV7w&t=560s) -- [11:33 - SaaS Offer Webhook​](https://www.youtube.com/watch?v=0c-rzJkTV7w&t=693s) - -## Purchasing a Private SaaS Plan - -Video | [PDF](./pdfs/02.2-Purchasing-a-Private-SaaS-Plan.pdf) - -This video shows how to subscribe to private SaaS plans in the #Microsoft Azure Marketplace. Topics include the following. +- Microsoft commercial marketplace +- SaaS offer creation process +- Pricing models -- 00:00 – [Overview](https://www.youtube.com/watch?v=44CCTjiwcfA&t=0s) -- 00:52 - [Private plans](https://www.youtube.com/watch?v=44CCTjiwcfA&t=52s) -- 03:03 - [Tenant Id](https://www.youtube.com/watch?v=44CCTjiwcfA&t=183s) -- 03:46 - [Purchasing a SaaS plan](https://www.youtube.com/watch?v=44CCTjiwcfA&t=226s) -- 06:45 – [Summary](https://www.youtube.com/watch?v=44CCTjiwcfA&t=405s) - -## Purchasing a SaaS offer from the Azure Marketplace - -Video - -This video demonstrates the customer purchasing process when subscribing to a SaaS offer from within the Azure Marketplace. - -- 00:00 - [Overview](https://www.youtube.com/watch?v=31PR7tTLrlQ&t=0s) -- 00:50 - [Subscribing from the Azure marketplace](https://www.youtube.com/watch?v=31PR7tTLrlQ&t=50s) -- 06:04 - [Subscribing from the Azure portal](https://www.youtube.com/watch?v=31PR7tTLrlQ&t=364s) -- 07:06 – [Summary](https://www.youtube.com/watch?v=31PR7tTLrlQ&t=426s) - -## Purchasing a SaaS offer from AppSource - -Video +## Publishing a SaaS Offer -This video demonstrates the customer purchasing process when subscribing to a SaaS offer from within the AppSource storefront. +Video | [PDF](./pdfs/03.1-Publishing-a-SaaS-Offer.pdf) -## Publishing a SaaS Offer +This detailed video presents the concepts of publishing a SaaS offer and then walks through the steps of doing so in Partner Center. -Video | [PDF](./pdfs/03.1-Publishing-a-SaaS-Offer.pdf) +This module goes all the way from creating an offer, to adding and plan, and finally publishing the offer live. It also speaks to the need of developers to have a sandbox environment in which they can test and development the landing page and webhook. -This detailed video presents the concepts of publishing a SaaS offer and then walks through the steps of doing so in Partner Center. This module goes all the way from creating an offer, to adding and plan, and finally publishing the offer live. It also speaks to the need of developers to have a sandbox environment in which they can test and development the landing page and webhook. +- The publication flow +- Publishing a SaaS offer -- 00:00 - [Overview](https://www.youtube.com/watch?v=AnZDa0Z1z8I&t=0s) -- 00:36 - [The publication flow](https://www.youtube.com/watch?v=AnZDa0Z1z8I&t=36s) -- 04:30 - [Publishing a SaaS offer](https://www.youtube.com/watch?v=AnZDa0Z1z8I&t=270s) -- 19:52 – [Summary](https://www.youtube.com/watch?v=AnZDa0Z1z8I&t=1192s) +## SaaS Offer Technical Overview -## Publishing a Private SaaS Plan +Video | [PDF](./pdfs/04-SaaS-Offer-Technical-Overview.pdf) -Video | [PDF](./pdfs/03.2-Publishing-Private-SaaS-Plan.pdf) +Watch a deep technical overview of how SaaS offers work in the Microsoft Azure Marketplace. -This brief video builds upon what you learned in, “Publishing a SaaS Offer.” It presents the concepts of using private plans and then shows how to do so inside Partner Center. +Learn how the API flows and interactions should work and how to build your landing page. Topics include the following. -- 00:00 – [Overview](https://www.youtube.com/watch?v=67E7LPL_aic&t=0s) -- 00:35 - [About private plans](https://www.youtube.com/watch?v=67E7LPL_aic&t=35s) -- 03:02 - [Creating a private SaaS plan](https://www.youtube.com/watch?v=67E7LPL_aic&t=182s) -- 07:11 - [Summary](https://www.youtube.com/watch?v=67E7LPL_aic&t=431s) +- Flow overview +- The Landing Page​ +- SaaS Offer purchase flow in depth​ +- SaaS Offer Fulfillment API​ +- Metered billing overview​ +- SaaS Offer webhook​ ## Microsoft Entra ID configuration for your SaaS offer -Video | [PDF](./pdfs/05-Azure-AD-Application-Registrations%20-%20v3.pdf) +Video | [PDF](./pdfs/05-Azure-AD-Application-Registrations%20-%20v3.pdf) In this module we look at a generic topic, application registrations for Entra ID. We’ll need this knowledge in upcoming modules. Application registrations give us a mechanism to authenticate to Entra ID, which is a requirement of the SaaS offer’s landing page, if you recall. This video should help you get a jump start on configuring application registrations for the apps we’ll be building in the next few modules. -- 00:00 – Overview -- 01:40 – Application Registrations in Microsoft Entra ID -- 05:20 – Single- vs. multi-tenant -- 10:59 – User consent and scopes -- 15:08 – A sample solution architecture -- 17:43 - Summary +- Application Registrations in Microsoft Entra ID +- Single- vs. multi-tenant +- User consent and scopes +- A sample solution architecture ## Using the SaaS Offer Fulfillment API -Video +Video See the SaaS Fulfillment API in action as we send it through its paces using Postman. You’ll learn how to authenticate with Azure Active Directory, resolve and activate subscriptions just like your Landing Page does, and see many other features of the API. -- [00:00 – Overview](https://www.youtube.com/watch?v=V_G4pOy0Sdo&t=0s) -- [00:32 - About the API](https://www.youtube.com/watch?v=V_G4pOy0Sdo&t=32s) -- [01:08 - Preparing to use the API](https://www.youtube.com/watch?v=V_G4pOy0Sdo&t=68s) -- [03:37 - Demo: Using the API with Postman](https://www.youtube.com/watch?v=V_G4pOy0Sdo&t=217s) -- [13:41 - Summary](https://www.youtube.com/watch?v=V_G4pOy0Sdo&t=821s) - +- About the API +- Preparing to use the API +- Demo: Using the API with Postman ## The SaaS Client Library for .NET -Video | [PDF](./pdfs/07-The-SaaS-Client-Library-for-.NET.pdf) +Video | [PDF](./pdfs/07-The-SaaS-Client-Library-for-.NET.pdf) + +This module introduces the SaaS Client Library for .NET developer who want to work with the SaaS APIs at a level of abstraction above the REST level. -This module introduces the SaaS Client Library for .NET developer who want to work with the SaaS APIs at a level of abstraction above the REST level. The client library is a fully functional .NET package that you can install and use in your applications, and you’ll see how to do just that. +The client library is a fully functional .NET package that you can install and use in your applications, and you’ll see how to do just that. -- 00:00 – [Overview](https://www.youtube.com/watch?v=uihNXaDBXVQ&t=0s) -- 00:37 - [Introducing the client library](https://www.youtube.com/watch?v=uihNXaDBXVQ&t=37s) -- 03:05 - [A simple application](https://www.youtube.com/watch?v=uihNXaDBXVQ&t=185s) -- 05:25 - [Tour the library](https://www.youtube.com/watch?v=uihNXaDBXVQ&t=325s) -- 06:50 – [Summary](https://www.youtube.com/watch?v=uihNXaDBXVQ&t=410s) +- Introducing the client library +- A simple application +- Tour the library ## Building a Simple Landing Page in .NET -Video | [PDF](./pdfs/08-simple-landing-page-dotnet.pdf) +Video | [PDF](./pdfs/08-simple-landing-page-dotnet.pdf) In this module we examine the elements of building a simple landing page and looking at how it works. The technology stack used is C#, ASP.NET MVC, and Razor views, just to keep it simple. We use the SaaS Client Library for .NET to build out our landing page functionality. -- 00:00 – [Overview](https://www.youtube.com/watch?v=QoDXqp3GH_s&t=0s) -- 00:59 - [The purpose of the landing page](https://www.youtube.com/watch?v=QoDXqp3GH_s&t=59s) -- 03:11 - [A humble landing page in action](https://www.youtube.com/watch?v=QoDXqp3GH_s&t=191s) -- 09:19 - [The code](https://www.youtube.com/watch?v=QoDXqp3GH_s&t=559s) -- 17:59 - [Available data to display](https://www.youtube.com/watch?v=QoDXqp3GH_s&t=1079s) -- 20:21 – [Summary](https://www.youtube.com/watch?v=QoDXqp3GH_s&t=1221s) +- The purpose of the landing page +- A humble landing page in action +- The code +- Available data to display ## Building a Simple SaaS Publisher Portal in .NET -Video | [PDF](./pdfs/09-simple-publisher-portal-dotnet.pdf) +Video | [PDF](./pdfs/09-simple-publisher-portal-dotnet.pdf) This video shows a very simple example of a publisher’s portal used to manage SaaS subscriptions. The technology stack used is C#, ASP.NET MVC, and Razor views, just to keep it simple. We use the SaaS Client Library for .NET to build out our portal functionality. -- 00:00 – [Overview](https://www.youtube.com/watch?v=bKNFoLfrTHU&t=0s) -- 00:46 - [Why have a publisher portal?](https://www.youtube.com/watch?v=bKNFoLfrTHU&t=46s) -- 01:47 - [A simple publisher portal](https://www.youtube.com/watch?v=bKNFoLfrTHU&t=107s) -- 05:47 - [The code](https://www.youtube.com/watch?v=bKNFoLfrTHU&t=347s) -- 12:01 – [Summary](https://www.youtube.com/watch?v=bKNFoLfrTHU&t=721s) +- Why have a publisher portal? +- A simple publisher portal +- The code ## SaaS Webhook Overview -Video | [PDF](./pdfs/10.1-simple-webhook-overview.pdf) +Video | [PDF](./pdfs/10.1-simple-webhook-overview.pdf) This technical overview of the SaaS webhook explains the following concepts of the SaaS offer webhook. @@ -197,52 +154,49 @@ And more! Consider watching this video before moving on to the code-based module ## Implementing a Simple SaaS Webhook in .NET -Video +Video This code-heavy module focuses on the fundamentals of implementing a SaaS offer webhook as an Azure function using .NET. Concepts are presented in such a way as to be architecture and technology stack agnostic. -- 00:00 – [Overview](https://www.youtube.com/watch?v=higEi441t1Q&t=0s) -- 00:27 - [Azure portal](https://www.youtube.com/watch?v=higEi441t1Q&t=27s) -- 01:09 - [Azure function](https://www.youtube.com/watch?v=higEi441t1Q&t=69s) -- 02:40 - [Long stream](https://www.youtube.com/watch?v=higEi441t1Q&t=160s) -- 03:19 - [Client view](https://www.youtube.com/watch?v=higEi441t1Q&t=199s) -- 04:17 - [Viewing the payload](https://www.youtube.com/watch?v=higEi441t1Q&t=257s) -- 05:56 – [Summary](https://www.youtube.com/watch?v=higEi441t1Q&t=356s) +- Azure portal +- Azure function +- Log stream +- Client view +- Viewing the payload ## Securing your SaaS offer webhook -Video | [PDF](./pdfs/10.3-simple-webhook-dotnet-securing-v2.pdf) | [Code](./code/10.3-simple-webhook-dotnet-securing-v2.zip) +Video | [PDF](./pdfs/10.3-simple-webhook-dotnet-securing-v2.pdf) | [Code](./code/10.3-simple-webhook-dotnet-securing-v2.zip) This security-focused module introduces several techniques for securing a SaaS offer webhook and then dives into implementations of the techniques presented. The two techniques covered are using an Azure Function as a webhook and using a Logic app. Although the Azure Function example is implemented in .NET, it is done so in a way that illustrates core concepts for any development stack. -- 00:00 - Overview -- 01:16 - Basic webhook flow -- 02:54 - Implementing webhook security -- 05:25 - Demo: Inspecting the marketplace JWT -- 07:07 - Demo: Securing a webhook implemented in .NET -- 12:18 - Demo: Securing a webhook implemented with a Logic app -- 16:50 - A security anti-pattern -- 19:38 - Summary - +- Basic webhook flow +- Implementing webhook security +- Demo: Inspecting the marketplace JWT +- Demo: Securing a webhook implemented in .NET +- Demo: Securing a webhook implemented with a Logic app +- A security anti-pattern ## SaaS Metered Billing Overview -Video | [PDF](./pdfs/11.1-saas-metered-billing-overview.pdf) +Video | [PDF](./pdfs/11.1-saas-metered-billing-overview.pdf) + +This module presents the fundamentals of billing through the marketplace based on usage, or metered billing. -This module presents the fundamentals of billing through the marketplace based on usage, or metered billing. It covers several areas of metered billing including the following. +It covers several areas of metered billing including the following. -- 00:00 – [Overview](https://www.youtube.com/watch?v=DJQ-2-wh6vU&t=0s) -- 01:23 – [Demo](https://www.youtube.com/watch?v=DJQ-2-wh6vU&t=83s) -- 04:45 – [API communications](https://www.youtube.com/watch?v=DJQ-2-wh6vU&t=285s) -- 07:22 – [Summary](https://www.youtube.com/watch?v=DJQ-2-wh6vU&t=442s) +- Demo +- API communications ## The SaaS Metered Billing API with REST -Video +Video + +We exercise the SaaS Billing REST API using Postman to illustrate how the API works. -We exercise the SaaS Billing REST API using Postman to illustrate how the API works. You’ll learn how the inputs to each API event and how to use the results, and finally how to invoke usage events in the metering API itself. This module is primarily demo. +You’ll learn how the inputs to each API event and how to use the results, and finally how to invoke usage events in the metering API itself. This module is primarily demo. ## Hands-on labs