Skip to content

Commit 415f638

Browse files
committed
Merge branch 'main' of https://github.com/microsoftdocs/azure-docs-pr into adapter
2 parents cbb3617 + a907e59 commit 415f638

File tree

1,343 files changed

+30319
-24964
lines changed

Some content is hidden

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

1,343 files changed

+30319
-24964
lines changed

.openpublishing.redirection.json

Lines changed: 360 additions & 0 deletions
Large diffs are not rendered by default.

.openpublishing.redirection.virtual-desktop.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@
3434
"source_path": "articles/virtual-desktop/azure-stack-hci-faq.yml",
3535
"redirect_url": "/azure/virtual-desktop/azure-stack-hci",
3636
"redirect_document_id": false
37-
}
37+
}
3838
]
3939
}

articles/active-directory-b2c/partner-deduce.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ In order to collect the user_agent from client-side, create your own `**ContentD
129129
To customize the user interface, you specify a URL in the `ContentDefinition` element with customized HTML content. In the self-asserted technical profile or orchestration step, you point to that ContentDefinition identifier.
130130

131131

132-
1. Open the `TrustFrameworksExtension.xml` and define a new **ContentDefinition** to customize the [self-asserted technical profile](/azure/active-directory-b2c/self-asserted-technical-profile).
132+
1. Open the `TrustFrameworksExtension.xml` and define a new **ContentDefinition** to customize the [self-asserted technical profile](./self-asserted-technical-profile.md).
133133

134134
1. Find the `BuildingBlocks` element and add the `**api.selfassertedDeduce**` ContentDefinition:
135135

@@ -434,11 +434,11 @@ The **ClaimsSchema** element defines the claim types that can be referenced as p
434434

435435
### Step 6: Add Deduce ClaimsProvider
436436

437-
A **claims provider** is an interface to communicate with different types of parties via its [technical profiles](/azure/active-directory-b2c/technicalprofiles).
437+
A **claims provider** is an interface to communicate with different types of parties via its [technical profiles](./technicalprofiles.md).
438438

439439
- `SelfAsserted-UserAgent` self-asserted technical profile is used to collect user_agent from client-side.
440440

441-
- `deduce_insight_api` technical profile sends data to the Deduce RESTful service in an input claims collection and receives data back in an output claims collection. For more information, see [integrate REST API claims exchanges in your Azure AD B2C custom policy](/azure/active-directory-b2c/api-connectors-overview?pivots=b2c-custom-policy)
441+
- `deduce_insight_api` technical profile sends data to the Deduce RESTful service in an input claims collection and receives data back in an output claims collection. For more information, see [integrate REST API claims exchanges in your Azure AD B2C custom policy](./api-connectors-overview.md?pivots=b2c-custom-policy)
442442

443443
You can define Deduce as a claims provider by adding it to the **ClaimsProvider** element in the extension file of your policy.
444444

@@ -709,4 +709,4 @@ For additional information, review the following articles:
709709

710710
- [Custom policies in Azure AD B2C](./custom-policy-overview.md)
711711

712-
- [Get started with custom policies in Azure AD B2C](./tutorial-create-user-flows.md?pivots=b2c-custom-policy&tabs=applications)
712+
- [Get started with custom policies in Azure AD B2C](./tutorial-create-user-flows.md?pivots=b2c-custom-policy&tabs=applications)

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@
123123
href: join-ubuntu-linux-vm.md
124124
- name: SUSE Linux Enterprise
125125
href: join-suse-linux-vm.md
126+
- name: AD authentication through LDAP Linux
127+
items:
128+
- name: Active Directory authentication non domain joined Linux Virtual Machines
129+
href: ad-auth-no-join-linux-vm.md
126130
- name: Deploy applications
127131
items:
128132
- name: Deploy Azure AD Application Proxy
Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
---
2+
title: Active Directory authentication non domain joined Linux Virtual Machines
3+
description: Active Directory authentication non domain joined Linux Virtual Machines.
4+
services: active-directory-ds
5+
author: DevOpsStyle
6+
7+
ms.service: active-directory
8+
ms.subservice: domain-services
9+
ms.workload: identity
10+
ms.topic: how-to
11+
ms.date: 10/12/2022
12+
ms.author: tommasosacco
13+
14+
---
15+
16+
# Active Directory authentication non domain joined Linux Virtual Machines
17+
18+
Currently Linux distribution can work as member of Active Directory domains, which gives them access to the AD authentication system. To take advantage of AD authentication in some cases, we can avoid the AD join. To let users sign in on Azure Linux VM with Active Directory account you have different choices. One possibility is to Join in Active Directory the VM. Another possibility is to base the authentication flow through LDAP to your Active Directory without Join the VM on AD. This article shows you how to authenticate with AD credential on your Linux system (CentosOS) based on LDAP.
19+
20+
## Prerequisites
21+
22+
To complete the authentication flow we assume, you already have:
23+
24+
* An Active Directory Domain Services already configured.
25+
* A Linux VM (for the test we use CentosOS based machine).
26+
* A network infrastructure that allows communication between Active Directory and the Linux VM.
27+
* A dedicated User Account for read AD objects.
28+
* The Linux VM need to have these packages installed:
29+
- sssd
30+
- sssd-tools
31+
- sssd-ldap
32+
- openldap-clients
33+
* An LDAPS Certificate correctly configured on the Linux VM.
34+
* A CA Certificate correctly imported into Certificate Store of the Linux VM (the path varies depending on the Linux distro).
35+
36+
## Active Directory User Configuration
37+
38+
To read Users in your Active Directory Domain Services create a ReadOnlyUser in AD. For create a new user follow the steps below:
39+
40+
1. Connect to your *Domain Controller*.
41+
2. Click *Start*, point to *Administrative Tools*, and then click *Active Directory Users and Computers* to start the Active Directory Users and Computers console.
42+
3. Click the domain name that you created, and then expand the contents.
43+
4. Right-click Users, point to *New*, and then click *User*.
44+
5. Type the first name, last name, and user logon name of the new user, and then click Next. In lab environment we used a user called *ReadOnlyUser*.
45+
6. Type a *new password*, confirm the password, and then click to select one of the following check boxes if needed:
46+
- Users must change password at next logon (recommended for most user)
47+
- User cannot change password
48+
- Password never expires
49+
- Account is disabled (If you disable the account the authentication will fail)
50+
7. Click *Next*.
51+
52+
Review the information that you provided, and if everything is correct, click Finish.
53+
54+
> [!NOTE]
55+
> The lab environment is based on:
56+
> - Windows Server 2016 Domain and Forest Functional Level.
57+
> - Linux client Centos 8.5.
58+
59+
## Linux Virtual Machines Configuration
60+
61+
> [!NOTE]
62+
> You must run these command with sudo permission
63+
64+
On your Linux VM, install the following packages: *sssd sssd-tools sssd-ldap openldap-client*:
65+
66+
```console
67+
yum install -y sssd sssd-tools sssd-ldap openldap-clients
68+
```
69+
70+
After the installation check if LDAP search works. In order to check it try an LDAP search following the example below:
71+
72+
```console
73+
ldapsearch -H ldaps://contoso.com -x \
74+
-D CN=ReadOnlyUser,CN=Users,DC=contoso,DC=com -w Read0nlyuserpassword \
75+
-b CN=Users,DC=contoso,DC=com
76+
```
77+
78+
If the LDAP query works fine, you will obtain an output with some information like follow:
79+
80+
```console
81+
extended LDIF
82+
83+
LDAPv3
84+
base <CN=Users,DC=contoso,DC=com> with scope subtree
85+
filter: (objectclass=*)
86+
requesting: ALL
87+
88+
Users, contoso.com
89+
dn: CN=Users,DC=contoso,DC=com
90+
objectClass: top
91+
objectClass: container
92+
cn: Users
93+
description: Default container for upgraded user accounts
94+
distinguishedName: CN=Users,DC=contoso,DC=com
95+
instanceType: 4
96+
whenCreated: 20220913115340.0Z
97+
whenChanged: 20220913115340.0Z
98+
uSNCreated: 5660
99+
uSNChanged: 5660
100+
showInAdvancedViewOnly: FALSE
101+
name: Users
102+
objectGUID:: i9MABLytKUurB2uTe/dOzg==
103+
systemFlags: -1946157056
104+
objectCategory: CN=Container,CN=Schema,CN=Configuration,DC=contoso,DC=com
105+
isCriticalSystemObject: TRUE
106+
dSCorePropagationData: 20220930113600.0Z
107+
dSCorePropagationData: 20220930113600.0Z
108+
dSCorePropagationData: 20220930113600.0Z
109+
dSCorePropagationData: 20220930113600.0Z
110+
dSCorePropagationData: 16010101000000.0Z
111+
```
112+
113+
> [!NOTE]
114+
> If your get and error run the following command:
115+
>
116+
> ldapsearch -H ldaps://contoso.com -x \
117+
> -D CN=ReadOnlyUser,CN=Users,DC=contoso,DC=com -w Read0nlyuserpassword \
118+
> -b CN=Users,DC=contoso,DC=com -d 3
119+
>
120+
> Troubleshoot according to the output.
121+
122+
## Create sssd.conf file
123+
124+
Create */etc/sssd/sssd.conf* with a content like the following. Remember to update the *ldap_uri*, *ldap_search_base* and *ldap_default_bind_dn*.
125+
126+
Command for file creation:
127+
128+
```console
129+
vi /etc/sssd/sssd.conf
130+
```
131+
132+
Example sssd.conf:
133+
134+
```bash
135+
[sssd]
136+
config_file_version = 2
137+
domains = default
138+
services = nss, pam
139+
full_name_format = %1$s
140+
141+
[nss]
142+
143+
[pam]
144+
145+
[domain/default]
146+
id_provider = ldap
147+
cache_credentials = True
148+
ldap_uri = ldaps://contoso.com
149+
ldap_search_base = CN=Users,DC=contoso,DC=com
150+
ldap_schema = AD
151+
ldap_default_bind_dn = CN=ReadOnlyUser,CN=Users,DC=contoso,DC=com
152+
ldap_default_authtok_type = obfuscated_password
153+
ldap_default_authtok = generated_password
154+
155+
# Obtain the CA root certificate for your LDAPS connection.
156+
ldap_tls_cacert = /etc/pki/tls/cacerts.pem
157+
158+
# This setting disables cert verification.
159+
#ldap_tls_reqcert = allow
160+
161+
# Only if the LDAP directory doesn't provide uidNumber and gidNumber attributes
162+
ldap_id_mapping = True
163+
164+
# Consider setting enumerate=False for very large directories
165+
enumerate = True
166+
167+
# Only needed if LDAP doesn't provide homeDirectory and loginShell attributes
168+
fallback_homedir = /home/%u
169+
default_shell = /bin/bash
170+
access_provider = permit
171+
sudo_provider = ldap
172+
auth_provider = ldap
173+
autofs_provider = ldap
174+
resolver_provider = ldap
175+
176+
```
177+
178+
Save the file with *ESC + wq!* command.
179+
180+
> [!NOTE]
181+
> If you don't have a valid TLS certificate under */etc/pki/tls/* called *cacerts.pem* the bind doesn't work
182+
183+
## Change permission for sssd.conf and create the obfuscated password
184+
185+
Set the permission to sssd.conf to 600 with the following command:
186+
187+
```console
188+
chmod 600 /etc/sssd/sssd.conf
189+
```
190+
191+
After that create an obfuscated password for the Bind DN account. You must insert the Domain password for ReadOnlyUser:
192+
193+
```console
194+
sss_obfuscate --domain default
195+
```
196+
197+
The password will be placed automatically in the configuration file.
198+
199+
## Configure the sssd service
200+
201+
Start the sssd service:
202+
203+
```console
204+
service sssd start
205+
```
206+
207+
Now configure the service with the *authconfig* tool:
208+
209+
```console
210+
authconfig --enablesssd --enablesssdauth --enablemkhomedir --updateall
211+
```
212+
213+
At this point restart the service:
214+
215+
```console
216+
systemctl restart sssd
217+
```
218+
219+
## Test the configuration
220+
221+
The final step is to check that the flow works properly. To check this, try logging in with one of your AD users in Active Directory. We tried with a user called *ADUser*. If the configuration is correct, you will get the following result:
222+
223+
```console
224+
[centosuser@centos8 ~]su - [email protected]
225+
Last login: Wed Oct 12 15:13:39 UTC 2022 on pts/0
226+
[ADUser@Centos8 ~]$ exit
227+
228+
```
229+
Now you are ready to use AD authentication on your Linux VM.
230+
231+
<!-- INTERNAL LINKS -->
232+
[create-azure-ad-tenant]: ../active-directory/fundamentals/sign-up-organization.md
233+
[associate-azure-ad-tenant]: ../active-directory/fundamentals/active-directory-how-subscriptions-associated-directory.md
234+
[create-azure-ad-ds-instance]: tutorial-create-instance.md

articles/active-directory-domain-services/fleet-metrics.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ The following table describes the metrics that are available for Azure AD DS.
6262

6363
## Azure Monitor alert
6464

65-
You can configure metric alerts for Azure AD DS to be notified of possible problems. Metric alerts are one type of alert for Azure Monitor. For more information about other types of alerts, see [What are Azure Monitor Alerts?](/azure/azure-monitor/alerts/alerts-overview).
65+
You can configure metric alerts for Azure AD DS to be notified of possible problems. Metric alerts are one type of alert for Azure Monitor. For more information about other types of alerts, see [What are Azure Monitor Alerts?](../azure-monitor/alerts/alerts-overview.md).
6666

67-
To view and manage Azure Monitor alert, a user needs to be assigned [Azure Monitor roles](/azure/azure-monitor/roles-permissions-security).
67+
To view and manage Azure Monitor alert, a user needs to be assigned [Azure Monitor roles](../azure-monitor/roles-permissions-security.md).
6868

6969
In Azure Monitor or Azure AD DS Metrics, click **New alert** and configure an Azure AD DS instance as the scope. Then choose the metrics you want to measure from the list of available signals:
7070

@@ -98,4 +98,4 @@ You can upvote to enable multiple resource selection to correlate data between r
9898

9999
## Next steps
100100

101-
- [Check the health of an Azure Active Directory Domain Services managed domain](check-health.md)
101+
- [Check the health of an Azure Active Directory Domain Services managed domain](check-health.md)

articles/active-directory/app-provisioning/use-scim-to-build-users-and-groups-endpoints.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ Go to the [reference code](https://github.com/AzureAD/SCIMReferenceCode) from Gi
7575
7676
1. If not installed, add [Azure App Service for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureappservice) extension.
7777
78-
1. To deploy the Microsoft.SCIM.WebHostSample app to Azure App Services, [create a new App Services](/azure/app-service/tutorial-dotnetcore-sqldb-app#2---create-the-app-service).
78+
1. To deploy the Microsoft.SCIM.WebHostSample app to Azure App Services, [create a new App Services](../../app-service/tutorial-dotnetcore-sqldb-app.md#2---create-the-app-service).
7979
8080
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/debug/publish directory.
8181

articles/active-directory/app-provisioning/use-scim-to-provision-users-and-groups.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ms.service: active-directory
88
ms.subservice: app-provisioning
99
ms.workload: identity
1010
ms.topic: tutorial
11-
ms.date: 08/17/2022
11+
ms.date: 10/17/2022
1212
ms.author: kenwith
1313
ms.reviewer: arvinh
1414
---
@@ -1308,7 +1308,7 @@ Applications that support the SCIM profile described in this article can be conn
13081308

13091309
**To connect an application that supports SCIM:**
13101310

1311-
1. Sign in to the [Azure AD portal](https://aad.portal.azure.com). You can get access a free trial for Azure AD with P2 licenses by signing up for the [developer program](https://developer.microsoft.com/office/dev-program)
1311+
1. Sign in to the [Azure AD portal](https://aad.portal.azure.com). You can get access a free trial for Azure AD with P2 licenses by signing up for the [developer program](https://developer.microsoft.com/microsoft-365/dev-program))
13121312
1. Select **Enterprise applications** from the left pane. A list of all configured apps is shown, including apps that were added from the gallery.
13131313
1. Select **+ New application** > **+ Create your own application**.
13141314
1. Enter a name for your application, choose the option "*integrate any other application you don't find in the gallery*" and select **Add** to create an app object. The new app is added to the list of enterprise applications and opens to its app management screen.

articles/active-directory/authentication/concept-authentication-strengths.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ An authentication strength Conditional Access policy works together with [MFA tr
213213

214214
- **Using 'Require one of the selected controls' with 'require authentication strength' control** - After you select authentication strengths grant control and additional controls, all the selected controls must be satisfied in order to gain access to the resource. Using **Require one of the selected controls** isn't applicable, and will default to requiring all the controls in the policy.
215215

216+
- **Authentication loop** - when the user is required to use Microsoft Authenticator (Phone Sign-in) but the user is not registered for this method, they will be given instructions on how to set up the Microsoft Authenticator, that does not include how to enable Passwordless sign-in. As a result, the user can get into an authentication loop. To avoid this issue, make sure the user is registered for the method before the Conditional Access policy is enforced. Phone Sign-in can be registered using the steps outlined here: [Add your work or school account to the Microsoft Authenticator app](https://support.microsoft.com/en-us/account-billing/add-your-work-or-school-account-to-the-microsoft-authenticator-app-43a73ab5-b4e8-446d-9e54-2a4cb8e4e93c)
217+
216218
## Limitations
217219

218220
- **Conditional Access policies are only evaluated after the initial authentication** - As a result, authentication strength will not restrict a user's initial authentication. Suppose you are using the built-in phishing-resistant MFA strength. A user can still type in their password, but they will be required to use a phishing-resistant method such as FIDO2 security key before they can continue.

articles/active-directory/authentication/concept-certificate-based-authentication.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ The following images show how Azure AD CBA simplifies the customer environment b
4343
|---------|---------|
4444
| Great user experience |- Users who need certificate-based authentication can now directly authenticate against Azure AD and not have to invest in federated AD FS.<br>- Portal UI enables users to easily configure how to map certificate fields to a user object attribute to look up the user in the tenant ([certificate username bindings](concept-certificate-based-authentication-technical-deep-dive.md#understanding-the-username-binding-policy))<br>- Portal UI to [configure authentication policies](concept-certificate-based-authentication-technical-deep-dive.md#understanding-the-authentication-binding-policy) to help determine which certificates are single-factor versus multifactor. |
4545
| Easy to deploy and administer |- Azure AD CBA is a free feature, and you don't need any paid editions of Azure AD to use it. <br>- No need for complex on-premises deployments or network configuration.<br>- Directly authenticate against Azure AD. |
46-
| Secure |- On-premises passwords don't need to be stored in the cloud in any form.<br>- Protects your user accounts by working seamlessly with Azure AD Conditional Access policies, including unphishable [multifactor authentication](concept-mfa-howitworks.md) (MFA which requires [licensed edition](concept-mfa-licensing.md)) and blocking legacy authentication.<br>- Strong authentication support where users can define authentication policies through the certificate fields, such as issuer or policy OID (object identifiers), to determine which certificates qualify as single-factor versus multifactor.<br>- The feature works seamlessly with [Conditional Access features](../conditional-access/overview.md) and authentication strength capability to enforce MFA to help secure your users. |
46+
| Secure |- On-premises passwords don't need to be stored in the cloud in any form.<br>- Protects your user accounts by working seamlessly with Azure AD Conditional Access policies, including Phishing-Resistant [multifactor authentication](concept-mfa-howitworks.md) (MFA requires [licensed edition](concept-mfa-licensing.md)) and blocking legacy authentication.<br>- Strong authentication support where users can define authentication policies through the certificate fields, such as issuer or policy OID (object identifiers), to determine which certificates qualify as single-factor versus multifactor.<br>- The feature works seamlessly with [Conditional Access features](../conditional-access/overview.md) and authentication strength capability to enforce MFA to help secure your users. |
4747

4848

4949
## Supported scenarios

0 commit comments

Comments
 (0)