Skip to content

Commit 984c5b5

Browse files
authored
Merge pull request #102501 from MicrosoftDocs/master
Merge Master to Live, 4 AM
2 parents 98d558f + c2de8bd commit 984c5b5

File tree

98 files changed

+1050
-373
lines changed

Some content is hidden

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

98 files changed

+1050
-373
lines changed

articles/active-directory-domain-services/deploy-kcd.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ ms.author: iainfou
1616
---
1717
# Configure Kerberos constrained delegation (KCD) in Azure Active Directory Domain Services
1818

19-
As you run applications, there may be a need for those applications to access resources in the context of a different user. Active Directory Domain Services (AD DS) supports a mechanism called *Kerberos delegation* that enables this use-case. Kerberos *constrained* delegation (KCD) then builds on this mechanism to define specific resources that can be accessed in the context of the user. Azure Active Directory Domain Services (Azure AD DS) managed domains are more securely locked down that traditional on-premises AD DS environments, so use a more secure *resource-based* KCD.
19+
As you run applications, there may be a need for those applications to access resources in the context of a different user. Active Directory Domain Services (AD DS) supports a mechanism called *Kerberos delegation* that enables this use-case. Kerberos *constrained* delegation (KCD) then builds on this mechanism to define specific resources that can be accessed in the context of the user. Azure Active Directory Domain Services (Azure AD DS) managed domains are more securely locked down than traditional on-premises AD DS environments, so use a more secure *resource-based* KCD.
2020

2121
This article shows you how to configure resource-based Kerberos constrained delegation in an Azure AD DS managed domain.
2222

articles/active-directory/develop/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,8 @@
404404
href: active-directory-optional-claims.md
405405
- name: Configure token lifetimes
406406
href: active-directory-configurable-token-lifetimes.md
407+
- name: Handle SameSite cookie changes in Chrome browser
408+
href: howto-handle-samesite-cookie-changes-chrome-browser.md
407409
- name: Application configuration
408410
items:
409411
- name: New Azure portal app registration training guide
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
title: How to handle SameSite cookie changes in Chrome browser | Azure
3+
titleSuffix: Microsoft identity platform
4+
description: Learn how to handle SameSite cookie changes in Chrome browser.
5+
services: active-directory
6+
documentationcenter: ''
7+
author: jmprieur
8+
manager: CelesteDG
9+
10+
ms.service: active-directory
11+
ms.subservice: develop
12+
ms.workload: identity
13+
ms.topic: conceptual
14+
ms.date: 01/27/2020
15+
ms.author: jmprieur
16+
ms.reviewer: kkrishna
17+
ms.custom: aaddev
18+
---
19+
# Handle SameSite cookie changes in Chrome browser
20+
21+
## What is SameSite?
22+
23+
`SameSite` is a property that can be set in HTTP cookies to prevent Cross Site Request Forgery(CSRF) attacks in web applications:
24+
25+
- When `SameSite` is set to **Lax**, the cookie is sent in requests within the same site and in GET requests from other sites. It isn't sent in GET requests that are cross-domain.
26+
- A value of **Strict** ensures that the cookie is sent in requests only within the same site.
27+
28+
By default, the `SameSite` value is NOT set in browsers and that's why there are no restrictions on cookies being sent in requests. An application would need to opt-in to the CSRF protection by setting **Lax** or **Strict** per their requirements.
29+
30+
## SameSite changes and impact on authentication
31+
32+
Recent [updates to the standards on SameSite](https://tools.ietf.org/html/draft-west-cookie-incrementalism-00) propose protecting apps by making the default behavior of `SameSite` when no value is set to Lax. This mitigation means cookies will be restricted on HTTP requests except GET made from other sites. Additionally, a value of **None** is introduced to remove restrictions on cookies being sent. These updates will soon be released in an upcoming version of the Chrome browser.
33+
34+
When web apps authenticate with the Microsoft Identity platform using the response mode "form_post", the login server responds to the application using an HTTP POST to send the tokens or auth code. Because this request is a cross-domain request (from `login.microsoftonline.com` to your domain - for instance https://contoso.com/auth), cookies that were set by your app now fall under the new rules in Chrome. The cookies that need to be used in cross-site scenarios are cookies that hold the *state* and *nonce* values, that are also sent in the login request. There are other cookies dropped by Azure AD to hold the session.
35+
36+
If you don't update your web apps, this new behavior will result in authentication failures.
37+
38+
## Mitigation and samples
39+
40+
To overcome the authentication failures, web apps authenticating with the Microsoft identity platform can set the `SameSite` property to `None` for cookies that are used in cross-domain scenarios when running on the Chrome browser.
41+
Other browsers (see [here](https://www.chromium.org/updates/same-site/incompatible-clients) for a complete list) follow the previous behavior of `SameSite` and won't include the cookies if `SameSite=None` is set.
42+
That's why, to support authentication on multiple browsers web apps will have to set the `SameSite` value to `None` only on Chrome and leave the value empty on other browsers.
43+
44+
This approach is demonstrated in our code samples below.
45+
46+
# [.NET](#tab/dotnet)
47+
48+
The table below presents the pull requests that worked around the SameSite changes in our ASP.NET and ASP.NET Core samples.
49+
50+
| Sample | Pull request |
51+
| ------ | ------------ |
52+
| [ASP.NET Core Web App incremental tutorial](https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2) | [Same site cookie fix #261](https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/pull/261) |
53+
| [ASP.NET MVC Web App sample](https://github.com/Azure-Samples/ms-identity-aspnet-webapp-openidconnect) | [Same site cookie fix #35](https://github.com/Azure-Samples/ms-identity-aspnet-webapp-openidconnect/pull/35) |
54+
| [active-directory-dotnet-admin-restricted-scopes-v2](https://github.com/azure-samples/active-directory-dotnet-admin-restricted-scopes-v2) | [Same site cookie fix #28](https://github.com/Azure-Samples/active-directory-dotnet-admin-restricted-scopes-v2/pull/28) |
55+
56+
for details on how to handle SameSite cookies in ASP.NET and ASP.NET Core, see also:
57+
58+
- [Work with SameSite cookies in ASP.NET Core](https://docs.microsoft.com/aspnet/core/security/samesite) .
59+
- [ASP.NET Blog on SameSite issue](https://devblogs.microsoft.com/aspnet/upcoming-samesite-cookie-changes-in-asp-net-and-asp-net-core/)
60+
61+
# [Python](#tab/python)
62+
63+
| Sample |
64+
| ------ |
65+
| [ms-identity-python-webapp](https://github.com/Azure-Samples/ms-identity-python-webapp) |
66+
67+
# [Java](#tab/java)
68+
69+
| Sample | Pull request |
70+
| ------ | ------------ |
71+
| [ms-identity-java-webapp](https://github.com/Azure-Samples/ms-identity-java-webapp) | [Same site cookie fix #24](https://github.com/Azure-Samples/ms-identity-java-webapp/pull/24)
72+
| [ms-identity-java-webapi](https://github.com/Azure-Samples/ms-identity-java-webapi) | [Same site cookie fix #4](https://github.com/Azure-Samples/ms-identity-java-webapi/pull/4)
73+
74+
---
75+
76+
## Next steps
77+
78+
Learn more about SameSite and the Web app scenario:
79+
80+
> [!div class="nextstepaction"]
81+
> [Google Chrome's FAQ on SameSite](https://www.chromium.org/updates/same-site/faq)
82+
83+
> [!div class="nextstepaction"]
84+
> [Chromium SameSite page](https://www.chromium.org/updates/same-site)
85+
86+
> [!div class="nextstepaction"]
87+
> [Scenario: Web app that signs in users](scenario-web-app-sign-user-overview.md)

articles/active-directory/develop/scenario-web-app-sign-user-production.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,21 @@ Now that you know how to get a token to call web APIs, learn how to move it to p
2626

2727
## Next steps
2828

29+
### Same site
30+
31+
Make sure you understand possible issues with new versions of the Chrome browser
32+
33+
> [!div class="nextstepaction"]
34+
> [How to handle SameSite cookie changes in Chrome browser](howto-handle-samesite-cookie-changes-chrome-browser.md)
35+
2936
### Scenario for calling web APIs
3037

3138
After your web app signs in users, it can call web APIs on behalf of the signed-in users. Calling web APIs from the web app is the object of the following scenario:
3239

3340
> [!div class="nextstepaction"]
3441
> [Web app that calls web APIs](scenario-web-app-call-api-overview.md)
3542
36-
### Deep dive: ASP.NET Core web app tutorial
43+
## Deep dive: ASP.NET Core web app tutorial
3744

3845
Learn about other ways to sign in users with this ASP.NET Core tutorial:
3946

@@ -48,7 +55,7 @@ This progressive tutorial has production-ready code for a web app, including how
4855
- [Azure AD B2C](https://aka.ms/aadb2c)
4956
- National clouds
5057

51-
### Sample code: Java web app
58+
## Sample code: Java web app
5259

5360
Learn more about the Java web app from this sample on GitHub:
5461

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ The metadata is a simple JavaScript Object Notation (JSON) document. See the fol
7171
}
7272
```
7373

74-
If your app has custom signing keys as a result of using the [claims-mapping](active-directory-claims-mapping.md) feature, you must append an `appid` query parameter containing the app ID in order to get a `jwks_uri` pointing to your app's signing key information. For example: `https://login.microsoftonline.com/{tenant}/.well-known/v2.0/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e` contains a `jwks_uri` of `https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys?appid=6731de76-14a6-49ae-97bc-6eba6914391e`.
74+
If your app has custom signing keys as a result of using the [claims-mapping](active-directory-claims-mapping.md) feature, you must append an `appid` query parameter containing the app ID in order to get a `jwks_uri` pointing to your app's signing key information. For example: `https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e` contains a `jwks_uri` of `https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys?appid=6731de76-14a6-49ae-97bc-6eba6914391e`.
7575

7676
Typically, you would use this metadata document to configure an OpenID Connect library or SDK; the library would use the metadata to do its work. However, if you're not using a pre-built OpenID Connect library, you can follow the steps in the remainder of this article to do sign-in in a web app by using the Microsoft identity platform endpoint.
7777

articles/active-directory/hybrid/how-to-connect-sync-configure-filtering.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ Do the following steps:
293293

294294
After the synchronization, all changes are staged to be exported. Before you actually make the changes in Azure AD, you want to verify that all these changes are correct.
295295

296-
1. Start a command prompt, and go to `%Program Files%\Microsoft Azure AD Sync\bin`.
296+
1. Start a command prompt, and go to `%ProgramFiles%\Microsoft Azure AD Sync\bin`.
297297
2. Run `csexport "Name of Connector" %temp%\export.xml /f:x`.
298298
The name of the Connector is in Synchronization Service. It has a name similar to "contoso.com – AAD" for Azure AD.
299299
3. Run `CSExportAnalyzer %temp%\export.xml > %temp%\export.csv`.

articles/active-directory/managed-identities-azure-resources/services-support-managed-identities.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ Managed identity type | All Generally Available<br>Global Azure Regions | Azure
102102

103103
Refer to the following list to configure managed identity for Azure Logic Apps (in regions where available):
104104

105-
- [Azure portal](/azure/logic-apps/create-managed-service-identity#azure-portal-system-logic-app)
105+
- [Azure portal](/azure/logic-apps/create-managed-service-identity#azure-portal)
106106
- [Azure Resource Manager template](/azure/app-service/overview-managed-identity)
107107

108108
### Azure Data Factory V2
@@ -154,6 +154,17 @@ Refer to the following list to configure managed identity for Azure Container Re
154154

155155
- [Azure CLI](~/articles/container-registry/container-registry-tasks-authentication-managed-identity.md)
156156

157+
### Azure Service Fabric
158+
[Managed Identity for Service Fabric Applications](https://docs.microsoft.com/en-us/azure/service-fabric/concepts-managed-identity) is in Preview and available in all regions.
159+
160+
Managed identity type | All Generally Available<br>Global Azure Regions | Azure Government | Azure Germany | Azure China 21Vianet |
161+
| --- | --- | --- | --- | --- |
162+
| System assigned | Available | Not Available | Not Available | not Available |
163+
| User assigned | Available | Not Available | Not Available |Not Available |
164+
165+
Refer to the following list to configure managed identity for Azure Service Fabric applications in all regions:
166+
- [Azure Resource Manager template](https://github.com/Azure-Samples/service-fabric-managed-identity/tree/anmenard-docs)
167+
157168
## Azure services that support Azure AD authentication
158169

159170
The following services support Azure AD authentication, and have been tested with client services that use managed identities for Azure resources.

articles/active-directory/users-groups-roles/directory-assign-admin-roles.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1716,7 +1716,7 @@ External Identity Provider Administrator | External Identity Provider Administra
17161716
Global Reader | Global reader | f2ef992c-3afb-46b9-b7cf-a126ee74c451
17171717
Group Administrator | Group administrator | fdd7a751-b60b-444a-984c-02652fe8fa1c
17181718
Guest Inviter | Guest inviter | 95e79109-95c0-4d8e-aee3-d01accf2d47b
1719-
Helpdesk Administrator | Password administrator | 729827e3-9c14-49f7-bb1b-9608f156bbb8
1719+
Helpdesk Administrator | Helpdesk administrator | 729827e3-9c14-49f7-bb1b-9608f156bbb8
17201720
Intune Service Administrator | Intune administrator | 3a2c62db-5318-420d-8d74-23affee5d9d5
17211721
Kaizala Administrator | Kaizala administrator | 74ef975b-6605-40af-a5d2-b9539d836353
17221722
License Administrator | License administrator | 4d6ac14f-3453-41d0-bef9-a3e0c569773a

articles/aks/windows-container-cli.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: mlearned
66

77
ms.service: container-service
88
ms.topic: article
9-
ms.date: 06/17/2019
9+
ms.date: 01/27/2020
1010
ms.author: mlearned
1111

1212
#Customer intent: As a developer or cluster operator, I want to quickly create an AKS cluster and deploy a Windows Server container so that I can see how to run applications running on a Windows Server container using the managed Kubernetes service in Azure.
@@ -134,7 +134,7 @@ az aks create \
134134
--name myAKSCluster \
135135
--node-count 2 \
136136
--enable-addons monitoring \
137-
--kubernetes-version 1.14.6 \
137+
--kubernetes-version 1.15.7 \
138138
--generate-ssh-keys \
139139
--windows-admin-password $PASSWORD_WIN \
140140
--windows-admin-username azureuser \
@@ -160,7 +160,7 @@ az aks nodepool add \
160160
--os-type Windows \
161161
--name npwin \
162162
--node-count 1 \
163-
--kubernetes-version 1.14.6
163+
--kubernetes-version 1.15.7
164164
```
165165

166166
The above command creates a new node pool named *npwin* and adds it to the *myAKSCluster*. When creating a node pool to run Windows Server containers, the default value for *node-vm-size* is *Standard_D2s_v3*. If you choose to set the *node-vm-size* parameter, please check the list of [restricted VM sizes][restricted-vm-sizes]. The minimum recommended size is *Standard_D2s_v3*. The above command also uses the default subnet in the default vnet created when running `az aks create`.
@@ -189,8 +189,8 @@ The following example output shows the all the nodes in the cluster. Make sure t
189189

190190
```
191191
NAME STATUS ROLES AGE VERSION
192-
aks-nodepool1-12345678-vmssfedcba Ready agent 13m v1.14.6
193-
aksnpwin987654 Ready agent 108s v1.14.6
192+
aks-nodepool1-12345678-vmssfedcba Ready agent 13m v1.15.7
193+
aksnpwin987654 Ready agent 108s v1.15.7
194194
```
195195

196196
## Run the application

articles/azure-functions/durable/durable-functions-custom-orchestration-status.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ module.exports = async function(context, req) {
128128
context.log(`Started orchestration with ID = '${instanceId}'.`);
129129

130130
let durableOrchestrationStatus = await client.getStatus(instanceId);
131-
while (status.customStatus.toString() !== "London") {
131+
while (durableOrchestrationStatus.customStatus.toString() !== "London") {
132132
await new Promise((resolve) => setTimeout(resolve, 200));
133133
durableOrchestrationStatus = await client.getStatus(instanceId);
134134
}

0 commit comments

Comments
 (0)