Skip to content

Commit 087ee51

Browse files
authored
Merge pull request #78444 from MicrosoftDocs/master
5/31 AM Publish
2 parents ef06b16 + b2faccd commit 087ee51

File tree

40 files changed

+592
-329
lines changed

40 files changed

+592
-329
lines changed

articles/active-directory/develop/msal-client-application-configuration.md

Lines changed: 54 additions & 55 deletions
Large diffs are not rendered by default.

articles/active-directory/develop/msal-client-applications.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,37 +17,37 @@ ms.date: 04/25/2019
1717
ms.author: ryanwi
1818
ms.reviewer: saeeda
1919
ms.custom: aaddev
20-
#Customer intent: As an application developer, I want to learn about the types of client application so I can decide if this platform meets my application development needs and requirements.
20+
#Customer intent: As an application developer, I want to learn about the types of client apps so I can decide if this platform meets my app development requirements.
2121
ms.collection: M365-identity-device-management
2222
---
2323

2424
# Public client and confidential client applications
25-
Microsoft Authentication Library (MSAL) defines two types of clients: public clients and confidential clients. The two client types are distinguished by their ability to authenticate securely with the authorization server and maintain the confidentiality of their client credentials. In contrast, Azure AD Authentication Library (ADAL) has the concept of authentication context (which is a connection to Azure AD).
25+
Microsoft Authentication Library (MSAL) defines two types of clients: public clients and confidential clients. The two client types are distinguished by their ability to authenticate securely with the authorization server and maintain the confidentiality of their client credentials. In contrast, Azure AD Authentication Library (ADAL) uses what's called *authentication context* (which is a connection to Azure AD).
2626

27-
- **Confidential client applications** are applications, which run on servers (Web Apps, Web API, or even service/daemon applications). They are considered difficult to access, and therefore capable of keeping an application secret. Confidential clients are able to hold configuration time secrets. Each instance of the client has a distinct configuration (including clientId and secret). These values are difficult for end users to extract. A web app is the most common confidential client. The client ID is exposed through the web browser, but the secret is passed only in the back channel and never directly exposed.
27+
- **Confidential client applications** are apps that run on servers (web apps, Web API apps, or even service/daemon apps). They're considered difficult to access, and for that reason capable of keeping an application secret. Confidential clients can hold configuration-time secrets. Each instance of the client has a distinct configuration (including client ID and client secret). These values are difficult for end users to extract. A web app is the most common confidential client. The client ID is exposed through the web browser, but the secret is passed only in the back channel and never directly exposed.
2828

2929
Confidential client apps: <BR>
3030
![Web app](media/msal-client-applications/web-app.png) ![Web API](media/msal-client-applications/web-api.png) ![Daemon/service](media/msal-client-applications/daemon-service.png)
3131

32-
- **Public client applications** are applications, which run on devices or desktop machines or in a web browser. They are not trusted to safely keep application secrets, and therefore only access Web APIs on behalf of the user (they only support public client flows). Public clients are unable to hold configuration time secrets, and as a result have no client secret.
32+
- **Public client applications** are apps that run on devices or desktop computers or in a web browser. They're not trusted to safely keep application secrets, so they only access Web APIs on behalf of the user. (They support only public client flows.) Public clients can't hold configuration-time secrets, so they don't have client secrets.
3333

34-
Public client applications: <BR>
34+
Public client apps: <BR>
3535
![Desktop app](media/msal-client-applications/desktop-app.png) ![Browserless API](media/msal-client-applications/browserless-app.png) ![Mobile app](media/msal-client-applications/mobile-app.png)
3636

3737
> [!NOTE]
38-
> In MSAL.js, there is no separation of public and confidential client apps. MSAL.js represents client apps as user-agent-based apps, a public client in which the client code is executed in a user-agent such as a web browser. These clients do not store secrets, since the browser context is openly accessible.
38+
> In MSAL.js, there is no separation of public and confidential client apps. MSAL.js represents client apps as user agent-based apps, public clients in which the client code is executed in a user agent like a web browser. These clients don't store secrets because the browser context is openly accessible.
3939
4040
## Comparing the client types
41-
There are some commonalities and differences between public client and confidential client applications:
41+
Here are some similarities and differences between public client and confidential client apps:
4242

43-
- Both kinds of applications maintain a user token cache and can acquire a token silently (in cases where the token is already in the token cache). Confidential client applications also have an app token cache for tokens, which are for the app itself.
44-
- Both manage user accounts and can get the accounts from the user token cache, get an account from its identifier, or remove an account.
45-
- Public client applications have four ways of acquiring a token (four authentication flows), whereas confidential client applications have three (and one method to compute the URL of the identity provider authorize endpoint). For more information, see Scenarios and Acquiring tokens.
43+
- Both kinds of app maintain a user token cache and can acquire a token silently (when the token is already in the token cache). Confidential client apps also have an app token cache for tokens that are for the app itself.
44+
- Both types of app manage user accounts and can get an account from the user token cache, get an account from its identifier, or remove an account.
45+
- Public client apps have four ways to acquire a token (four authentication flows). Confidential client apps have three ways to acquire a token (and one way to compute the URL of the identity provider authorize endpoint). For more information, see [Acquiring tokens](msal-acquire-cache-tokens.md).
4646

47-
If you used ADAL in the past, you might notice that, contrary to ADAL's authentication context, in MSAL the client ID (also named application ID or app ID) is passed once at the construction of the application, and no longer needs to be repeated when acquiring a token. This is the case both for public and confidential client applications. Constructors of confidential client applications are also passed client credentials: the secret they share with the identity provider.
47+
If you've used ADAL, you might notice that, unlike ADAL's authentication context, in MSAL the client ID (also called the *application ID* or *app ID*) is passed once at the construction of the application. It doesn't need to be passed again when the app acquires a token. This is true for both for public and confidential client apps. Constructors of confidential client apps are also passed client credentials: the secret they share with the identity provider.
4848

4949
## Next steps
5050
Learn about:
5151
- [Client application configuration options](msal-client-application-configuration.md)
52-
- [Instantiating client applications using MSAL.NET](msal-net-initializing-client-applications.md).
53-
- [Instantiating client applications using MSAL.js](msal-js-initializing-client-applications.md).
52+
- [Instantiating client applications by using MSAL.NET](msal-net-initializing-client-applications.md)
53+
- [Instantiating client applications by using MSAL.js](msal-js-initializing-client-applications.md)

articles/active-directory/fundamentals/active-directory-how-subscriptions-associated-directory.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Before you can associate or add your subscription, you must perform the followin
3838
- Users that have been assigned roles using RBAC will lose their access
3939
- Service Administrator and Co-Administrators will lose access
4040
- If you have any key vaults, they'll be inaccessible and you'll have to fix them after association
41+
- If you have any managed identities for resources such as Virtual Machines or Logic Apps, you'll have to re-enable or recreate them after the association
4142
- If you have a registered Azure Stack, you'll have to re-register it after association
4243

4344
1. Sign in using an account that:
@@ -72,7 +73,9 @@ After you associate a subscription to a different directory, there might be addi
7273

7374
1. If you have any key vaults, you must change the key vault tenant ID. For more information, see [Change a key vault tenant ID after a subscription move](../../key-vault/key-vault-subscription-move-fix.md).
7475

75-
2. If you have registered an Azure Stack using this subscription, you must re-register. For more information, see [Register Azure Stack with Azure](/azure-stack/operator/azure-stack-registration).
76+
2. If you were using system-assigned Managed Identities for resources, you must re-enable these. If you were using user-assigned Managed Identities, you must re-create these. After re-enabling or recreating the Managed Identities, you must re-establish the permissions assigned to those identities. For more information see [What is managed identities for Azure resources?](../managed-identities-azure-resources/overview.md).
77+
78+
3. If you have registered an Azure Stack using this subscription, you must re-register. For more information, see [Register Azure Stack with Azure](/azure-stack/operator/azure-stack-registration).
7679

7780

7881

articles/aks/concepts-network.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ In AKS, you can create an Ingress resource using something like NGINX, or use th
9696

9797
Another common feature of Ingress is SSL/TLS termination. On large web applications accessed via HTTPS, the TLS termination can be handled by the Ingress resource rather than within the application itself. To provide automatic TLS certification generation and configuration, you can configure the Ingress resource to use providers such as Let's Encrypt. For more information on configuring an NGINX Ingress controller with Let's Encrypt, see [Ingress and TLS][aks-ingress-tls].
9898

99+
You can also configure your ingress controller to preserve the client source IP on requests to containers in your AKS cluster. When a client's request is routed to a container in your AKS cluster via your ingress controller, the original source ip of that request will not be available to the target container. When you enable *client source IP preservation*, the source IP for the client is available in the request header under *X-Forwarded-For*. If you are using client source IP preservation on your ingress controller, you cannot use SSL pass-through. Client source IP preservation and SSL pass-through can be used with other services, such as the *LoadBalancer* type.
100+
99101
## Network security groups
100102

101103
A network security group filters traffic for VMs, such as the AKS nodes. As you create Services, such as a LoadBalancer, the Azure platform automatically configures any network security group rules that are needed. Don't manually configure network security group rules to filter traffic for pods in an AKS cluster. Define any required ports and forwarding as part of your Kubernetes Service manifests, and let the Azure platform create or update the appropriate rules. You can also use network policies, as discussed in the next section, to automatically apply traffic filter rules to pods.

articles/aks/ingress-basic.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ The ingress controller also needs to be scheduled on a Linux node. Windows Serve
3838
> [!TIP]
3939
> The following example creates a Kubernetes namespace for the ingress resources named *ingress-basic*. Specify a namespace for your own environment as needed. If your AKS cluster is not RBAC enabled, add `--set rbac.create=false` to the Helm commands.
4040
41+
> [!TIP]
42+
> If you would like to enable [client source IP preservation][client-source-ip] for requests to containers in your cluster, add `--set controller.service.externalTrafficPolicy=Local` to the Helm install command. The client source IP is stored in the request header under *X-Forwarded-For*. When using an ingress controller with client source IP preservation enabled, SSL pass-through will not work.
43+
4144
```console
4245
# Create a namespace for your ingress resources
4346
kubectl create namespace ingress-basic
@@ -222,3 +225,4 @@ You can also:
222225
[aks-ingress-static-tls]: ingress-static-ip.md
223226
[aks-http-app-routing]: http-application-routing.md
224227
[aks-ingress-own-tls]: ingress-own-tls.md
228+
[client-source-ip]: concepts-network.md#ingress-controllers

articles/aks/ingress-internal-ip.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ The ingress controller also needs to be scheduled on a Linux node. Windows Serve
5050
> [!TIP]
5151
> The following example creates a Kubernetes namespace for the ingress resources named *ingress-basic*. Specify a namespace for your own environment as needed. If your AKS cluster is not RBAC enabled, add `--set rbac.create=false` to the Helm commands.
5252

53+
> [!TIP]
54+
> If you would like to enable [client source IP preservation][client-source-ip] for requests to containers in your cluster, add `--set controller.service.externalTrafficPolicy=Local` to the Helm install command. The client source IP is stored in the request header under *X-Forwarded-For*. When using an ingress controller with client source IP preservation enabled, SSL pass-through will not work.
55+
5356
```console
5457
# Create a namespace for your ingress resources
5558
kubectl create namespace ingress-basic
@@ -271,3 +274,4 @@ You can also:
271274
[aks-ingress-static-tls]: ingress-static-ip.md
272275
[aks-http-app-routing]: http-application-routing.md
273276
[aks-ingress-own-tls]: ingress-own-tls.md
277+
[client-source-ip]: concepts-network.md#ingress-controllers

articles/aks/ingress-own-tls.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ The ingress controller also needs to be scheduled on a Linux node. Windows Serve
3838
> [!TIP]
3939
> The following example creates a Kubernetes namespace for the ingress resources named *ingress-basic*. Specify a namespace for your own environment as needed. If your AKS cluster is not RBAC enabled, add `--set rbac.create=false` to the Helm commands.
4040
41+
> [!TIP]
42+
> If you would like to enable [client source IP preservation][client-source-ip] for requests to containers in your cluster, add `--set controller.service.externalTrafficPolicy=Local` to the Helm install command. The client source IP is stored in the request header under *X-Forwarded-For*. When using an ingress controller with client source IP preservation enabled, SSL pass-through will not work.
43+
4144
```console
4245
# Create a namespace for your ingress resources
4346
kubectl create namespace ingress-basic
@@ -311,3 +314,4 @@ You can also:
311314
[aks-ingress-basic]: ingress-basic.md
312315
[aks-http-app-routing]: http-application-routing.md
313316
[aks-ingress-tls]: ingress-tls.md
317+
[client-source-ip]: concepts-network.md#ingress-controllers

articles/aks/ingress-static-ip.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ The ingress controller also needs to be scheduled on a Linux node. Windows Serve
5656
> [!TIP]
5757
> The following example creates a Kubernetes namespace for the ingress resources named *ingress-basic*. Specify a namespace for your own environment as needed. If your AKS cluster is not RBAC enabled, add `--set rbac.create=false` to the Helm commands.
5858
59+
> [!TIP]
60+
> If you would like to enable [client source IP preservation][client-source-ip] for requests to containers in your cluster, add `--set controller.service.externalTrafficPolicy=Local` to the Helm install command. The client source IP is stored in the request header under *X-Forwarded-For*. When using an ingress controller with client source IP preservation enabled, SSL pass-through will not work.
61+
5962
```console
6063
# Create a namespace for your ingress resources
6164
kubectl create namespace ingress-basic
@@ -420,4 +423,5 @@ You can also:
420423
[aks-ingress-own-tls]: ingress-own-tls.md
421424
[aks-quickstart-cli]: kubernetes-walkthrough.md
422425
[aks-quickstart-portal]: kubernetes-walkthrough-portal.md
426+
[client-source-ip]: concepts-network.md#ingress-controllers
423427
[install-azure-cli]: /cli/azure/install-azure-cli

articles/aks/ingress-tls.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ The ingress controller also needs to be scheduled on a Linux node. Windows Serve
4343
> [!TIP]
4444
> The following example creates a Kubernetes namespace for the ingress resources named *ingress-basic*. Specify a namespace for your own environment as needed. If your AKS cluster is not RBAC enabled, add `--set rbac.create=false` to the Helm commands.
4545
46+
> [!TIP]
47+
> If you would like to enable [client source IP preservation][client-source-ip] for requests to containers in your cluster, add `--set controller.service.externalTrafficPolicy=Local` to the Helm install command. The client source IP is stored in the request header under *X-Forwarded-For*. When using an ingress controller with client source IP preservation enabled, SSL pass-through will not work.
48+
4649
```console
4750
# Create a namespace for your ingress resources
4851
kubectl create namespace ingress-basic
@@ -402,4 +405,5 @@ You can also:
402405
[aks-ingress-own-tls]: ingress-own-tls.md
403406
[aks-quickstart-cli]: kubernetes-walkthrough.md
404407
[aks-quickstart-portal]: kubernetes-walkthrough-portal.md
405-
[install-azure-cli]: /cli/azure/install-azure-cli
408+
[client-source-ip]: concepts-network.md#ingress-controllers
409+
[install-azure-cli]: /cli/azure/install-azure-cli

articles/app-service/containers/configure-custom-container.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ This guide provides key concepts and instructions for containerization of Linux
2424

2525
## Configure port number
2626

27-
The web server in your custom image may use a port other than 80. You tell Azure about the port that your custom uses by using the `WEBSITES_PORT` app setting. The GitHub page for the [Python sample in this tutorial](https://github.com/Azure-Samples/docker-django-webapp-linux) shows that you need to set `WEBSITES_PORT` to _8000_. You can set it by running [`az webapp config appsettings set`](/cli/azure/webapp/config/appsettings?view=azure-cli-latest#az-webapp-config-appsettings-set) command in the Cloud Shell. For example:
27+
The web server in your custom image may use a port other than 80. You tell Azure about the port that your custom container uses by using the `WEBSITES_PORT` app setting. The GitHub page for the [Python sample in this tutorial](https://github.com/Azure-Samples/docker-django-webapp-linux) shows that you need to set `WEBSITES_PORT` to _8000_. You can set it by running [`az webapp config appsettings set`](/cli/azure/webapp/config/appsettings?view=azure-cli-latest#az-webapp-config-appsettings-set) command in the Cloud Shell. For example:
2828

2929
```azurecli-interactive
3030
az webapp config appsettings set --resource-group <resource-group-name> --name <app-name> --settings WEBSITES_PORT=8000

0 commit comments

Comments
 (0)