Skip to content

Commit 2ad7965

Browse files
committed
Merge branch 'main' into QuarDLP-chrisda
2 parents 942ad6f + 70bef43 commit 2ad7965

File tree

275 files changed

+3445
-860
lines changed

Some content is hidden

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

275 files changed

+3445
-860
lines changed

.openpublishing.redirection.json

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6920,16 +6920,6 @@
69206920
"redirect_url": "/powershell/module/exchange/update-distributiongroupmember",
69216921
"redirect_document_id": false
69226922
},
6923-
{
6924-
"source_path": "exchange/virtual-folder/exchange/Get-DefaultTenantBriefingConfig.md",
6925-
"redirect_url": "/viva/insights/personal/reference/briefing-pause",
6926-
"redirect_document_id": false
6927-
},
6928-
{
6929-
"source_path": "exchange/virtual-folder/exchange/Set-DefaultTenantBriefingConfig.md",
6930-
"redirect_url": "/viva/insights/personal/reference/briefing-pause",
6931-
"redirect_document_id": false
6932-
},
69336923
{
69346924
"source_path": "teams/teams-ps/teams/New-CsTeamsShiftsConnectionTeamMap.yml",
69356925
"redirect_url": "https://review.learn.microsoft.com/en-us/powershell/module/teams/",

exchange/docs-conceptual/app-only-auth-powershell-v2.md

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: App-only authentication in Exchange Online PowerShell and Security & Comp
33
ms.author: chrisda
44
author: chrisda
55
manager: dansimp
6-
ms.date: 5/3/2023
6+
ms.date: 6/21/2023
77
ms.audience: Admin
88
audience: Admin
99
ms.topic: article
@@ -14,12 +14,12 @@ ms.collection: Strat_EX_Admin
1414
ms.custom:
1515
ms.assetid:
1616
search.appverid: MET150
17-
description: "Learn about using the Exchange Online PowerShell V2 module and V3 module in scripts and other long-running tasks with modern authentication and app-only authentication (also known a certificate based authentication or CBA)."
17+
description: "Learn how to configure app-only authentication (also known as certificate based authentication or CBA) using the Exchange Online PowerShell V3 module in scripts and other long-running tasks."
1818
---
1919

2020
# App-only authentication for unattended scripts in Exchange Online PowerShell and Security & Compliance PowerShell
2121

22-
Auditing and reporting scenarios in Microsoft 365 often involve unattended scripts in Exchange Online PowerShell and Security & Compliance PowerShell. In the past, unattended sign in required you to store the username and password in a local file or in a secret vault that's accessed at run-time. But, as we all know, storing user credentials locally is not a good security practice.
22+
Auditing and reporting scenarios in Microsoft 365 often involve unattended scripts in Exchange Online PowerShell and Security & Compliance PowerShell. In the past, unattended sign in required you to store the username and password in a local file or in a secret vault that's accessed at run-time. But, as we all know, storing user credentials locally isn't a good security practice.
2323

2424
Certificate based authentication (CBA) or app-only authentication as described in this article supports unattended script and automation scenarios by using Azure AD apps and self-signed certificates.
2525

@@ -38,7 +38,6 @@ Certificate based authentication (CBA) or app-only authentication as described i
3838
> - In Exchange Online PowerShell, you can't use the procedures in this article with the following Microsoft 365 Group cmdlets:
3939
> - [New-UnifiedGroup](/powershell/module/exchange/new-unifiedgroup)
4040
> - [Remove-UnifiedGroup](/powershell/module/exchange/remove-unifiedgroup)
41-
> - [Set-UnifiedGroup](/powershell/module/exchange/set-unifiedgroup)
4241
> - [Remove-UnifiedGroupLinks](/powershell/module/exchange/remove-unifiedgrouplinks)
4342
> - [Add-UnifiedGroupLinks](/powershell/module/exchange/add-unifiedgrouplinks)
4443
>
@@ -50,7 +49,7 @@ Certificate based authentication (CBA) or app-only authentication as described i
5049
5150
## How does it work?
5251

53-
The Exchange Online PowerShell module uses the Active Directory Authentication Library to fetch an app-only token using the application Id, tenant Id (organization), and certificate thumbprint. The application object provisioned inside Azure AD has a Directory Role assigned to it, which is returned in the access token. The session's role based access control (RBAC) is configured using the directory role information that's available in the token.
52+
The Exchange Online PowerShell module uses the Active Directory Authentication Library to fetch an app-only token using the application ID, tenant ID (organization), and certificate thumbprint. The application object provisioned inside Azure AD has a Directory Role assigned to it, which is returned in the access token. The session's role based access control (RBAC) is configured using the directory role information that's available in the token.
5453

5554
## Connection examples
5655

@@ -61,9 +60,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
6160
>
6261
> The following connection commands have many of the same options available as described in [Connect to Exchange Online PowerShell](connect-to-exchange-online-powershell.md) and [Connect to Security & Compliance PowerShell](connect-to-scc-powershell.md). For example:
6362
>
64-
> - You can use REST API cmdlets or original remote PowerShell cmdlets. For more information, see [Updates for the EXO V3 module)](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
65-
>
66-
> Remote PowerShell support in Exchange Online PowerShell will be deprecated. For more information, see [Announcing Deprecation of Remote PowerShell (RPS) Protocol in Exchange Online PowerShell](https://aka.ms/RPSDeprecation).
63+
> Remote PowerShell support in Exchange Online PowerShell will be deprecated. For more information, see [Announcing Deprecation of Remote PowerShell (RPS) Protocol in Exchange Online PowerShell](https://aka.ms/RPSDeprecation).
6764
>
6865
> - Microsoft 365 GCC High or Microsoft 365 DoD environments require the following additional parameters and values:
6966
> - **Connect-ExchangeOnline in GCC High**: `-ExchangeEnvironmentName O365USGovGCCHigh`.
@@ -94,7 +91,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
9491
9592
- **Connect using a certificate object**:
9693
97-
The certificate does not need to be installed on the computer where you're running the command. You can store the certificate object remotely. The certificate is fetched when the script is run.
94+
The certificate doesn't need to be installed on the computer where you're running the command. You can store the certificate object remotely. The certificate is fetched when the script is run.
9895
9996
- <u>Exchange Online PowerShell</u>:
10097
@@ -127,7 +124,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
127124
128125
## Set up app-only authentication
129126
130-
An initial onboarding is required for authentication using application objects. Application and service principal are used interchangeably, but an application is like a class object while a service principal is like an instance of the class. You can learn more about this at [Application and service principal objects in Azure Active Directory](/azure/active-directory/develop/app-objects-and-service-principals).
127+
An initial onboarding is required for authentication using application objects. Application and service principal are used interchangeably, but an application is like a class object while a service principal is like an instance of the class. For more information, see [Application and service principal objects in Azure Active Directory](/azure/active-directory/develop/app-objects-and-service-principals).
131128
132129
For a detailed visual flow about creating applications in Azure AD, see <https://aka.ms/azuread-app>.
133130
@@ -141,9 +138,9 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
141138
142139
- For app-only authentication in Azure AD, you typically use a certificate to request access. Anyone who has the certificate and its private key can use the app, and the permissions granted to the app.
143140
144-
- Create and configure a self-signed X.509 certificate, which will be used to authenticate your Application against Azure AD, while requesting the app-only access token.
141+
- Create and configure a self-signed X.509 certificate, which is used to authenticate your Application against Azure AD, while requesting the app-only access token.
145142
146-
- This is similar to generating a password for user accounts. The certificate can be self-signed as well. See the [Appendix](#step-3-generate-a-self-signed-certificate) section later in this article for instructions for generating certificates in PowerShell.
143+
- This procedure is similar to generating a password for user accounts. The certificate can be self-signed as well. See the [Appendix](#step-3-generate-a-self-signed-certificate) section later in this article for instructions for generating certificates in PowerShell.
147144
148145
> [!NOTE]
149146
> Cryptography: Next Generation (CNG) certificates are not supported for app-only authentication with Exchange. CNG certificates are created by default in modern Windows versions. You must use a certificate from a CSP key provider. The [Appendix](#step-3-generate-a-self-signed-certificate) section covers two supported methods to create a CSP certificate.
@@ -167,7 +164,7 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
167164
168165
Or, to go directly to the **App registrations** page, use <https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade>.
169166
170-
3. On the **App registrations** page, click **New registration**.
167+
3. On the **App registrations** page, select **New registration**.
171168
172169
![Select New registration on the App registrations page.](media/exo-app-only-auth-new-app-registration.png)
173170
@@ -187,7 +184,7 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
187184
188185
![Register an application.](media/exo-app-only-auth-register-app.png)
189186
190-
When you're finished, click **Register**.
187+
When you're finished on the **App registrations** page, select **Register**.
191188
192189
4. Leave the app page that you return to open. You'll use it in the next step.
193190
@@ -235,9 +232,9 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
235232
> ],
236233
> ```
237234
238-
When you're finished, click **Save**.
235+
When you're finished on the **Manifest** page, select **Save**.
239236
240-
3. Still on the **Manifest** page, under **Management**, select **API permissions**.
237+
3. Still on the **Manifest** page, select **API permissions** under **Management**.
241238
242239
![Select API permissions on the application properties page.](media/exo-app-only-auth-select-api-permissions.png)
243240
@@ -252,13 +249,13 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
252249
253250
![Original incorrect API permissions.](media/exo-app-only-auth-original-permissions.png)
254251
255-
Select **Grant admin consent for \<Organization\>**, read the confirmation dialog that opens, and then click **Yes**.
252+
Select **Grant admin consent for \<Organization\>**, read the confirmation dialog that opens, and then select **Yes**.
256253
257254
The **Status** value should now be **Granted for \<Organization\>**.
258255
259256
![Admin consent granted.](media/exo-app-only-auth-admin-consent-granted.png)
260257
261-
4. Close the current **API permissions** page (not the browser tab) to return to the **App registrations** page. You'll use it in an upcoming step.
258+
4. Close the current **API permissions** page (not the browser tab) to return to the **App registrations** page. You use the **App registrations** page in an upcoming step.
262259
263260
### Step 3: Generate a self-signed certificate
264261
@@ -297,15 +294,15 @@ After you register the certificate with your application, you can use the privat
297294

298295
![Select Certificates & Secrets on the application properties page.](media/exo-app-only-auth-select-certificates-and-secrets.png)
299296

300-
3. On the **Certificates & secrets** page that opens, click **Upload certificate**.
297+
3. On the **Certificates & secrets** page that opens, select **Upload certificate**.
301298

302299
![Select Upload certificate on the Certificates & secrets page.](media/exo-app-only-auth-select-upload-certificate.png)
303300

304301
In the dialog that opens, browse to the self-signed certificate (`.cer` file) that you created in [Step 3](#step-3-generate-a-self-signed-certificate).
305302

306-
![Browse to the certificate and then click Add.](media/exo-app-only-auth-upload-certificate-dialog.png)
303+
![Browse to the certificate and then select Add.](media/exo-app-only-auth-upload-certificate-dialog.png)
307304

308-
When you're finished, click **Add**.
305+
When you're finished, select **Add**.
309306

310307
The certificate is now shown in the **Certificates** section.
311308

@@ -329,8 +326,8 @@ For more information about the URL syntax, see [Request the permissions from a d
329326

330327
You have two options:
331328

332-
- **Assign Azure AD roles to the application**: This method is supported in Exchange Online PowerShell and Security & Compliance PowerShell.
333-
- **Assign custom Exchange Online role groups to the application using service principals**: This method is supported only when you connect in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
329+
- **Assign Azure AD roles to the application**
330+
- **Assign custom role groups to the application using service principals**: This method is supported only when you connect to Exchange Online PowerShell or Security & Compliance PowerShell in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module). Security & Compliance PowerShell supports REST API mode in v3.2.0 or later.
334331

335332
> [!NOTE]
336333
> You can also combine both methods to assign permissions. For example, you can use Azure AD roles for the "Exchange Recipient Administrator" role and also assign your custom RBAC role to extend the permissions.
@@ -380,7 +377,7 @@ For general instructions about assigning roles in Azure AD, see [View and assign
380377

381378
![Find and select a supported Security & Compliance PowerShell role by clicking on the role name.](media/exo-app-only-auth-find-and-select-supported-role-scc.png)
382379

383-
3. On the **Assignments** page that opens, click **Add assignments**.
380+
3. On the **Assignments** page that opens, select **Add assignments**.
384381

385382
- **Exchange Online PowerShell**:
386383

@@ -394,7 +391,7 @@ For general instructions about assigning roles in Azure AD, see [View and assign
394391

395392
![Find and select your app on the Add assignments flyout.](media/exo-app-only-auth-find-add-select-app-for-assignment.png)
396393

397-
When you're finished, click **Add**.
394+
When you're finished in the **Add assignments** flyout, select **Add**.
398395

399396
5. Back on the **Assignments** page, verify that the role has been assigned to the app.
400397

@@ -406,14 +403,14 @@ For general instructions about assigning roles in Azure AD, see [View and assign
406403

407404
![The role assignments page after to added the app to the role for Security & Compliance PowerShell.](media/exo-app-only-auth-app-assigned-to-role-scc.png)
408405

409-
#### Assign custom Exchange Online role groups to the application using service principals
406+
#### Assign custom role groups to the application using service principals
410407

411408
> [!NOTE]
412-
> You need to connect to Exchange Online PowerShell or Security & Compliance PowerShell _before_ completing steps to create a new service principal. Creating a new service principal without connecting to PowerShell won't work (your Azure App ID and Object ID is needed to create the new service principal).
409+
> You need to connect to Exchange Online PowerShell or Security & Compliance PowerShell _before_ completing steps to create a new service principal. Creating a new service principal without connecting to PowerShell won't work (your Azure App ID and Object ID are needed to create the new service principal).
413410
>
414-
> This method is supported only when you connect in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module).
411+
> This method is supported only when you connect to Exchange Online PowerShell or Security & Compliance PowerShell in [REST API mode](exchange-online-powershell-v2.md#updates-for-the-exo-v3-module). Security & Compliance PowerShell supports REST API mode in v3.2.0 or later.
415412
416-
For information about creating custom role groups, see [Create role groups](/exchange/permissions-exo/role-groups#create-role-groups). The custom role group that you assign to the application can contain any combination of built-in and custom roles.
413+
For information about creating custom role groups, see [Create role groups in Exchange Online](/exchange/permissions-exo/role-groups#create-role-groups) and [Create Email & collaboration role groups in the Microsoft 365 Defender portal](/microsoft-365/security/office-365-security/mdo-portal-permissions#create-email--collaboration-role-groups-in-the-microsoft-365-defender-portal). The custom role group that you assign to the application can contain any combination of built-in and custom roles.
417414

418415
To assign custom role groups to the application using service principals, do the following steps:
419416

0 commit comments

Comments
 (0)