You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: exchange/docs-conceptual/app-only-auth-powershell-v2.md
+26-29Lines changed: 26 additions & 29 deletions
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ title: App-only authentication in Exchange Online PowerShell and Security & Comp
3
3
ms.author: chrisda
4
4
author: chrisda
5
5
manager: dansimp
6
-
ms.date: 5/3/2023
6
+
ms.date: 6/21/2023
7
7
ms.audience: Admin
8
8
audience: Admin
9
9
ms.topic: article
@@ -14,12 +14,12 @@ ms.collection: Strat_EX_Admin
14
14
ms.custom:
15
15
ms.assetid:
16
16
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."
18
18
---
19
19
20
20
# App-only authentication for unattended scripts in Exchange Online PowerShell and Security & Compliance PowerShell
21
21
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.
23
23
24
24
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.
25
25
@@ -38,7 +38,6 @@ Certificate based authentication (CBA) or app-only authentication as described i
38
38
> - In Exchange Online PowerShell, you can't use the procedures in this article with the following Microsoft 365 Group cmdlets:
@@ -50,7 +49,7 @@ Certificate based authentication (CBA) or app-only authentication as described i
50
49
51
50
## How does it work?
52
51
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.
54
53
55
54
## Connection examples
56
55
@@ -61,9 +60,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
61
60
>
62
61
> 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:
63
62
>
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).
67
64
>
68
65
> - Microsoft 365 GCC High or Microsoft 365 DoD environments require the following additional parameters and values:
69
66
> -**Connect-ExchangeOnline in GCC High**: `-ExchangeEnvironmentName O365USGovGCCHigh`.
@@ -94,7 +91,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
94
91
95
92
- **Connect using a certificate object**:
96
93
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.
98
95
99
96
- <u>Exchange Online PowerShell</u>:
100
97
@@ -127,7 +124,7 @@ The following examples show how to use the Exchange Online PowerShell module wit
127
124
128
125
## Set up app-only authentication
129
126
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).
131
128
132
129
For a detailed visual flow about creating applications in Azure AD, see <https://aka.ms/azuread-app>.
133
130
@@ -141,9 +138,9 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
141
138
142
139
- 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.
143
140
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.
145
142
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.
147
144
148
145
> [!NOTE]
149
146
> 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:/
167
164
168
165
Or, to go directly to the **App registrations** page, use <https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade>.
169
166
170
-
3. On the **App registrations** page, click **New registration**.
167
+
3. On the **App registrations** page, select **New registration**.
171
168
172
169

173
170
@@ -187,7 +184,7 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
187
184
188
185

189
186
190
-
When you're finished, click **Register**.
187
+
When you're finished on the **App registrations** page, select **Register**.
191
188
192
189
4. Leave the app page that you return to open. You'll use it in the next step.
193
190
@@ -235,9 +232,9 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
235
232
> ],
236
233
> ```
237
234
238
-
When you're finished, click **Save**.
235
+
When you're finished on the **Manifest** page, select **Save**.
239
236
240
-
3. Still on the **Manifest** page, under **Management**, select **API permissions**.
237
+
3. Still on the **Manifest** page, select **API permissions** under **Management**.
241
238
242
239

243
240
@@ -252,13 +249,13 @@ For a detailed visual flow about creating applications in Azure AD, see <https:/
252
249
253
250

254
251
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**.
256
253
257
254
The **Status** value should now be **Granted for \<Organization\>**.
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.
262
259
263
260
### Step 3: Generate a self-signed certificate
264
261
@@ -297,15 +294,15 @@ After you register the certificate with your application, you can use the privat
297
294
298
295

299
296
300
-
3. On the **Certificates & secrets** page that opens, click**Upload certificate**.
297
+
3. On the **Certificates & secrets** page that opens, select**Upload certificate**.
301
298
302
299

303
300
304
301
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).
305
302
306
-

303
+

307
304
308
-
When you're finished, click**Add**.
305
+
When you're finished, select**Add**.
309
306
310
307
The certificate is now shown in the **Certificates** section.
311
308
@@ -329,8 +326,8 @@ For more information about the URL syntax, see [Request the permissions from a d
329
326
330
327
You have two options:
331
328
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.
334
331
335
332
> [!NOTE]
336
333
> 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
380
377
381
378

382
379
383
-
3. On the **Assignments** page that opens, click**Add assignments**.
380
+
3. On the **Assignments** page that opens, select**Add assignments**.
384
381
385
382
-**Exchange Online PowerShell**:
386
383
@@ -394,7 +391,7 @@ For general instructions about assigning roles in Azure AD, see [View and assign
394
391
395
392

396
393
397
-
When you're finished, click**Add**.
394
+
When you're finished in the **Add assignments** flyout, select**Add**.
398
395
399
396
5. Back on the **Assignments** page, verify that the role has been assigned to the app.
400
397
@@ -406,14 +403,14 @@ For general instructions about assigning roles in Azure AD, see [View and assign
406
403
407
404

408
405
409
-
#### Assign custom Exchange Online role groups to the application using service principals
406
+
#### Assign custom role groups to the application using service principals
410
407
411
408
> [!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).
413
410
>
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.
415
412
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.
417
414
418
415
To assign custom role groups to the application using service principals, do the following steps:
0 commit comments