Skip to content

Commit a356801

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into tamram23-0316
2 parents ae65821 + ab0ad2b commit a356801

File tree

239 files changed

+1655
-4543
lines changed

Some content is hidden

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

239 files changed

+1655
-4543
lines changed

.openpublishing.publish.config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,7 @@
982982
".openpublishing.redirection.security-benchmark.json",
983983
".openpublishing.redirection.sql-database.json",
984984
".openpublishing.redirection.virtual-desktop.json",
985+
".openpublishing.redirection.devops-project.json",
985986
"articles/applied-ai-services/.openpublishing.redirection.applied-ai-old.json",
986987
"articles/applied-ai-services/.openpublishing.redirection.applied-ai-services.json",
987988
"articles/azure-fluid-relay/.openpublishing.redirection.fluid-relay.json",
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
{
2+
"redirections": [
3+
{
4+
"source_path": "articles/devops-project/azure-devops-project-aks.md",
5+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-aks",
6+
"redirect_document_id": false
7+
},
8+
{
9+
"source_path": "articles/devops-project/azure-devops-project-aspnet-core.md",
10+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-aspnet-core",
11+
"redirect_document_id": false
12+
},
13+
{
14+
"source_path": "articles/devops-project/azure-devops-project-cosmos-db.md",
15+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-cosmos-db",
16+
"redirect_document_id": false
17+
},
18+
{
19+
"source_path": "articles/devops-project/azure-devops-project-functions.md",
20+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-functions",
21+
"redirect_document_id": false
22+
},
23+
{
24+
"source_path": "articles/devops-project/azure-devops-project-github.md",
25+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-github",
26+
"redirect_document_id": false
27+
},
28+
{
29+
"source_path": "articles/devops-project/azure-devops-project-go.md",
30+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-go",
31+
"redirect_document_id": false
32+
},
33+
{
34+
"source_path": "articles/devops-project/azure-devops-project-java.md",
35+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-java",
36+
"redirect_document_id": false
37+
},
38+
{
39+
"source_path": "articles/devops-project/azure-devops-project-nodejs.md",
40+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-nodejs",
41+
"redirect_document_id": false
42+
},
43+
{
44+
"source_path": "articles/devops-project/azure-devops-project-php.md",
45+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-php",
46+
"redirect_document_id": false
47+
},
48+
{
49+
"source_path": "articles/devops-project/azure-devops-project-python.md",
50+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-python",
51+
"redirect_document_id": false
52+
},
53+
{
54+
"source_path": "articles/devops-project/azure-devops-project-ruby.md",
55+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-ruby",
56+
"redirect_document_id": false
57+
},
58+
{
59+
"source_path": "articles/devops-project/azure-devops-project-service-fabric.md",
60+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-service-fabric",
61+
"redirect_document_id": false
62+
},
63+
{
64+
"source_path": "articles/devops-project/azure-devops-project-sql-database.md",
65+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-sql-database",
66+
"redirect_document_id": false
67+
},
68+
{
69+
"source_path": "articles/devops-project/azure-devops-project-vms.md",
70+
"redirect_url": "/previous-versions/azure/devops-project/azure-devops-project-vms",
71+
"redirect_document_id": false
72+
},
73+
{
74+
"source_path": "articles/devops-project/devops-starter-gh-nodejs.md",
75+
"redirect_url": "/previous-versions/azure/devops-project/devops-starter-gh-nodejs",
76+
"redirect_document_id": false
77+
},
78+
{
79+
"source_path": "articles/devops-project/devops-starter-gh-web-app.md",
80+
"redirect_url": "/previous-versions/azure/devops-project/devops-starter-gh-web-app",
81+
"redirect_document_id": false
82+
},
83+
{
84+
"source_path": "articles/devops-project/overview.md",
85+
"redirect_url": "/previous-versions/azure/devops-project/overview",
86+
"redirect_document_id": false
87+
},
88+
{
89+
"source_path": "articles/devops-project/index.md",
90+
"redirect_url": "/previous-versions/azure/devops-project/overview",
91+
"redirect_document_id": false
92+
},
93+
{
94+
"source_path": "articles/devops-project/retirement-and-migration.md",
95+
"redirect_url": "/previous-versions/azure/devops-project/retirement-and-migration",
96+
"redirect_document_id": false
97+
},
98+
{
99+
"source_path": "articles/virtual-machines/linux/tutorial-azure-devops-blue-green-strategy.md",
100+
"redirect_url": "/previous-versions/azure/virtual-machines/linux/tutorial-azure-devops-blue-green-strategy",
101+
"redirect_document_id": false
102+
},
103+
{
104+
"source_path": "articles/virtual-machines/linux/tutorial-azure-devops-canary-strategy.md",
105+
"redirect_url": "/previous-versions/azure/virtual-machines/linux/tutorial-azure-devops-canary-strategy",
106+
"redirect_document_id": false
107+
},
108+
{
109+
"source_path": "articles/virtual-machines/linux/tutorial-build-deploy-azure-pipelines.md",
110+
"redirect_url": "/previous-versions/azure/virtual-machines/linux/tutorial-build-deploy-azure-pipelines",
111+
"redirect_document_id": false
112+
},
113+
{
114+
"source_path": "articles/aks/deployment-center-launcher.md",
115+
"redirect_url": "/previous-versions/azure/aks/deployment-center-launcher",
116+
"redirect_document_id": false
117+
}
118+
]
119+
}

articles/active-directory/develop/active-directory-v2-protocols.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ The endpoint URIs for your app are generated automatically when you register or
6363

6464
Two commonly used endpoints are the [authorization endpoint](v2-oauth2-auth-code-flow.md#request-an-authorization-code) and [token endpoint](v2-oauth2-auth-code-flow.md#redeem-a-code-for-an-access-token). Here are examples of the `authorize` and `token` endpoints:
6565

66-
```Bash
66+
```
6767
# Authorization endpoint - used by client to obtain authorization from the resource owner.
6868
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/authorize
6969
# Token endpoint - used by client to exchange an authorization grant or refresh token for an access token.

articles/active-directory/develop/howto-restrict-your-app-to-a-set-of-users.md

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ ms.service: active-directory
88
ms.subservice: develop
99
ms.workload: identity
1010
ms.topic: how-to
11-
ms.date: 12/19/2022
11+
ms.date: 03/28/2023
1212
ms.author: cwerner
1313
ms.reviewer: jmprieur, kkrishna
1414
ms.custom: aaddev, engagement-fy23
15+
1516
#Customer intent: As a tenant administrator, I want to restrict an application that I have registered in Azuren-e AD to a select set of users available in my Azure AD tenant
1617
---
1718

@@ -21,17 +22,17 @@ Applications registered in an Azure Active Directory (Azure AD) tenant are, by d
2122

2223
Similarly, in a [multi-tenant](howto-convert-app-to-be-multi-tenant.md) application, all users in the Azure AD tenant where the application is provisioned can access the application once they successfully authenticate in their respective tenant.
2324

24-
Tenant administrators and developers often have requirements where an application must be restricted to a certain set of users. There are two ways to restrict an application to a certain set of users or security groups:
25+
Tenant administrators and developers often have requirements where an application must be restricted to a certain set of users or apps (services). There are two ways to restrict an application to a certain set of users, apps or security groups:
2526

2627
- Developers can use popular authorization patterns like [Azure role-based access control (Azure RBAC)](howto-implement-rbac-for-apps.md).
2728
- Tenant administrators and developers can use built-in feature of Azure AD.
2829

2930
## Supported app configurations
3031

31-
The option to restrict an app to a specific set of users or security groups in a tenant works with the following types of applications:
32+
The option to restrict an app to a specific set of users, apps or security groups in a tenant works with the following types of applications:
3233

3334
- Applications configured for federated single sign-on with SAML-based authentication.
34-
- Application proxy applications that use Azure AD pre-authentication.
35+
- Application proxy applications that use Azure AD preauthentication.
3536
- Applications built directly on the Azure AD application platform that use OAuth 2.0/OpenID Connect authentication after a user or admin has consented to that application.
3637

3738
## Update the app to require user assignment
@@ -41,28 +42,60 @@ To update an application to require user assignment, you must be owner of the ap
4142
1. Sign in to the [Azure portal](https://portal.azure.com/)
4243
1. If you have access to multiple tenants, use the **Directories + subscriptions** filter :::image type="icon" source="./media/common/portal-directory-subscription-filter.png" border="false"::: in the top menu to switch the tenant in which you want to register an application.
4344
1. Search for and select **Azure Active Directory**.
44-
1. Under **Manage**, select **Enterprise Applications** > **All applications**.
45+
1. Under **Manage**, select **Enterprise Applications** then select **All applications**.
4546
1. Select the application you want to configure to require assignment. Use the filters at the top of the window to search for a specific application.
4647
1. On the application's **Overview** page, under **Manage**, select **Properties**.
4748
1. Locate the setting **Assignment required?** and set it to **Yes**. When this option is set to **Yes**, users and services attempting to access the application or services must first be assigned for this application, or they won't be able to sign-in or obtain an access token.
4849
1. Select **Save** on the top bar.
4950

5051
When an application requires assignment, user consent for that application isn't allowed. This is true even if users consent for that app would have otherwise been allowed. Be sure to [grant tenant-wide admin consent](../manage-apps/grant-admin-consent.md) to apps that require assignment.
5152

52-
## Assign the app to users and groups
53+
## Assign the app to users and groups to restrict access
5354

5455
Once you've configured your app to enable user assignment, you can go ahead and assign the app to users and groups.
5556

56-
1. Under **Manage**, select the **Users and groups** > **Add user/group** .
57+
1. Under **Manage**, select the **Users and groups** then select **Add user/group**.
5758
1. Select the **Users** selector.
5859

59-
A list of users and security groups will be shown along with a textbox to search and locate a certain user or group. This screen allows you to select multiple users and groups in one go.
60+
A list of users and security groups are shown along with a textbox to search and locate a certain user or group. This screen allows you to select multiple users and groups in one go.
6061

6162
1. Once you're done selecting the users and groups, select **Select**.
6263
1. (Optional) If you have defined app roles in your application, you can use the **Select role** option to assign the app role to the selected users and groups.
6364
1. Select **Assign** to complete the assignments of the app to the users and groups.
6465
1. Confirm that the users and groups you added are showing up in the updated **Users and groups** list.
6566

67+
## Restrict access to an app (resource) by assigning other services (client apps)
68+
69+
Follow the steps in this section to secure app-to-app authentication access for your tenant.
70+
71+
1. Navigate to Service Principal sign-in logs in your tenant to find services authenticating to access resources in your tenant.
72+
1. Check using app ID if a Service Principal exists for both resource and client apps in your tenant that you wish to manage access.
73+
```powershell
74+
Get-MgServicePrincipal `
75+
-Filter "AppId eq '$appId'"
76+
```
77+
1. Create a Service Principal using app ID, if it doesn't exist:
78+
```powershell
79+
New-MgServicePrincipal `
80+
-AppId $appId
81+
```
82+
1. Explicitly assign client apps to resource apps (this functionality is available only in API and not in the Azure AD Portal):
83+
```powershell
84+
$clientAppId = “[guid]
85+
$clientId = (Get-MgServicePrincipal -Filter "AppId eq '$clientAppId'").Id
86+
New-MgServicePrincipalAppRoleAssignment `
87+
-ServicePrincipalId $clientId `
88+
-PrincipalId $clientId `
89+
-ResourceId (Get-MgServicePrincipal -Filter "AppId eq '$appId'").Id `
90+
-AppRoleId "00000000-0000-0000-0000-000000000000"
91+
```
92+
1. Require assignment for the resource application to restrict access only to the explicitly assigned users or services.
93+
```powershell
94+
Update-MgServicePrincipal -ServicePrincipalId (Get-MgServicePrincipal -Filter "AppId eq '$appId'").Id -AppRoleAssignmentRequired:$true
95+
```
96+
> [!NOTE]
97+
> If you don't want tokens to be issued for an application or if you want to block an application from being accessed by users or services in your tenant, create a service principal for the application and [disable user sign-in](../manage-apps/disable-user-sign-in-portal.md) for it.
98+
6699
## More information
67100

68101
For more information about roles and security groups, see:

0 commit comments

Comments
 (0)