Skip to content

Commit d8bb188

Browse files
authored
Merge pull request #195117 from MicrosoftDocs/main
4/14 AM Publish
2 parents aab5f00 + ccfd08c commit d8bb188

File tree

36 files changed

+272
-95
lines changed

36 files changed

+272
-95
lines changed

articles/active-directory-domain-services/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@
9191
href: migrate-from-classic-vnet.md
9292
- name: Change SKU
9393
href: change-sku.md
94+
- name: Retrieve data
95+
href: how-to-data-retrieval.md
9496
- name: Secure Azure AD DS
9597
items:
9698
- name: Secure your managed domain
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
---
2+
title: Instructions for data retrieval from Azure Active Directory Domain Services | Microsoft Docs
3+
description: Learn how to retrieve data from Azure Active Directory Domain Services (Azure AD DS).
4+
services: active-directory-ds
5+
author: justinha
6+
manager: karenhoran
7+
8+
ms.service: active-directory
9+
ms.subservice: domain-services
10+
ms.workload: identity
11+
ms.topic: conceptual
12+
ms.date: 04/14/2022
13+
ms.author: justinha
14+
ms.reviewer: manthanm
15+
---
16+
17+
# Azure AD DS instructions for data retrieval
18+
19+
This document describes how to retrieve data from Azure Active Directory Domain Services (Azure AD DS).
20+
21+
[!INCLUDE [active-directory-app-provisioning.md](../../includes/gdpr-intro-sentence.md)]
22+
23+
## Use Azure Active Directory to create, read, update, and delete user objects
24+
25+
You can create a user in the Azure AD portal or by using Graph PowerShell or Graph API. You can also read, update, and delete users. The next sections show how to do these operations in the Azure AD portal.
26+
27+
### Create, read, or update a user
28+
29+
You can create a new user using the Azure Active Directory portal.
30+
To add a new user, follow these steps:
31+
32+
1. Sign in to the [Azure portal](https://portal.azure.com/) in the User Administrator role for the organization.
33+
34+
1. Search for and select *Azure Active Directory* from any page.
35+
36+
1. Select **Users**, and then select **New user**.
37+
38+
![Add a user through Users - All users in Azure AD](./media/tutorial-create-management-vm/add-user-in-users-all-users.png)
39+
40+
1. On the **User** page, enter information for this user:
41+
42+
- **Name**. Required. The first and last name of the new user. For example, *Mary Parker*.
43+
44+
- **User name**. Required. The user name of the new user. For example, `[email protected]`.
45+
46+
- **Groups**. Optionally, you can add the user to one or more existing groups.
47+
48+
- **Directory role**: If you require Azure AD administrative permissions for the user, you can add them to an Azure AD role.
49+
50+
- **Job info**: You can add more information about the user here.
51+
52+
1. Copy the autogenerated password provided in the **Password** box. You'll need to give this password to the user to sign in for the first time.
53+
54+
1. Select **Create**.
55+
56+
The user is created and added to your Azure AD organization.
57+
58+
To read or update a user, search for and select the user such as, _Mary Parker_. Change any property and click **Save**.
59+
60+
### Delete a user
61+
62+
To delete a user, follow these steps:
63+
64+
1. Search for and select the user you want to delete from your Azure AD tenant. For example, _Mary Parker_.
65+
66+
1. Select **Delete user**.
67+
68+
![Users - All users page with Delete user highlighted](./media/tutorial-create-management-vm/delete-user-all-users-blade.png)
69+
70+
71+
The user is deleted and no longer appears on the **Users - All users** page. The user can be seen on the **Deleted users** page for the next 30 days and can be restored during that time.
72+
73+
When a user is deleted, any licenses consumed by the user are made available for other users.
74+
75+
## Use RSAT tools to connect to an Azure AD DS managed domain and view users
76+
77+
Sign in to an administrative workstation with a user account that's a member of the *AAD DC Administrators* group. The following steps require installation of [Remote Server Administration Tools (RSAT)](tutorial-create-management-vm.md#install-active-directory-administrative-tools).
78+
79+
1. From the **Start** menu, select **Windows Administrative Tools**. The Active Directory Administration Tools are listed.
80+
81+
![List of Administrative Tools installed on the server](./media/tutorial-create-management-vm/list-admin-tools.png)
82+
83+
1. Select **Active Directory Administrative Center**.
84+
1. To explore the managed domain, choose the domain name in the left pane, such as *aaddscontoso*. Two containers named *AADDC Computers* and *AADDC Users* are at the top of the list.
85+
86+
![List the available containers part of the managed domain](./media/tutorial-create-management-vm/active-directory-administrative-center.png)
87+
88+
1. To see the users and groups that belong to the managed domain, select the **AADDC Users** container. The user accounts and groups from your Azure AD tenant are listed in this container.
89+
90+
In the following example output, a user account named *Contoso Admin* and a group for *AAD DC Administrators* are shown in this container.
91+
92+
![View the list of Azure AD DS domain users in the Active Directory Administrative Center](./media/tutorial-create-management-vm/list-azure-ad-users.png)
93+
94+
1. To see the computers that are joined to the managed domain, select the **AADDC Computers** container. An entry for the current virtual machine, such as *myVM*, is listed. Computer accounts for all devices that are joined to the managed domain are stored in this *AADDC Computers* container.
95+
96+
You can also use the *Active Directory Module for Windows PowerShell*, installed as part of the administrative tools, to manage common actions in your managed domain.
97+
98+
## Next steps
99+
* [Azure AD DS Overview](overview.md)
66.6 KB
Loading
29 KB
Loading

articles/api-management/api-management-sample-send-request.md

Lines changed: 51 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Using API Management service to generate HTTP requests
33
description: Learn to use request and response policies in API Management to call external services from your API
44
services: api-management
55
documentationcenter: ''
6-
author: dlepow
6+
author: adrianhall
77
manager: erikre
88
editor: ''
99

@@ -12,8 +12,8 @@ ms.service: api-management
1212
ms.topic: article
1313
ms.tgt_pltfrm: na
1414
ms.workload: na
15-
ms.date: 12/15/2016
16-
ms.author: danlep
15+
ms.date: 04/14/2022
16+
ms.author: adhal
1717

1818
---
1919
# Using external services from the Azure API Management service
@@ -29,26 +29,26 @@ The following example demonstrates how to send a message to a Slack chat room if
2929

3030
```xml
3131
<choose>
32-
<when condition="@(context.Response.StatusCode >= 500)">
33-
<send-one-way-request mode="new">
34-
<set-url>https://hooks.slack.com/services/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</set-url>
35-
<set-method>POST</set-method>
36-
<set-body>@{
37-
return new JObject(
38-
new JProperty("username","APIM Alert"),
39-
new JProperty("icon_emoji", ":ghost:"),
40-
new JProperty("text", String.Format("{0} {1}\nHost: {2}\n{3} {4}\n User: {5}",
41-
context.Request.Method,
42-
context.Request.Url.Path + context.Request.Url.QueryString,
43-
context.Request.Url.Host,
44-
context.Response.StatusCode,
45-
context.Response.StatusReason,
46-
context.User.Email
47-
))
48-
).ToString();
49-
}</set-body>
50-
</send-one-way-request>
51-
</when>
32+
<when condition="@(context.Response.StatusCode >= 500)">
33+
<send-one-way-request mode="new">
34+
<set-url>https://hooks.slack.com/services/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</set-url>
35+
<set-method>POST</set-method>
36+
<set-body>@{
37+
return new JObject(
38+
new JProperty("username","APIM Alert"),
39+
new JProperty("icon_emoji", ":ghost:"),
40+
new JProperty("text", String.Format("{0} {1}\nHost: {2}\n{3} {4}\n User: {5}",
41+
context.Request.Method,
42+
context.Request.Url.Path + context.Request.Url.QueryString,
43+
context.Request.Url.Host,
44+
context.Response.StatusCode,
45+
context.Response.StatusReason,
46+
context.User.Email
47+
))
48+
).ToString();
49+
}</set-body>
50+
</send-one-way-request>
51+
</when>
5252
</choose>
5353
```
5454

@@ -144,17 +144,17 @@ At the end, you get the following policy:
144144
</send-request>
145145

146146
<choose>
147-
<!-- Check active property in response -->
148-
<when condition="@((bool)((IResponse)context.Variables["tokenstate"]).Body.As<JObject>()["active"] == false)">
149-
<!-- Return 401 Unauthorized with http-problem payload -->
150-
<return-response response-variable-name="existing response variable">
151-
<set-status code="401" reason="Unauthorized" />
152-
<set-header name="WWW-Authenticate" exists-action="override">
153-
<value>Bearer error="invalid_token"</value>
154-
</set-header>
155-
</return-response>
156-
</when>
157-
</choose>
147+
<!-- Check active property in response -->
148+
<when condition="@((bool)((IResponse)context.Variables["tokenstate"]).Body.As<JObject>()["active"] == false)">
149+
<!-- Return 401 Unauthorized with http-problem payload -->
150+
<return-response response-variable-name="existing response variable">
151+
<set-status code="401" reason="Unauthorized" />
152+
<set-header name="WWW-Authenticate" exists-action="override">
153+
<value>Bearer error="invalid_token"</value>
154+
</set-header>
155+
</return-response>
156+
</when>
157+
</choose>
158158
<base />
159159
</inbound>
160160
```
@@ -198,19 +198,20 @@ Once you have this information, you can make requests to all the backend systems
198198
</send-request>
199199

200200
<send-request mode="new" response-variable-name="throughputdata" timeout="20" ignore-error="true">
201-
<set-url>@($"https://production.acme.com/throughput?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")</set-url>
201+
<set-url>@($"https://production.acme.com/throughput?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")</set-url>
202202
<set-method>GET</set-method>
203203
</send-request>
204204

205205
<send-request mode="new" response-variable-name="accidentdata" timeout="20" ignore-error="true">
206-
<set-url>@($"https://production.acme.com/accidentdata?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")</set-url>
206+
<set-url>@($"https://production.acme.com/accidentdata?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")</set-url>
207207
<set-method>GET</set-method>
208208
</send-request>
209209
```
210210

211-
These requests execute in sequence, which is not ideal.
211+
API Management will send these requests sequentially.
212212

213213
### Responding
214+
214215
To construct the composite response, you can use the [return-response](./api-management-advanced-policies.md#ReturnResponse) policy. The `set-body` element can use an expression to construct a new `JObject` with all the component representations embedded as properties.
215216

216217
```xml
@@ -233,10 +234,9 @@ The complete policy looks as follows:
233234

234235
```xml
235236
<policies>
236-
<inbound>
237-
238-
<set-variable name="fromDate" value="@(context.Request.Url.Query["fromDate"].Last())">
239-
<set-variable name="toDate" value="@(context.Request.Url.Query["toDate"].Last())">
237+
<inbound>
238+
<set-variable name="fromDate" value="@(context.Request.Url.Query["fromDate"].Last())">
239+
<set-variable name="toDate" value="@(context.Request.Url.Query["toDate"].Last())">
240240

241241
<send-request mode="new" response-variable-name="revenuedata" timeout="20" ignore-error="true">
242242
<set-url>@($"https://accounting.acme.com/salesdata?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")"</set-url>
@@ -249,12 +249,12 @@ The complete policy looks as follows:
249249
</send-request>
250250

251251
<send-request mode="new" response-variable-name="throughputdata" timeout="20" ignore-error="true">
252-
<set-url>@($"https://production.acme.com/throughput?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")"</set-url>
252+
<set-url>@($"https://production.acme.com/throughput?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")"</set-url>
253253
<set-method>GET</set-method>
254254
</send-request>
255255

256256
<send-request mode="new" response-variable-name="accidentdata" timeout="20" ignore-error="true">
257-
<set-url>@($"https://production.acme.com/accidentdata?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")"</set-url>
257+
<set-url>@($"https://production.acme.com/accidentdata?from={(string)context.Variables["fromDate"]}&to={(string)context.Variables["fromDate"]}")"</set-url>
258258
<set-method>GET</set-method>
259259
</send-request>
260260

@@ -268,20 +268,18 @@ The complete policy looks as follows:
268268
new JProperty("materialdata",((IResponse)context.Variables["materialdata"]).Body.As<JObject>()),
269269
new JProperty("throughputdata",((IResponse)context.Variables["throughputdata"]).Body.As<JObject>()),
270270
new JProperty("accidentdata",((IResponse)context.Variables["accidentdata"]).Body.As<JObject>())
271-
).ToString())
271+
).ToString())
272272
</set-body>
273273
</return-response>
274-
</inbound>
275-
<backend>
276-
<base />
277-
</backend>
278-
<outbound>
279-
<base />
280-
</outbound>
274+
</inbound>
275+
<backend>
276+
<base />
277+
</backend>
278+
<outbound>
279+
<base />
280+
</outbound>
281281
</policies>
282282
```
283283

284-
In the configuration of the placeholder operation, you can configure the dashboard resource to be cached for at least an hour.
285-
286284
## Summary
287285
Azure API Management service provides flexible policies that can be selectively applied to HTTP traffic and enables composition of backend services. Whether you want to enhance your API gateway with alerting functions, verification, validation capabilities or create new composite resources based on multiple backend services, the `send-request` and related policies open a world of possibilities.

articles/app-service/includes/tutorial-dotnetcore-sqldb-app/visual-studio-code-deploy-app-service-02.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ ms.topic: include
55
ms.date: 02/03/2022
66
---
77

8-
1. Select the Azure icon on the left navigation and expand the subscriptions to find the **coreSqlXYZ** App Service you created previously.
8+
1. In the Visual Studio Code terminal, run the .NET CLI command below. This command generates a deployable `publish` folder for the app in the `bin/release/publish` directory.
99

10-
1. Right-click on the **App Service** node and select **Deploy to Web App**.
10+
```dotnetcli
11+
dotnet publish -c Release
12+
```
1113
12-
1. A prompt will appear to select the folder to deploy. If root of the project is already suggested, choose that option, otherwise select the **Browse** button to select the root folder from the file explorer.
14+
1. Right-click on the generated `publish` folder in the Visual Studio Code explorer and select **Deploy to Web App**.
1315
14-
When the deployment completes, you should see a VS Code notification prompting you to browse to the deployed app.
16+
1. A new workflow will open in the command palette at the top of the screen. Select the subscription you would like to publish your app to.
17+
18+
1. Select the App Service web app you created earlier.
19+
20+
If Visual Studio Code prompts you to confirm, click **deploy**. The deployment process may take a few moments. When the process completes, a notification should appear in the bottom right corner prompting you to browse to the deployed app.
12.7 KB
Loading
10.8 KB
Loading
8.59 KB
Loading
13.8 KB
Loading

0 commit comments

Comments
 (0)