Create a web app that uses SignalR Service and GitHub authentication

This sample script creates a new Azure SignalR Service resource, which is used to push real-time content updates to clients. This script also adds a new Web App and App Service plan to host your ASP.NET Core Web App that uses the SignalR Service. The web app is configured with app settings to connect to the new SignalR service resource, and authenticate with GitHub authentication. The web app is also configured to use a local git repository deployment source.

If you don't have an Azure trail subscription, create a trial subscription before you begin.

Sample scripts

Sign in to Azure

Use the following script to sign in using a different subscription, replacing <Subscription ID> with your Azure Subscription ID. If you don't have an Azure trail subscription, create a trial subscription before you begin.

az cloud set -n AzureChinaCloud
az login

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

For more information, see set active subscription or log in.

Create the SignalR service with an App service

# Create a SignalR Service with an App Service

# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="China East 2"
resourceGroup="msdocs-azure-signalr-rg-$randomIdentifier"
tag="create-signal-service-with-app-service"
signalRSvc="msdocs-signalr-svc-$randomIdentifier"
webApp="msdocs-web-app-signalr-$randomIdentifier"
appSvcPlan="msdocs-app-svc-plan-$randomIdentifier"
signalRSku="Standard_S1"
unitCount="1"
serviceMode="Default"
planSku="Free"

# Create a resource group
echo "Creating $resourceGroup in "$location"..."
az group create --name $resourceGroup --location "$location" --tag $tag

# Create the Azure SignalR Service resource
echo "Creating $signalRSvc"
az signalr create \
  --name $signalRSvc \
  --resource-group $resourceGroup \
  --sku $signalRSku \
  --unit-count $unitCount \
  --service-mode $serviceMode

# Create an App Service plan.
echo "Creating $appSvcPlan"
az appservice plan create --name $appSvcPlan --resource-group $resourceGroup --sku $planSku

# Create the Web App
echo "Creating $webApp"
az webapp create --name $webApp --resource-group $resourceGroup --plan $appSvcPlan

# Get the SignalR primary connection string
primaryConnectionString=$(az signalr key list --name $signalRSvc \
  --resource-group $resourceGroup --query primaryConnectionString -o tsv)
echo $primaryConnectionString

# Add an app setting to the web app for the SignalR connection
az webapp config appsettings set --name $webApp --resource-group $resourceGroup \
  --settings "AzureSignalRConnectionString=$primaryConnectionString"

Enable GitHub authentication and Git deployment for web app

  1. Update the values in the following script for the desired deployment username and its passwor

    deploymentUser=<Replace with your desired username>
    deploymentUserPassword=<Replace with your desired password>
    
  2. Update the values in the following script based on your GitHub OAuth App registration.

    GitHubClientId=<Replace with your GitHub OAuth app Client ID>
    GitHubClientSecret=<Replace with your GitHub OAuth app Client Secret>
    
  3. Add app settings to use with GitHub authentication

    az webapp config appsettings set --name $webApp --resource-group $resourceGroup --settings "GitHubClientSecret=$GitHubClientSecret" 
    
  4. Update the webapp with the desired deployment user name and password

    az webapp deployment user set --user-name $deploymentUser --password $deploymentUserPassword
    
  5. Configure Git deployment and return the deployment URL.

    az webapp deployment source config-local-git --name $webAppName --resource-group $resourceGroupName --query [url] -o tsv
    

Clean up resources

Use the following command to remove the resource group and all resources associated with it using the az group delete command - unless you have an ongoing need for these resources. Some of these resources may take a while to create, as well as to delete.

az group delete --name $resourceGroup

Sample reference

Each command in the table links to command specific documentation. This script uses the following commands:

Command Notes
az group create Creates a resource group in which all resources are stored.
az signalr create Creates an Azure SignalR Service resource.
az signalr key list List the keys, which will be used by your application when pushing real-time content updates with SignalR.
az appservice plan create Creates an Azure App Service Plan for hosting web apps.
az webapp create Creates an Azure Web app using the App Service hosting plan.
az webapp config appsettings set Adds new app settings for the web app. These app settings are used to store the SignalR connection string and GitHub OAuth app secrets.
az webapp deployment user set Update deployment credentials.
az webapp deployment source config-local-git Get a URL for a git repository endpoint to clone and push to for web app deployment.

Next steps

For more information on the Azure CLI, see Azure CLI documentation.

Additional Azure SignalR Service CLI script samples can be found in the Azure SignalR Service documentation.