Skip to content

Commit ff40cfd

Browse files
authored
Merge pull request #214961 from MicrosoftDocs/main
10/18 PM Publish
2 parents 4774516 + 0dfd4d6 commit ff40cfd

File tree

1,021 files changed

+19799
-18669
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,021 files changed

+19799
-18669
lines changed

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/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

articles/active-directory/authentication/how-to-mfa-server-migration-utility.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ Azure MFA Server can provide MFA functionality for third-party solutions that us
147147

148148
For RADIUS deployments that can’t be upgraded, you’ll need to deploy an NPS Server and install the [Azure AD MFA NPS extension](howto-mfa-nps-extension.md).
149149

150-
For LDAP deployments that can’t be upgraded or moved to RADIUS, [determine if Azure Active Directory Domain Services can be used](/azure/active-directory/fundamentals/auth-ldap). In most cases, LDAP was deployed to support in-line password changes for end users. Once migrated, end users can manage their passwords by using [self-service password reset in Azure AD](tutorial-enable-sspr.md).
150+
For LDAP deployments that can’t be upgraded or moved to RADIUS, [determine if Azure Active Directory Domain Services can be used](../fundamentals/auth-ldap.md). In most cases, LDAP was deployed to support in-line password changes for end users. Once migrated, end users can manage their passwords by using [self-service password reset in Azure AD](tutorial-enable-sspr.md).
151151

152-
If you enabled the [MFA Server Authentication provider in AD FS 2.0](/azure/active-directory/authentication/howto-mfaserver-adfs-windows-server#secure-windows-server-ad-fs-with-azure-multi-factor-authentication-server) on any relying party trusts except for the Office 365 relying party trust, you’ll need to upgrade to [AD FS 3.0](/windows-server/identity/ad-fs/deployment/upgrading-to-ad-fs-in-windows-server) or federate those relying parties directly to Azure AD if they support modern authentication methods. Determine the best plan of action for each of the dependencies.
152+
If you enabled the [MFA Server Authentication provider in AD FS 2.0](./howto-mfaserver-adfs-windows-server.md#secure-windows-server-ad-fs-with-azure-multi-factor-authentication-server) on any relying party trusts except for the Office 365 relying party trust, you’ll need to upgrade to [AD FS 3.0](/windows-server/identity/ad-fs/deployment/upgrading-to-ad-fs-in-windows-server) or federate those relying parties directly to Azure AD if they support modern authentication methods. Determine the best plan of action for each of the dependencies.
153153

154154
### Backup Azure AD MFA Server datafile
155155
Make a backup of the MFA Server data file located at %programfiles%\Multi-Factor Authentication Server\Data\PhoneFactor.pfdata (default location) on your primary MFA Server. Make sure you have a copy of the installer for your currently installed version in case you need to roll back. If you no longer have a copy, contact Customer Support Services.

0 commit comments

Comments
 (0)