Skip to content

Commit b503c4e

Browse files
authored
Merge pull request #183420 from MicrosoftDocs/master
Merge master to live, 4 AM
2 parents 4847c55 + 5491a3d commit b503c4e

File tree

201 files changed

+1317
-979
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

201 files changed

+1317
-979
lines changed

articles/active-directory/authentication/howto-mfa-nps-extension-errors.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ manager: daveba
1414
ms.reviewer: michmcla
1515

1616
ms.collection: M365-identity-device-management
17-
ms.custom: has-adal-ref
17+
ms.custom:
1818
---
1919
# Resolve error messages from the NPS extension for Azure AD Multi-Factor Authentication
2020

@@ -26,7 +26,7 @@ If you encounter errors with the NPS extension for Azure AD Multi-Factor Authent
2626
| ---------- | --------------------- |
2727
| **CONTACT_SUPPORT** | [Contact support](#contact-microsoft-support), and mention the list of steps for collecting logs. Provide as much information as you can about what happened before the error, including tenant ID, and user principal name (UPN). |
2828
| **CLIENT_CERT_INSTALL_ERROR** | There may be an issue with how the client certificate was installed or associated with your tenant. Follow the instructions in [Troubleshooting the MFA NPS extension](howto-mfa-nps-extension.md#troubleshooting) to investigate client cert problems. |
29-
| **ESTS_TOKEN_ERROR** | Follow the instructions in [Troubleshooting the MFA NPS extension](howto-mfa-nps-extension.md#troubleshooting) to investigate client cert and ADAL token problems. |
29+
| **ESTS_TOKEN_ERROR** | Follow the instructions in [Troubleshooting the MFA NPS extension](howto-mfa-nps-extension.md#troubleshooting) to investigate client cert and security token problems. |
3030
| **HTTPS_COMMUNICATION_ERROR** | The NPS server is unable to receive responses from Azure AD MFA. Verify that your firewalls are open bidirectionally for traffic to and from https://adnotifications.windowsazure.com |
3131
| **HTTP_CONNECT_ERROR** | On the server that runs the NPS extension, verify that you can reach `https://adnotifications.windowsazure.com` and `https://login.microsoftonline.com/`. If those sites don't load, troubleshoot connectivity on that server. |
3232
| **NPS Extension for Azure AD MFA:** <br> NPS Extension for Azure AD MFA only performs Secondary Auth for Radius requests in AccessAccept State. Request received for User username with response state AccessReject, ignoring request. | This error usually reflects an authentication failure in AD or that the NPS server is unable to receive responses from Azure AD. Verify that your firewalls are open bidirectionally for traffic to and from `https://adnotifications.windowsazure.com` and `https://login.microsoftonline.com` using ports 80 and 443. It is also important to check that on the DIAL-IN tab of Network Access Permissions, the setting is set to "control access through NPS Network Policy". This error can also trigger if the user is not assigned a license. |
@@ -129,4 +129,4 @@ To collect debug logs for support diagnostics, use the following steps on the NP
129129
```
130130

131131
5. Open Registry Editor and browse to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AzureMfa set **VERBOSE_LOG** to **FALSE**
132-
6. Zip the contents of the C:\NPS folder and attach the zipped file to the support case.
132+
6. Zip the contents of the C:\NPS folder and attach the zipped file to the support case.

articles/active-directory/authentication/howto-mfa-nps-extension.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ manager: daveba
1414
ms.reviewer: michmcla
1515

1616
ms.collection: M365-identity-device-management
17-
ms.custom: has-adal-ref
17+
ms.custom:
1818
---
1919
# Integrate your existing Network Policy Server (NPS) infrastructure with Azure AD Multi-Factor Authentication
2020

@@ -361,7 +361,7 @@ After you run this command, go to the root of your *C:* drive, locate the file,
361361

362362
Check that your password hasn't expired. The NPS extension doesn't support changing passwords as part of the sign-in workflow. Contact your organization's IT Staff for further assistance.
363363

364-
### Why are my requests failing with ADAL token error?
364+
### Why are my requests failing with security token error?
365365

366366
This error could be due to one of several reasons. Use the following steps to troubleshoot:
367367

articles/active-directory/develop/msal-client-applications.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ ms.custom: aaddev, has-adal-ref
1919

2020
# Public client and confidential client applications
2121

22-
The Microsoft Authentication Library (MSAL) defines two types of clients: public clients and confidential clients. The two client types are distinguished by their ability to authenticate securely with the authorization server and maintain the confidentiality of their client credentials. In contrast, Azure Active Directory Authentication Library (ADAL) uses what's called _authentication context_ (which is a connection to Azure Active Directory).
22+
The Microsoft Authentication Library (MSAL) defines two types of clients: public clients and confidential clients. The two client types are distinguished by their ability to authenticate securely with the authorization server and maintain the confidentiality of their client credentials.
2323

2424
- **Confidential client applications** are apps that run on servers (web apps, web API apps, or even service/daemon apps). They're considered difficult to access, and for that reason can keep an application secret. Confidential clients can hold configuration-time secrets. Each instance of the client has a distinct configuration (including client ID and client secret). These values are difficult for end users to extract. A web app is the most common confidential client. The client ID is exposed through the web browser, but the secret is passed only in the back channel and never directly exposed.
2525

articles/active-directory/develop/msal-net-web-browsers.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ For desktop applications, however, launching a System Webview leads to a subpar
137137

138138
## Enable embedded webviews on iOS and Android
139139

140-
You can also enable embedded webviews in Xamarin.iOS and Xamarin.Android apps. Starting with MSAL.NET 2.0.0-preview, MSAL.NET also supports using the **embedded** webview option. For ADAL.NET, embedded webview is the only option supported.
140+
You can also enable embedded webviews in Xamarin.iOS and Xamarin.Android apps. Starting with MSAL.NET 2.0.0-preview, MSAL.NET also supports using the **embedded** webview option.
141141

142142
As a developer using MSAL.NET targeting Xamarin, you may choose to use either embedded webviews or system browsers. This is your choice depending on the user experience and security concerns you want to target.
143143

articles/active-directory/saas-apps/netdocuments-tutorial.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ Follow these steps to enable Azure AD SSO in the Azure portal.
101101
|
102102

103103
> [!NOTE]
104-
> These values are not real. Update these values with the actual Sign on URL and Reply URL. Repository ID is a value starting with **CA-** followed by 8 character code associated with your NetDocuments Repository. You can check the [NetDocuments Federated Identity support document](https://netdocuments.force.com/NetDocumentsSupport/s/en-us/articles/205220410-Federated-Identity-Login) for more information. Alternatively you can contact [NetDocuments Client support team](https://netdocuments.force.com/NetDocumentsSupport/s/) to get these values if you have difficulties configuring using the above information . You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
104+
> These values are not real. Update these values with the actual Sign on URL and Reply URL. Repository ID is a value starting with **CA-** followed by 8 character code associated with your NetDocuments Repository. You can check the [NetDocuments Federated Identity support document](https://netdocuments.force.com/NetDocumentsSupport/s/article/205220410) for more information. Alternatively you can contact [NetDocuments Client support team](https://netdocuments.force.com/NetDocumentsSupport/s/) to get these values if you have difficulties configuring using the above information . You can also refer to the patterns shown in the **Basic SAML Configuration** section in the Azure portal.
105105

106106
1. NetDocuments application expects the SAML assertions in a specific format, which requires you to add custom attribute mappings to your SAML token attributes configuration. The following screenshot shows the list of default attributes, where as **nameidentifier** is mapped with **user.userprincipalname**. NetDocuments application expects **nameidentifier** to be mapped with **ObjectID** or any other claim which is applicable to your Organization as **nameidentifier**, so you need to edit the attribute mapping by clicking on **Edit** icon and change the attribute mapping.
107107

articles/azure-government/documentation-government-get-started-connect-to-storage.md

Lines changed: 42 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -52,91 +52,52 @@ These endpoint differences must be taken into account when you connect to storag
5252

5353
#### C#
5454

55-
1. Open up Visual Studio and create a new project. Add a reference to the [WindowsAzure.Storage NuGet package](https://www.nuget.org/packages/WindowsAzure.Storage/). This NuGet package contains classes you will need to connect to your storage account.
55+
1. Open Visual Studio and create a new project. Add a reference to the [Azure Tables client library for .NET](https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/tables/Azure.Data.Tables). This package contains classes for connecting to your Storage Table account.
5656

5757
2. Add these two lines of C# code to connect:
5858
```cs
59-
var credentials = new StorageCredentials(storageAccountName, storageAccountKey);
60-
61-
var storageAccount = new CloudStorageAccount(credentials, "core.usgovcloudapi.net", useHttps: true);  
59+
var credentials = new TableSharedKeyCredential(storageAccountName, Environment.GetEnvironmentVariable("STORAGE_ACCOUNT_KEY"));
60+
var storageTableUri = Environment.GetEnvironmentVariable("STORAGE_TABLE_URI");
61+
var tableServiceClient = new TableServiceClient(new Uri(storageTableUri), credentials);
6262
```
6363

64-
- Notice on the second line you had to use a [particular constructor for the CloudStorageAccount](/dotnet/api/microsoft.azure.storage.cloudstorageaccount.-ctor), enabling you to explicitly pass in the endpoint suffix of "core.usgovcloudapi.net". This constructor is the **only difference** required in your code to connect to storage in Azure Government as compared with commercial Azure.
6564

66-
3. At this point, you can interact with storage as you normally would. For example, if you want to retrieve a specific record from table storage, you could do it like this:
65+
3. At this point, we can interact with Storage as we normally would. For example, if we want to retrieve a specific entity from our Table Storage, we could do it like this:
6766

6867
```cs
69-
var tableClient = storageAccount.CreateCloudTableClient();
70-
71-
var table = tableClient.GetTableReference("Contacts");
72-
var retrieveOperation = TableOperation.Retrieve<ContactEntity>("gov-partition1", "0fb52a6c-3784-4dc5-aa6d-ecda4426dbda");
73-
var result = await table.ExecuteAsync(retrieveOperation);
74-
var contact = result.Result as ContactEntity;
68+
var tableClient = tableServiceClient.GetTableClient("Contacts");
69+
ContactEntity contact = tableClient.GetEntity<ContactEntity>("gov-partition1", "0fb52a6c-3784-4dc5-aa6d-ecda4426dbda");
7570
Console.WriteLine($"Contact: {contact.FirstName} {contact.LastName}");
7671
```
7772

7873
#### Java
79-
1. Download the [Azure Storage SDK for Java](https://github.com/azure/azure-storage-java) and configure your project correctly.
80-
2. Create a `CustomerEntity` class in your project and paste the code below:
81-
82-
```java
83-
import com.microsoft.azure.storage.table.TableServiceEntity;
84-
85-
public class CustomerEntity extends TableServiceEntity {
86-
public CustomerEntity(String lastName, String firstName) {
87-
this.partitionKey = lastName;
88-
this.rowKey = firstName;
89-
}
90-
91-
public CustomerEntity() { }
92-
93-
String email;
94-
95-
public String getEmail() {
96-
return this.email;
97-
}
98-
99-
public void setEmail(String email) {
100-
this.email = email;
101-
}
102-
103-
}
104-
```
105-
3. Create a "test" class where you'll access Azure Table Storage using the Azure Storage API.
106-
Copy and paste the code below, and **paste** your Storage Account connection string into the `storageConnectionString` variable.
107-
74+
1. Download the [Azure Tables client library for Java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/tables/azure-data-tables) and configure your project correctly.
75+
2. Create a "test" class where we'll access Azure Table Storage using the Azure Tables client library.
76+
Copy and paste the code below, and **paste** your Storage Account connection string into the `AZURE_STORAGE_CONNECTION_STRING` environment variable.
10877
```java
109-
import com.microsoft.azure.storage.*;
110-
import com.microsoft.azure.storage.table.*;
111-
78+
import com.azure.data.tables.implementation.ModelHelper;
79+
import com.azure.data.tables.models.*;
80+
import java.util.HashMap;
11281
public class test {
113-
114-
public static final String storageConnectionString = //Paste in your Storage Account connection string
115-
82+
public static final String storageConnectionString = System.getEnv("AZURE_STORAGE_CONNECTION_STRING");
11683
public static void main(String[] args) {
117-
11884
try
11985
{
120-
// Retrieve storage account from connection-string.
121-
CloudStorageAccount storageAccount =
122-
CloudStorageAccount.parse(storageConnectionString);
123-
124-
// Create the table client.
125-
CloudTableClient tableClient = storageAccount.createCloudTableClient();
126-
86+
// Create the table service client.
87+
TableServiceClient tableServiceClient = new TableServiceClientBuilder()
88+
.connectionString(storageConnectionString)
89+
.buildClient();
12790
// Create the table if it doesn't exist.
12891
String tableName = "Contacts";
129-
CloudTable cloudTable = tableClient.getTableReference(tableName);
130-
cloudTable.createIfNotExists();
92+
TableClient tableClient = tableServiceClient.createTableIfNotExists(tableName);
13193
// Create a new customer entity.
132-
CustomerEntity customer1 = new CustomerEntity("Brown", "Walter");
133-
customer1.setEmail("[email protected]");
134-
135-
// Create an operation to add the new customer to the people table.
136-
TableOperation insertCustomer1 = TableOperation.insertOrReplace(customer1);
137-
138-
// Submit the operation to the table service.
139-
cloudTable.execute(insertCustomer1);
94+
TableEntity customer1 = ModelHelper.createEntity(new HashMap<String, Object>() {{
95+
put("PartitionKey", "Brown");
96+
put("RowKey", "Walter");
97+
put("Email", "[email protected]");
98+
}});
99+
// Insert table entry into table
100+
tableClient.createEntity(customer1);
140101
}
141102
catch (Exception e)
142103
{
@@ -148,32 +109,31 @@ These endpoint differences must be taken into account when you connect to storag
148109
```
149110

150111
#### Node.js
151-
1. Download the [Azure Storage SDK for Node.js](https://github.com/Azure/azure-sdk-for-node) and [configure your application](../storage/blobs/storage-quickstart-blobs-nodejs.md#configure-your-storage-connection-string) correctly.
112+
1. Download the [Azure Storage Blob client library for Node.js](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/storage/storage-blob) and configure your application correctly.
152113
2. The following code below connects to Azure Blob Storage and creates a Container using the Azure Storage API.
153-
**Paste** your Azure Storage account connection string into the `storageConnectionString` variable below.
114+
**Paste** your Azure Storage account connection string into the `AZURE_STORAGE_CONNECTION_STRING` environment variable.
154115

155116
```javascript
156-
var azure = require('azure-storage');
157-
var storageConnectionString = //Paste Azure Storage connection string here
158-
var blobSvc = azure.createBlobService(storageConnectionString);
159-
blobSvc.createContainerIfNotExists('testing', function(error, result, response){
160-
if(!error){
161-
// Container exists and is private
162-
}
163-
});
117+
var { BlobServiceClient } = require("@azure/storage-blob");
118+
var storageConnectionString = process.env["AZURE_STORAGE_CONNECTION_STRING"];
119+
var blobServiceClient = BlobServiceClient.fromConnectionString(storageConnectionString);
120+
var containerClient = blobServiceClient.getContainerClient('testing');
121+
containerClient.createIfNotExists();
164122
```
165123

166124
#### Python
167-
1. Download the [Azure Storage SDK for Python](https://github.com/Azure/azure-storage-python).
168-
2. When using the Storage SDK for Python to connect to Azure Government, you **must separately define an "endpoint_suffix" parameter**. Paste in your Azure storage account name and key in the placeholders below.
125+
1. Download the [Azure Storage Blob client library for Python](https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/storage/azure-storage-blob).
126+
2. When using the Storage library for Python to connect to Azure Government, paste your Azure storage connection string in the `AZURE_STORAGE_CONNECTION_STRING` environment variable.
169127

170128
```python
171-
# Create the BlockBlockService that is used to call the Blob service for the storage account
172-
block_blob_service = BlockBlobService(account_name='#your account name', account_key='#your account key', endpoint_suffix="core.usgovcloudapi.net")
129+
# Create the BlobServiceClient that is used to call the Blob service for the storage account
130+
connection_string = os.getenv("AZURE_STORAGE_CONNECTION_STRING")
131+
blob_service_client = BlobServiceClient.from_connection_string(conn_str=connection_string)
173132
container_name ='ml-gov-demo'
174-
generator = block_blob_service.list_blobs(container_name)
133+
container = blob_service_client.get_container_client(container=container_name)
134+
generator = container.list_blobs()
175135
for blob in generator:
176-
print(blob.name)
136+
print("\t Blob name: " + blob.name)
177137
```
178138

179139
#### PHP
@@ -214,3 +174,4 @@ These endpoint differences must be taken into account when you connect to storag
214174
- Read more about [Azure Storage](../storage/index.yml).
215175
- Subscribe to the [Azure Government blog](https://blogs.msdn.microsoft.com/azuregov/)
216176
- Get help on Stack Overflow by using the [azure-gov](https://stackoverflow.com/questions/tagged/azure-gov) tag
177+

articles/azure-signalr/signalr-resource-faq.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,9 @@ sections:
4848
- question: |
4949
Can I configure the transports available in Azure SignalR Service on the server side with ASP.NET Core SignalR? For example, can I disable WebSocket transport?
5050
answer: |
51-
No.
51+
Yes. See [Transport Configuration](https://github.com/Azure/azure-signalr/blob/dev/docs/advanced-topics/transport-configuration.md) for how to configure.
5252
53-
Azure SignalR Service provides all three transports that ASP.NET Core SignalR supports by default. It's not configurable. Azure SignalR Service will handle connections and transports for all client connections.
54-
55-
You can configure client-side transports as documented in [ASP.NET Core SignalR configuration](/aspnet/core/signalr/configuration#configure-allowed-transports-1).
53+
You can also configure client-side transports as documented in [ASP.NET Core SignalR configuration](/aspnet/core/signalr/configuration#configure-allowed-transports-1).
5654
5755
- question: |
5856
What is the meaning of metrics like message count or connection count shown in the Azure portal? Which kind of aggregation type should I choose?

0 commit comments

Comments
 (0)