Web App Template - mattchenderson/microsoft-identity-web GitHub Wiki

Creating and configuring web apps with project templates

  • You can create applications with the project templates provided by Microsoft Identity Web. This is explained in this article
  • Then you can configure your applications using msidentity-app-sync which is a dotnet global tool that creates/updates Azure AD or Azure AD B2C apps and updates your code configuration.

Download or build the NuGet package containing the .NET Core template:

You have two ways of installing the templates:

  • either from NuGet
  • or build them from the repository

Option 1: Install the templates in dotnet core

You can download the Microsoft.Identity.Web.ProjectTemplates-1.9.1 NuGet package from NuGet.org. The following command will install the templates from NuGet.org (or anything referenced as .NET sources, for instance in NuGet.config)

dotnet new -i Microsoft.Identity.Web.ProjectTemplates::1.9.1

Option 2: Build and install the templates from the repository

Alternatively if you want to build it yourself clone the Microsoft.Identity.Web repo, and then

dotnet pack /p:ClientSemVer=1.9.1
cd ProjectTemplates
cd bin
cd Debug
dotnet new -i Microsoft.Identity.Web.ProjectTemplates.1.9.1.nupkg

Overview of the web app templates

image

Use the Web app MVC template

Web MVC app (Microsoft identity platform, Single Org)

mkdir mvcwebapp
cd mvcwebapp
dotnet new mvc2 --auth SingleOrg

Web MVC app (Microsoft identity platform, Multiple Orgs)

mkdir mvcwebapp-multi-org
cd mvcwebapp-multi-org
dotnet new mvc2 --auth MultiOrg

Web MVC app (Azure AD B2C)

mkdir mvcwebapp-b2c
cd mvcwebapp-b2c
dotnet new mvc2 --auth  IndividualB2C

Web MVC app calling Microsoft Graph

mkdir mvcwebapp-graph
cd mvcwebapp-graph
dotnet new mvc2 --auth  SingleOrg --calls-graph

Web MVC app calling a web API

mkdir mvcwebapp-calls-api
cd mvcwebapp-calls-api
dotnet new mvc2 --auth  SingleOrg --called-api-url "https://localhost:12345" --called-api-scopes "api://{someguid}/access_as_user"

Use the Web app Razor template

Razor Web app (Microsoft identity platform, Single Org)

mkdir webapp
cd webapp
dotnet new webapp2 --auth SingleOrg

Razor Web app (Microsoft identity platform, Multiple Orgs)"

mkdir webapp-multi-org
cd webapp-multi-org
dotnet new webapp2 --auth MultiOrg

Razor Web app Azure AD B2C

mkdir webapp-b2c
cd webapp-b2c
dotnet new webapp2 --auth  IndividualB2C

Web Razor app calling Microsoft Graph

mkdir webapp-graph
cd webapp-graph
dotnet new webapp2 --auth  SingleOrg --calls-graph

Web Razor app calling a web API

mkdir webapp-calls-api
cd webapp-calls-api
dotnet new webapp2--auth  SingleOrg --called-api-url "https://localhost:12345" --called-api-scopes "api://{someguid}/access_as_user"

Use the web app Blazor server template

Blazor server web app (Microsoft identity platform, Single Org)

mkdir blazorserver
cd blazorserver
dotnet new blazorserver2 --auth SingleOrg

Blazor server web app (Microsoft identity platform, Multiple Orgs)

mkdir blazorserver-multi-org
cd blazorserver-multi-org
dotnet new blazorserver2 --auth MultiOrg

Blazor server Web app Azure AD B2C

mkdir blazorserver-b2c
cd blazorserver-b2c
dotnet new blazorserver2 --auth IndividualB2C

Blazor server web app calling Microsoft Graph

mkdir blazorserver-graph
cd blazorserver-graph
dotnet new blazorserver2 --auth  SingleOrg --calls-graph

Blazor server web app calling a web API

mkdir blazorserver2 -calls-api
cd blazorserver2 -calls-api
dotnet new blazorserver2 --auth  SingleOrg --called-api-url "https://localhost:12345" --called-api-scopes "api://{someguid}/access_as_user"

Use of the Blazor web assembly template

Blazor web assembly - single-org

mkdir blazorwasm2-singleorg
cd blazorwasm2-singleorg
dotnet new blazorwasm2 --auth SingleOrg

Blazor web assembly single-org, calling Microsoft graph"

mkdir blazorwasm2-singleorg-callsgraph
cd blazorwasm2-singleorg-callsgraph
dotnet new blazorwasm2 --auth SingleOrg --calls-graph

Blazor web assembly single-org, calling a downstream web API"

mkdir blazorwasm2-singleorg-callswebapi
cd blazorwasm2-singleorg-callswebapi
dotnet new blazorwasm2 --auth SingleOrg --called-api-url "https://graph.microsoft.com/beta/me" --called-api-scopes "user.read"

Blazor web assembly, single-org, with hosted Blazor web server web API

mkdir blazorwasm2-singleorg-hosted
cd blazorwasm2-singleorg-hosted
dotnet new blazorwasm2 --auth SingleOrg  --hosted

Blazor web assembly, single-org, with hosted Blazor web server web API calling microsoft graph"

mkdir blazorwasm2-singleorg-callsgraph-hosted
cd blazorwasm2-singleorg-callsgraph-hosted
dotnet new blazorwasm2 --auth SingleOrg --calls-graph --hosted

Blazor web assembly, single-org, with hosted Blazor web server web API calling a downstream web api

mkdir blazorwasm2-singleorg-callswebapi-hosted
cd blazorwasm2-singleorg-callswebapi-hosted
dotnet new blazorwasm2 --auth SingleOrg --called-api-url "https://graph.microsoft.com/beta/me" --called-api-scopes "user.read" --hosted

Blazor web assembly, B2C

mkdir blazorwasm2-b2c
cd blazorwasm2-b2c
dotnet new blazorwasm2 --auth IndividualB2C

Blazor web assembly, B2C, with hosted Blazor web server B2C web API

mkdir blazorwasm2-b2c-hosted
cd blazorwasm2-b2c-hosted
dotnet new blazorwasm2 --auth IndividualB2C  --hosted

Example of a fully configured B2C Razor Web app

  1. Create the app

    dotnet new webapp2 --auth IndividualB2C --aad-b2c-instance "https://fabrikamb2c.b2clogin.com" --client-id "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6" --domain "fabrikamb2c.onmicrosoft.com" --susi-policy-id "b2c_1_susi" --reset-password-policy-id "b2c_1_reset" --edit-profile-policy-id "b2c_1_edit_profile"  
    
  2. In the launchSettings.json, change the sslPort to 44316

  3. run the Web app: dotnet run

  4. navigate to https://localhost:44316 and sign-in to the application

(optional) Uninstall the templates

Navigate back to ProjectTemplates\bin\Debug and run:

dotnet new -u Microsoft.Identity.Web.ProjectTemplates

Update dotnet core templates

First un-install:

Navigate back to ProjectTemplates\bin\Debug and run:

dotnet new -u Microsoft.Identity.Web.ProjectTemplates

Then install the new templates:

dotnet new -i Microsoft.Identity.Web.ProjectTemplates.1.9.1.nupkg