Skip to content

Commit 78ab6f8

Browse files
authored
Merge pull request #296343 from MicrosoftDocs/main
Publish to live, Friday 4 AM PST, 3/14
2 parents 85dac30 + 20cec58 commit 78ab6f8

File tree

7 files changed

+122
-84
lines changed

7 files changed

+122
-84
lines changed
-9.32 KB
Loading

articles/azure-signalr/signalr-howto-authorize-application.md

Lines changed: 55 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
22
title: Authorize requests to Azure SignalR Service resources with Microsoft Entra applications
33
description: This article provides information about authorizing requests to Azure SignalR Service resources by using Microsoft Entra applications.
4-
author: vicancy
5-
ms.author: lianwei
6-
ms.date: 02/03/2023
4+
author: terencefan
5+
ms.author: tefa
6+
ms.date: 03/14/2023
77
ms.service: azure-signalr-service
88
ms.topic: how-to
99
ms.devlang: csharp
@@ -12,52 +12,26 @@ ms.custom: subject-rbac-steps
1212

1313
# Authorize requests to Azure SignalR Service resources with Microsoft Entra applications
1414

15-
Azure SignalR Service supports Microsoft Entra ID for authorizing requests from [Microsoft Entra applications](../active-directory/develop/app-objects-and-service-principals.md).
15+
Azure SignalR Service supports Microsoft Entra ID for authorizing requests from [Microsoft Entra applications](/entra/identity-platform/app-objects-and-service-principals).
1616

1717
This article shows how to configure your Azure SignalR Service resource and codes to authorize requests to the resource from a Microsoft Entra application.
1818

19-
## Register an application
19+
## Register an application in Microsoft Entra ID
2020

21-
The first step is to register a Microsoft Entra application:
22-
23-
1. In the [Azure portal](https://portal.azure.com/), search for and select **Microsoft Entra ID**.
24-
2. Under **Manage**, select **App registrations**.
25-
3. Select **New registration**. The **Register an application** pane opens.
26-
27-
![Screenshot of the pane for registering an application.](./media/signalr-howto-authorize-application/register-an-application.png)
28-
5. For **Name**, enter a display name for your application.
29-
6. Select **Register** to confirm the registration.
21+
The first step is to [Register an application in Microsoft Entra ID](/entra/identity-platform/quickstart-register-app):
3022

3123
After you register your application, you can find the **Application (client) ID** and **Directory (tenant) ID** values on the application's overview page. These GUIDs can be useful in the following steps.
3224

3325
![Screenshot of overview information for a registered application.](./media/signalr-howto-authorize-application/application-overview.png)
3426

35-
To learn more about registering an application, see [Quickstart: Register an application with the Microsoft identity platform](../active-directory/develop/quickstart-register-app.md).
36-
3727
## Add credentials
3828

39-
You can add both certificates and client secrets (a string) as credentials to your confidential client app registration.
40-
41-
### Client secret
42-
43-
The application requires a client secret to prove its identity when it's requesting a token. To create a client secret, follow these steps:
44-
45-
1. Under **Manage**, select **Certificates & secrets**.
46-
1. On the **Client secrets** tab, select **New client secret**.
47-
48-
![Screenshot of selections for creating a client secret.](./media/signalr-howto-authorize-application/new-client-secret.png)
49-
1. Enter a description for the client secret, and choose an expiration time.
50-
1. Copy the value of the client secret and then paste it in a secure location.
51-
> [!NOTE]
52-
> The secret appears only once.
29+
After registering an app, you can add **certificates, client secrets (a string), or federated identity credentials** as credentials to your confidential client app registration. Credentials allow your application to authenticate as itself, requiring no interaction from a user at runtime, and are used by confidential client applications that access a web API.
5330

54-
### Certificate
31+
- [Add a certificate](/entra/identity-platform/quickstart-register-app?tabs=certificate#add-credentials)
32+
- [Add a client secret](/entra/identity-platform/quickstart-register-app?tabs=client-secret#add-credentials)
33+
- [Add a federated credential](/entra/identity-platform/quickstart-register-app?tabs=federated-credential#add-credentials)
5534

56-
You can upload a certificate instead of creating a client secret.
57-
58-
![Screenshot of selections for uploading a certificate.](./media/signalr-howto-authorize-application/upload-certificate.png)
59-
60-
To learn more about adding credentials, see [Add credentials](../active-directory/develop/quickstart-register-app.md#add-credentials).
6135

6236
## Add role assignments in the Azure portal
6337

@@ -93,58 +67,72 @@ To learn more about how to assign and manage Azure roles, see these articles:
9367
- [Assign Azure roles using the Azure CLI](../role-based-access-control/role-assignments-cli.md)
9468
- [Assign Azure roles using Azure Resource Manager templates](../role-based-access-control/role-assignments-template.md)
9569

96-
## Configure your app
70+
## Microsoft.Azure.SignalR app server SDK for C#
9771

98-
### App server
72+
[Azure SignalR server SDK for C#](https://github.com/Azure/azure-signalr)
9973

100-
The best practice is to configure identity and credentials in your environment variables:
74+
### Use Microsoft Entra application with certificate
75+
```csharp
76+
services.AddSignalR().AddAzureSignalR(option =>
77+
{
78+
var credential = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
10179

102-
| Variable | Description |
103-
| ------------------------------- | --------------------------------------------------------------------------------------------------------------- |
104-
| `AZURE_TENANT_ID` | The Microsoft Entra tenant ID. |
105-
| `AZURE_CLIENT_ID` | The client (application) ID of an app registration in the tenant. |
106-
| `AZURE_CLIENT_SECRET` | A client secret that was generated for the app registration. |
107-
| `AZURE_CLIENT_CERTIFICATE_PATH` | A path to a certificate and private key pair in PEM or PFX format, which can authenticate the app registration. |
108-
| `AZURE_USERNAME` | The username, also known as User Principal Name (UPN), of a Microsoft Entra user account. |
109-
| `AZURE_PASSWORD` | The password of the Microsoft Entra user account. A password isn't supported for accounts with multifactor authentication enabled. |
80+
option.Endpoints = [
81+
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
82+
];
83+
});
84+
```
11085

111-
You can use either [DefaultAzureCredential](/dotnet/api/azure.identity.defaultazurecredential) or [EnvironmentCredential](/dotnet/api/azure.identity.environmentcredential) to configure your Azure SignalR Service endpoints. Here's the code for `DefaultAzureCredential`:
86+
### Use Microsoft Entra application with client secret
11287

113-
```C#
88+
```csharp
11489
services.AddSignalR().AddAzureSignalR(option =>
11590
{
116-
option.Endpoints = new ServiceEndpoint[]
117-
{
118-
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new DefaultAzureCredential())
119-
};
91+
var credential = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
92+
93+
option.Endpoints = [
94+
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
95+
];
12096
});
12197
```
12298

123-
Here's the code for `EnvironmentCredential`:
99+
### Use Microsoft Entra application with Federated identity
124100

125-
```C#
101+
> [!NOTE]
102+
> Configure an application to trust a managed identity is a preview feature.
103+
> To learn more about it, see [Configure an application to trust a managed identity (preview)](/entra/workload-id/workload-identity-federation-config-app-trust-managed-identity).
104+
105+
```csharp
126106
services.AddSignalR().AddAzureSignalR(option =>
127107
{
128-
option.Endpoints = new ServiceEndpoint[]
108+
var msiCredential = new ManagedIdentityCredential("msiClientId");
109+
110+
var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
129111
{
130-
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new EnvironmentCredential())
131-
};
112+
// Entra ID US Government: api://AzureADTokenExchangeUSGov
113+
// Entra ID China operated by 21Vianet: api://AzureADTokenExchangeChina
114+
var request = new TokenRequestContext([$"api://AzureADTokenExchange/.default"]);
115+
var response = await msiCredential.GetTokenAsync(request, ctoken).ConfigureAwait(false);
116+
return response.Token;
117+
});
118+
119+
option.Endpoints = [
120+
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
121+
];
132122
});
133123
```
134124

135-
To learn how `DefaultAzureCredential` works, see [DefaultAzureCredential class](/dotnet/api/overview/azure/identity-readme#defaultazurecredential).
136-
137-
#### Use endpoint-specific credentials
125+
### Use multiple endpoints
138126

139-
In your organization, you might want to use different credentials for different endpoints.
127+
Credentials can be different for different endpoints.
140128

141-
In this scenario, you can use [ClientSecretCredential](/dotnet/api/azure.identity.clientsecretcredential) or [ClientCertificateCredential](/dotnet/api/azure.identity.clientcertificatecredential):
129+
In this sample, the Azure SignalR SDK will connect to `resource1` with client secret and connect to `resource2` with certificate.
142130

143131
```csharp
144132
services.AddSignalR().AddAzureSignalR(option =>
145133
{
146134
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
147-
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");
135+
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
148136

149137
option.Endpoints = new ServiceEndpoint[]
150138
{
@@ -154,15 +142,15 @@ services.AddSignalR().AddAzureSignalR(option =>
154142
});
155143
```
156144

157-
### Azure SignalR Service bindings in Azure Functions
145+
## Azure SignalR Service bindings in Azure Functions
158146

159147
Azure SignalR Service bindings in Azure Functions use [application settings](../azure-functions/functions-how-to-use-azure-function-app-settings.md) in the portal or [local.settings.json](../azure-functions/functions-develop-local.md#local-settings-file) locally to configure Microsoft Entra application identities to access your Azure SignalR Service resources.
160148

161149
First, you need to specify the service URI of Azure SignalR Service. The key of the service URI is `serviceUri`. It starts with a connection name prefix (which defaults to `AzureSignalRConnectionString`) and a separator. The separator is an underscore (`__`) in the Azure portal and a colon (`:`) in the *local.settings.json* file. You can customize the connection name by using the binding property [`ConnectionStringSetting`](../azure-functions/functions-bindings-signalr-service.md). Continue reading to find the sample.
162150

163151
Then, you choose whether to configure your Microsoft Entra application identity in [predefined environment variables](#configure-an-identity-in-predefined-environment-variables) or in [SignalR-specified variables](#configure-an-identity-in-signalr-specified-variables).
164152

165-
#### Configure an identity in predefined environment variables
153+
### Configure an identity in predefined environment variables
166154

167155
See [Environment variables](/dotnet/api/overview/azure/identity-readme#environment-variables) for the list of predefined environment variables. When you have multiple services, we recommend that you use the same application identity, so that you don't need to configure the identity for each service. Other services might also use these environment variables, based on the settings of those services.
168156

@@ -188,7 +176,7 @@ AZURE_TENANT_ID = ...
188176
AZURE_CLIENT_SECRET = ...
189177
```
190178

191-
#### Configure an identity in SignalR-specified variables
179+
### Configure an identity in SignalR-specified variables
192180

193181
SignalR-specified variables share the same key prefix with the `serviceUri` key. Here's the list of variables that you might use:
194182

articles/azure-signalr/signalr-howto-configure-application-firewall.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: SignalR Application Firewall (Preview)
2+
title: SignalR Application Firewall
33
description: An introduction about why and how to set up Application Firewall for Azure SignalR service
44
author: biqian
55
ms.service: azure-signalr-service
@@ -8,7 +8,7 @@ ms.topic: how-to
88
ms.date: 07/10/2024
99
ms.author: biqian
1010
---
11-
# Application Firewall (Preview) for Azure SignalR Service
11+
# Application Firewall for Azure SignalR Service
1212

1313
The Application Firewall provides sophisticated control over client connections in a distributed system. Before diving into its functionality and setup, let's clarify what the Application Firewall does not do:
1414

articles/azure-web-pubsub/howto-configure-application-firewall.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Web PubSub Application Firewall (Preview)
2+
title: Web PubSub Application Firewall
33
description: An introduction about why and how to set up Application Firewall for Azure Web PubSub service
44
author: biqian
55
ms.service: azure-web-pubsub
@@ -8,7 +8,7 @@ ms.topic: how-to
88
ms.date: 07/10/2024
99
ms.author: biqian
1010
---
11-
# Application Firewall (Preview) for Azure Web PubSub Service
11+
# Application Firewall for Azure Web PubSub Service
1212

1313
The Application Firewall provides sophisticated control over client connections in a distributed system. Before diving into its functionality and setup, let's clarify what the Application Firewall does not do:
1414

-10 KB
Loading

articles/virtual-desktop/redirection-configure-drives-storage.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,56 @@ To test drive redirection:
239239
S on DESKTOP
240240
```
241241
242-
### Optional: Disable drive redirection on a local device
242+
## Improve performance of enumerating files and folders on redirected drives
243+
244+
When a user opens or lists the contents of a redirected drive, the remote session enumerates files and folders of the current directory. If you have a large number of files and folders on the redirected drives, the enumeration process can take a long time and impact the performance of the remote session. The time taken to enumerate depends on the round-trip time (RTT) between the local device and the remote session.
245+
246+
::: zone pivot="azure-virtual-desktop"
247+
For session hosts running Windows 11 24H2 with the [2025-03 Cumulative Update for Windows 11 (KB5053598)](https://support.microsoft.com/kb/KB5053598) or later, the performance of enumerating files and folders on redirected drives is greatly improved.
248+
249+
Once your session hosts have the correct version of Windows 11 and Cumulative Update, to enable the improved performance you need to:
250+
251+
1. Add the following registry key and value to each session host:
252+
253+
- **Key**: `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp`
254+
- **Type**: `REG_DWORD`
255+
- **Value name**: `fAllowQueryDirPrefetch`
256+
- **Value data**: `1`
257+
258+
1. Connect to a remote session using the latest version of Windows App for Windows or the Remote Desktop client for Windows. Only Windows is supported; other platforms aren't currently supported.
259+
::: zone-end
260+
261+
::: zone pivot="windows-365"
262+
For a Cloud PC running Windows 11 24H2 with the [2025-03 Cumulative Update for Windows 11 (KB5053598)](https://support.microsoft.com/kb/KB5053598) or later, the performance of enumerating files and folders on redirected drives is greatly improved.
263+
264+
Once your Cloud PC has the correct version of Windows 11 and Cumulative Update, to enable the improved performance you need to:
265+
266+
1. Add the following registry key and value to each Cloud PC:
267+
268+
- **Key**: `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp`
269+
- **Type**: `REG_DWORD`
270+
- **Value name**: `fAllowQueryDirPrefetch`
271+
- **Value data**: `1`
272+
273+
1. Connect to a remote session using the latest version of Windows App for Windows or the Remote Desktop client for Windows. Only Windows is supported; other platforms aren't currently supported.
274+
::: zone-end
275+
276+
::: zone pivot="dev-box"
277+
For a dev box running Windows 11 24H2 with the [2025-03 Cumulative Update for Windows 11 (KB5053598)](https://support.microsoft.com/kb/KB5053598) or later, the performance of enumerating files and folders on redirected drives is greatly improved.
278+
279+
Once your session hosts have the correct version of Windows 11 and Cumulative Update, to enable the improved performance you need to:
280+
281+
1. Add the following registry key and value to each dev box:
282+
283+
- **Key**: `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp`
284+
- **Type**: `REG_DWORD`
285+
- **Value name**: `fAllowQueryDirPrefetch`
286+
- **Value data**: `1`
287+
288+
1. Connect to a remote session using the latest version of Windows App for Windows or the Remote Desktop client for Windows. Only Windows is supported; other platforms aren't currently supported.
289+
::: zone-end
290+
291+
## Optional: Disable drive redirection on a local device
243292
244293
You can disable drive redirection on a local device to prevent the drives from being redirected between a remote session. This method is useful if you want to enable drive redirection for most users, but disable it for specific devices.
245294

includes/data-box-shipping-in-us-canada.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,23 @@
22
author: stevenmatthew
33
ms.service: azure-databox
44
ms.topic: include
5-
ms.date: 10/21/2021
5+
ms.date: 03/13/2025
66
ms.author: shaas
77
---
88

99
Take the following steps if returning the device in US or Canada.
1010

11-
1. Make sure that the device is powered off and cables are removed.
12-
2. Spool and securely place the power cord that was provided with device in the back of the device.
13-
3. Ensure that the shipping label is displayed on the E-ink display and schedule a pickup with your carrier. If the label is damaged or lost or not displayed on the E-ink display, contact Microsoft Support. If the Support suggests, then you can go to **Overview > Download shipping label** in the Azure portal. Download the shipping label and affix on the device.
14-
4. Schedule a pickup with UPS if returning the device. To schedule a pickup:
15-
16-
* Call the local UPS (country/region-specific toll free number).
17-
* In your call, quote the reverse shipment tracking number as shown in the E-ink display or your printed label. If you don't quote the tracking number, UPS will require an additional charge during pickup.
18-
* If any issues come up while you're scheduling a pickup, or you're asked to pay additional fees, contact Azure Data Box Operations. Send email to [[email protected]](mailto:[email protected]).
19-
20-
Instead of scheduling the pickup, you can also drop off the Data Box at the nearest drop-off location.
21-
4. Once the Data Box is picked up and scanned by your carrier, the order status in the portal updates to **Picked up**. A tracking ID is also displayed.
11+
**If you receive the device packaged in a box, retain the box, and DO NOT discard it**.
12+
1. Make sure the data copy to device is complete, and the **Prepare to ship** step is completed successfully.
13+
1. Note down the tracking number (shown as reference number on the Prepare to Ship page of the Data Box local web UI). The tracking number is available after the Prepare to Ship step completes successfully. **Download the shipping label from this page and paste on the packing box**. If you received a device without a box, ensure that the shipping label is displayed on the E-ink display. If the label is damaged or lost or not displayed on the E-ink display, contact Microsoft Support.
14+
1. Make sure that the device is powered off and cables are removed.
15+
1. Spool and securely place the power cord that was provided with device in the back of the device.
16+
1. **Package the device using the original box that was used for shipping. Ensure that the return label is included.**
17+
1. Schedule a pickup with UPS if returning the device. To schedule a pickup:
18+
- Call the local UPS (country/region-specific toll-free number).
19+
- In your call, quote the reverse shipment tracking number as shown in the E-ink display or your printed label. If you don't quote the tracking number, UPS will require an additional charge during pickup.
20+
- If any issues are encountered while scheduling a pickup, or you're asked to pay additional fees, contact Azure Data Box Operations. Send email to [email protected].
21+
Instead of scheduling the pickup, you can also drop off the Data Box at the nearest drop-off location.
22+
1. Once the Data Box is picked up and scanned by your carrier, the order status in the portal updates to **Picked up**. A tracking ID is also displayed.
2223

2324

0 commit comments

Comments
 (0)