Skip to content

Commit 4881181

Browse files
committed
Merge branch 'main' into release-ga-apim-graphql-resolvers
2 parents 831fc5c + 2aa5dd0 commit 4881181

File tree

117 files changed

+1918
-1124
lines changed

Some content is hidden

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

117 files changed

+1918
-1124
lines changed

.openpublishing.redirection.azure-monitor.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
{
22
"redirections": [
3-
{
3+
{
4+
"source_path_from_root": "/articles/azure-monitor/snapshot-debugger/snapshot-collector-release-notes.md",
5+
"redirect_url": "/azure/azure-monitor/snapshot-debugger/snapshot-debugger#release-notes-for-microsoftapplicationinsightssnapshotcollector",
6+
"redirect_document_id": false
7+
},
8+
{
49
"source_path_from_root": "/articles/azure-monitor/best-practices.md",
510
"redirect_url": "/azure/azure-monitor/getting-started",
611
"redirect_document_id": false

articles/active-directory/authentication/concept-authentication-phone-options.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ services: active-directory
66
ms.service: active-directory
77
ms.subservice: authentication
88
ms.topic: conceptual
9-
ms.date: 01/29/2023
9+
ms.date: 04/17/2023
1010

1111
ms.author: justinha
1212
author: justinha
@@ -44,7 +44,11 @@ Microsoft doesn't guarantee consistent SMS or voice-based Azure AD Multi-Factor
4444

4545
### Text message verification
4646

47-
With text message verification during SSPR or Azure AD Multi-Factor Authentication, an SMS is sent to the mobile phone number containing a verification code. To complete the sign-in process, the verification code provided is entered into the sign-in interface.
47+
With text message verification during SSPR or Azure AD Multi-Factor Authentication, a Short Message Service (SMS) text is sent to the mobile phone number containing a verification code. To complete the sign-in process, the verification code provided is entered into the sign-in interface.
48+
49+
Android users can enable Rich Communication Services (RCS) on their devices. RCS offers encryption and other improvements over SMS. For Android, MFA text messages may be sent over RCS rather than SMS. The MFA text message is similar to SMS, but RCS messages have more Microsoft branding and a verified checkmark so users know they can trust the message.
50+
51+
:::image type="content" source="media/concept-authentication-methods/brand.png" alt-text="Screenshot of Microsoft branding in RCS messages.":::
4852

4953
### Phone call verification
5054

63 KB
Loading

articles/active-directory/develop/includes/web-app/quickstart-aspnet.md

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ See [How the sample works](#how-the-sample-works) for an illustration.
2626
## Prerequisites
2727

2828
* An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
29-
* [Visual Studio 2019](https://visualstudio.microsoft.com/vs/)
29+
* [Visual Studio 2022](https://visualstudio.microsoft.com/vs/)
3030
* [.NET Framework 4.7.2+](https://dotnet.microsoft.com/download/visual-studio-sdks)
3131

3232
## Register and download the app
@@ -71,11 +71,11 @@ If you want to manually configure your application and code sample, use the foll
7171
3. Depending on the version of Visual Studio, you might need to right-click the project **AppModelv2-WebApp-OpenIDConnect-DotNet** and then select **Restore NuGet packages**.
7272
4. Open the Package Manager Console by selecting **View** > **Other Windows** > **Package Manager Console**. Then run `Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r`.
7373

74-
5. Edit *Web.config* and replace the parameters `ClientId`, `Tenant`, and `redirectUri` with:
75-
```xml
76-
<add key="ClientId" value="Enter_the_Application_Id_here" />
77-
<add key="Tenant" value="Enter_the_Tenant_Info_Here" />
78-
<add key="redirectUri" value="https://localhost:44368/" />
74+
5. Edit *appsettings.json* and replace the parameters `ClientId`, `Tenant`, and `redirectUri` with:
75+
```json
76+
"ClientId" :"Enter_the_Application_Id_here" />
77+
"TenantId": "Enter_the_Tenant_Info_Here" />
78+
"RedirectUri" :"https://localhost:44368/" />
7979
```
8080
In that code:
8181

@@ -100,48 +100,30 @@ This section gives an overview of the code required to sign in users. This overv
100100
You can set up the authentication pipeline with cookie-based authentication by using OpenID Connect in ASP.NET with OWIN middleware packages. You can install these packages by running the following commands in Package Manager Console within Visual Studio:
101101

102102
```powershell
103-
Install-Package Microsoft.Owin.Security.OpenIdConnect
103+
Install-Package Microsoft.Identity.Web.Owin
104+
Install-Package Microsoft.Identity.Web.MicrosoftGraph
104105
Install-Package Microsoft.Owin.Security.Cookies
105-
Install-Package Microsoft.Owin.Host.SystemWeb
106106
```
107107

108108
### OWIN startup class
109109

110110
The OWIN middleware uses a *startup class* that runs when the hosting process starts. In this quickstart, the *startup.cs* file is in the root folder. The following code shows the parameters that this quickstart uses:
111111

112112
```csharp
113-
public void Configuration(IAppBuilder app)
114-
{
115-
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
116-
117-
app.UseCookieAuthentication(new CookieAuthenticationOptions());
118-
app.UseOpenIdConnectAuthentication(
119-
new OpenIdConnectAuthenticationOptions
120-
{
121-
// Sets the client ID, authority, and redirect URI as obtained from Web.config
122-
ClientId = clientId,
123-
Authority = authority,
124-
RedirectUri = redirectUri,
125-
// PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it's using the home page
126-
PostLogoutRedirectUri = redirectUri,
127-
Scope = OpenIdConnectScope.OpenIdProfile,
128-
// ResponseType is set to request the code id_token, which contains basic information about the signed-in user
129-
ResponseType = OpenIdConnectResponseType.CodeIdToken,
130-
// ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
131-
// To only allow users from a single organization, set ValidateIssuer to true and the 'tenant' setting in Web.config to the tenant name
132-
// To allow users from only a list of specific organizations, set ValidateIssuer to true and use the ValidIssuers parameter
133-
TokenValidationParameters = new TokenValidationParameters()
134-
{
135-
ValidateIssuer = false // Simplification (see note below)
136-
},
137-
// OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to the OnAuthenticationFailed method
138-
Notifications = new OpenIdConnectAuthenticationNotifications
139-
{
140-
AuthenticationFailed = OnAuthenticationFailed
141-
}
142-
}
143-
);
144-
}
113+
public void Configuration(IAppBuilder app)
114+
{
115+
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
116+
117+
app.UseCookieAuthentication(new CookieAuthenticationOptions());
118+
OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();
119+
120+
app.AddMicrosoftIdentityWebApp(factory);
121+
factory.Services
122+
.Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
123+
.AddMicrosoftGraph()
124+
.AddInMemoryTokenCaches();
125+
factory.Build();
126+
}
145127
```
146128

147129
|Where | Description |
@@ -155,10 +137,6 @@ public void Configuration(IAppBuilder app)
155137
| `TokenValidationParameters` | A list of parameters for token validation. In this case, `ValidateIssuer` is set to `false` to indicate that it can accept sign-ins from any personal, work, or school account type. |
156138
| `Notifications` | A list of delegates that can be run on `OpenIdConnect` messages. |
157139

158-
159-
> [!NOTE]
160-
> Setting `ValidateIssuer = false` is a simplification for this quickstart. In real applications, validate the issuer. See the samples to understand how to do that.
161-
162140
### Authentication challenge
163141

164142
You can force a user to sign in by requesting an authentication challenge in your controller:
@@ -182,6 +160,24 @@ public void SignIn()
182160

183161
You can protect a controller or controller actions by using the `[Authorize]` attribute. This attribute restricts access to the controller or actions by allowing only authenticated users to access the actions in the controller. An authentication challenge will then happen automatically when an unauthenticated user tries to access one of the actions or controllers decorated by the `[Authorize]` attribute.
184162

163+
### Call Microsoft Graph from the controller
164+
165+
You can call Microsoft Graph from the controller by getting the instance of GraphServiceClient using the `GetGraphServiceClient` extension method on the controller, like in the following code:
166+
167+
```csharp
168+
try
169+
{
170+
var me = await this.GetGraphServiceClient().Me.Request().GetAsync();
171+
ViewBag.Username = me.DisplayName;
172+
}
173+
catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
174+
{
175+
HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
176+
return View();
177+
}
178+
```
179+
180+
185181
[!INCLUDE [Help and support](../../../../../includes/active-directory-develop-help-support-include.md)]
186182

187183
## Next steps

articles/active-directory/multi-tenant-organizations/cross-tenant-synchronization-configure.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,28 @@ $smssignin = Get-MgUserAuthenticationPhoneMethod -UserId $userId
522522
##### End the script
523523
```
524524

525+
#### Symptom - Users fail to provision with error "AzureActiveDirectoryForbidden"
526+
527+
Users in scope fail to provision. The provisioning logs details include the following error message:
528+
529+
```
530+
The provisioning service was forbidden from performing an operation on Azure Active Directory, which is unusual.
531+
A simultaneous change to the target object may have occurred, in which case, the operation might succeed when it is retried.
532+
Alternatively, the target of the operation, or one of its properties, may be mastered on-premises, in which case,
533+
the provisioning service is not permitted to update it, and the corresponding source entry should be removed from the provisioning service's scope.
534+
Otherwise, authorizations may have been customized in such a way as to prevent the provisioning service from modifying the target object or one of its properties;
535+
if so, then, again, the corresponding source entry should be removed from scope.
536+
This operation was retried 0 times.
537+
```
538+
539+
**Cause**
540+
541+
This error indicates the Guest invite settings in the target tenant are configured with the most restrictive setting: "No one in the organization can invite guest users including admins (most restrictive)".
542+
543+
**Solution**
544+
545+
Change the Guest invite settings in the target tenant to a less restrictive setting. For more information, see [Configure external collaboration settings](../external-identities/external-collaboration-settings-configure.md).
546+
525547
## Next steps
526548

527549
- [Tutorial: Reporting on automatic user account provisioning](../app-provisioning/check-status-user-account-provisioning.md)

articles/active-directory/reports-monitoring/howto-integrate-activity-logs-with-log-analytics.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,13 @@ Follow the steps below to send logs from Azure Active Directory to Azure Monitor
6868
* `ADFSSignInLogs` Active Directory Federation Services (ADFS)
6969
* `RiskyUsers`
7070
* `UserRiskEvents`
71-
71+
* `RiskyServicePrincipals`
72+
* `ServicePrincipalRiskEvents`
7273

73-
The following logs are in preview but still visible in Azure AD. At this time, selecting these options will not add new logs to your workspace unless your organization was included in the preview.
74-
75-
* `AADServicePrincipalRiskEvents`
74+
1. The following logs are in preview but still visible in Azure AD. At this time, selecting these options will not add new logs to your workspace unless your organization was included in the preview.
7675
* `EnrichedOffice365AuditLogs`
7776
* `MicrosoftGraphActivityLogs`
7877
* `NetworkAccessTrafficLogs`
79-
* `RiskyServicePrincipals`
8078

8179
1. Select the **Destination details** for where you'd like to send the logs. Choose any or all of the following destinations. Additional fields appear, depending on your selection.
8280

@@ -96,3 +94,5 @@ If you do not see logs appearing in the selected destination after 15 minutes, s
9694
* [Analyze Azure AD activity logs with Azure Monitor logs](howto-analyze-activity-logs-log-analytics.md)
9795
* [Learn about the data sources you can analyze with Azure Monitor](../../azure-monitor/data-sources.md)
9896
* [Automate creating diagnostic settings with Azure Policy](../../azure-monitor/essentials/diagnostic-settings-policy.md)
97+
98+

articles/aks/azure-csi-disk-storage-provision.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -130,30 +130,30 @@ Once the persistent volume claim has been created and the disk successfully prov
130130

131131
1. Create a file named `azure-pvc-disk.yaml`, and copy in the following manifest:
132132

133-
```yaml
134-
kind: Pod
135-
apiVersion: v1
136-
metadata:
137-
name: mypod
138-
spec:
139-
containers:
140-
- name: mypod
133+
```yaml
134+
kind: Pod
135+
apiVersion: v1
136+
metadata:
137+
name: mypod
138+
spec:
139+
containers:
140+
- name: mypod
141141
image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
142142
resources:
143143
requests:
144-
cpu: 100m
145-
memory: 128Mi
144+
cpu: 100m
145+
memory: 128Mi
146146
limits:
147147
cpu: 250m
148148
memory: 256Mi
149149
volumeMounts:
150-
- mountPath: "/mnt/azure"
151-
name: volume
152-
volumes:
153-
- name: volume
154-
persistentVolumeClaim:
155-
claimName: azure-managed-disk
156-
```
150+
- mountPath: "/mnt/azure"
151+
name: volume
152+
volumes:
153+
- name: volume
154+
persistentVolumeClaim:
155+
claimName: azure-managed-disk
156+
```
157157

158158
2. Create the pod with the [kubectl apply][kubectl-apply] command, as shown in the following example:
159159

articles/app-service/operating-system-functionality.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ At its core, App Service is a service running on top of the Azure PaaS (platform
4747
- An operating system drive (`%SystemDrive%`), whose size varies depending on the size of the VM.
4848
- A resource drive (`%ResourceDrive%`) used by App Service internally.
4949

50+
A best practice is to always use the environment variables `%SystemDrive%` and `%ResourceDrive%` instead of hard-coded file paths. The root path returned from these two environment variables has shifted over time from `d:\` to `c:\`. However, older applications hard-coded with file path references to `d:\` will continue to work because the App Service platform automatically remaps `d:\` to instead point at `c:\`. As noted above, it is highly recommended to always use the environment variables when building file paths and avoid confusion over platform changes to the default root file path.
51+
5052
It is important to monitor your disk utilization as your application grows. If the disk quota is reached, it can have adverse effects to your application. For example:
5153

5254
- The app may throw an error indicating not enough space on the disk.

articles/azure-app-configuration/concept-private-endpoint.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Service account owners can manage consent requests and private endpoints through
3333

3434
### Private endpoints for App Configuration
3535

36-
When creating a private endpoint, you must specify the App Configuration store to which it connects. If you have multiple App Configuration stores, you need a separate private endpoint for each store.
36+
When creating a private endpoint, you must specify the App Configuration store to which it connects. If you enable the geo-replication for an App Configuration store, you can connect to all replicas of the store using the same private endpoint. If you have multiple App Configuration stores, you need a separate private endpoint for each store.
3737

3838
### Connecting to private endpoints
3939

@@ -55,7 +55,7 @@ When you create a private endpoint, the DNS CNAME resource record for the config
5555
5656
When you resolve the endpoint URL from within the VNet hosting the private endpoint, it resolves to the private endpoint of the store. When resolved from outside the VNet, the endpoint URL resolves to the public endpoint. When you create a private endpoint, the public endpoint is disabled.
5757
58-
If you are using a custom DNS server on your network, clients must be able to resolve the fully qualified domain name (FQDN) for the service endpoint to the private endpoint IP address. Configure your DNS server to delegate your private link subdomain to the private DNS zone for the VNet, or configure the A records for `[Your-store-name].privatelink.azconfig.io` with the private endpoint IP address.
58+
If you are using a custom DNS server on your network, clients must be able to resolve the fully qualified domain name (FQDN) for the service endpoint to the private endpoint IP address. Configure your DNS server to delegate your private link subdomain to the private DNS zone for the VNet, or configure the A records for `[Your-store-name].privatelink.azconfig.io` (or `[Your-store-name]-[replica-name].privatelink.azconfig.io` for a replica if the geo-replication is enabled) with the private endpoint IP address.
5959
6060
> [!TIP]
6161
> When using a custom or on-premises DNS server, you should configure your DNS server to resolve the store name in the `privatelink` subdomain to the private endpoint IP address. You can do this by delegating the `privatelink` subdomain to the private DNS zone of the VNet, or configuring the DNS zone on your DNS server and adding the DNS A records.

0 commit comments

Comments
 (0)