Skip to content

Commit 6c7b59d

Browse files
committed
Merging changes synced from https://github.com/MicrosoftDocs/azure-docs-pr (branch live)
2 parents a33c1d7 + 4821b7b commit 6c7b59d

File tree

324 files changed

+3213
-2266
lines changed

Some content is hidden

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

324 files changed

+3213
-2266
lines changed

.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,11 @@
992992
"redirect_url": "/azure/machine-learning/service/how-to-configure-environment",
993993
"redirect_document_id": false
994994
},
995+
{
996+
"source_path": "articles/firewall/public-preview.md",
997+
"redirect_url": "/azure/firewall/overview",
998+
"redirect_document_id": false
999+
},
9951000
{
9961001
"source_path": "articles/frontdoor/waf-faq.md",
9971002
"redirect_url": "/azure/web-application-firewall/afds/waf-faq",

articles/active-directory/authentication/TOC.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
- name: Advanced configuration for NPS extension
101101
href: howto-mfa-nps-extension-advanced.md
102102
- name: Azure VPN and Azure MFA
103-
href: ../../vpn-gateway/vpn-gateway-radiuis-mfa-nsp.md
103+
href: ../../vpn-gateway/vpn-gateway-radius-mfa-nsp.md
104104
- name: Remote Desktop Gateway
105105
href: howto-mfa-nps-extension-rdg.md
106106
- name: VPN

articles/active-directory/authentication/howto-mfa-mfasettings.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ services: multi-factor-authentication
66
ms.service: active-directory
77
ms.subservice: authentication
88
ms.topic: conceptual
9-
ms.date: 10/28/2019
9+
ms.date: 11/18/2019
1010

1111
ms.author: joflore
1212
author: MicrosoftGuyJFlo
@@ -368,7 +368,7 @@ When your users enroll their accounts for Azure Multi-Factor Authentication, the
368368
| Method | Description |
369369
|:--- |:--- |
370370
| Call to phone |Places an automated voice call. The user answers the call and presses # in the phone keypad to authenticate. The phone number is not synchronized to on-premises Active Directory. |
371-
| Text message to phone |Sends a text message that contains a verification code. The user is prompted to enter the verification code into the sign-in interface. This process is called one-way SMS. Two-way SMS means that the user must text back a particular code. Two-way SMS is deprecated and not supported after November 14, 2018. Users who are configured for two-way SMS are automatically switched to _call to phone_ verification at that time.|
371+
| Text message to phone |Sends a text message that contains a verification code. The user is prompted to enter the verification code into the sign-in interface. This process is called one-way SMS. Two-way SMS means that the user must text back a particular code. Two-way SMS is deprecated and not supported after November 14, 2018. Administrators should enable another method for users who previously used two-way SMS.|
372372
| Notification through mobile app |Sends a push notification to your phone or registered device. The user views the notification and selects **Verify** to complete verification. The Microsoft Authenticator app is available for [Windows Phone](https://www.microsoft.com/p/microsoft-authenticator/9nblgggzmcj6), [Android](https://go.microsoft.com/fwlink/?Linkid=825072), and [iOS](https://go.microsoft.com/fwlink/?Linkid=825073). |
373373
| Verification code from mobile app or hardware token |The Microsoft Authenticator app generates a new OATH verification code every 30 seconds. The user enters the verification code into the sign-in interface. The Microsoft Authenticator app is available for [Windows Phone](https://www.microsoft.com/p/microsoft-authenticator/9nblgggzmcj6), [Android](https://go.microsoft.com/fwlink/?Linkid=825072), and [iOS](https://go.microsoft.com/fwlink/?Linkid=825073). |
374374

articles/active-directory/authentication/howto-password-ban-bad-on-premises-faq.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: On-premises Azure AD Password Protection FAQ
55
services: active-directory
66
ms.service: active-directory
77
ms.subservice: authentication
8-
ms.topic: article
8+
ms.topic: troubleshooting
99
ms.date: 02/01/2019
1010

1111
ms.author: joflore

articles/active-directory/authentication/howto-registration-mfa-sspr-combined-troubleshoot.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Troubleshoot Azure AD Multi-Factor Authentication and self-service
55
services: active-directory
66
ms.service: active-directory
77
ms.subservice: authentication
8-
ms.topic: conceptual
8+
ms.topic: troubleshooting
99
ms.date: 02/20/2019
1010

1111
ms.author: joflore

articles/active-directory/authentication/multi-factor-authentication-faq.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ description: Frequently asked questions and answers related to Azure Multi-Facto
55
services: multi-factor-authentication
66
ms.service: active-directory
77
ms.subservice: authentication
8-
ms.topic: conceptual
9-
ms.date: 07/11/2018
8+
ms.topic: troubleshooting
9+
ms.date: 11/18/2019
1010

1111
ms.author: joflore
1212
author: MicrosoftGuyJFlo
@@ -139,14 +139,12 @@ If your organization doesn't have legacy clients, you should not allow your user
139139
>
140140
> App passwords are only necessary for apps that don't support modern authentication. Office 2013 clients support modern authentication protocols, but need to be configured. Now modern authentication is available to any customer running the March 2015 or later update for Office 2013. For more information, see the blog post [Updated Office 365 modern authentication](https://www.microsoft.com/microsoft-365/blog/2015/11/19/updated-office-365-modern-authentication-public-preview/).
141141
142-
**Q: My users say that sometimes they don't receive the text message, or they reply to two-way text messages but the verification times out.**
142+
**Q: My users say that sometimes they don't receive the text message or the verification times out.**
143143

144-
Delivery of text messages and receipt of replies in two-way SMS are not guaranteed because there are uncontrollable factors that might affect the reliability of the service. These factors include the destination country/region, the mobile phone carrier, and the signal strength.
144+
Delivery of SMS messages are not guaranteed because there are uncontrollable factors that might affect the reliability of the service. These factors include the destination country/region, the mobile phone carrier, and the signal strength.
145145

146146
If your users often have problems with reliably receiving text messages, tell them to use the mobile app or phone call method instead. The mobile app can receive notifications both over cellular and Wi-Fi connections. In addition, the mobile app can generate verification codes even when the device has no signal at all. The Microsoft Authenticator app is available for [Android](https://go.microsoft.com/fwlink/?Linkid=825072), [IOS](https://go.microsoft.com/fwlink/?Linkid=825073), and [Windows Phone](https://www.microsoft.com/p/microsoft-authenticator/9nblgggzmcj6).
147147

148-
If you must use text messages, we recommend using one-way SMS rather than two-way SMS when possible. One-way SMS is more reliable and it prevents users from incurring global SMS charges from replying to a text message that was sent from another country/region.
149-
150148
**Q: Can I change the amount of time my users have to enter the verification code from a text message before the system times out?**
151149

152150
In some cases, yes.
@@ -159,7 +157,7 @@ For one-way SMS with Azure MFA Server v7.0 or higher, you can configure the time
159157
>[!TIP]
160158
>If you have multiple MFA Servers, only the one that processed the original authentication request knows the verification code that was sent to the user. When the user enters the code, the authentication request to validate it must be sent to the same server. If the code validation is sent to a different server, the authentication is denied.
161159
162-
For two-way SMS with Azure MFA Server, you can configure the timeout setting in the MFA Management Portal. If users don't respond to the SMS within the defined timeout period, their authentication is denied.
160+
If users don't respond to the SMS within the defined timeout period, their authentication is denied.
163161

164162
For one-way SMS with Azure MFA in the cloud (including the AD FS adapter or the Network Policy Server extension), you cannot configure the timeout setting. Azure AD stores the verification code for 180 seconds.
165163

articles/active-directory/develop/authentication-scenarios.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ This attribute causes ASP.NET to check for the presence of a session cookie cont
145145
### How a web app delegates sign-in to Azure AD and obtains a token
146146

147147
User authentication happens via the browser. The OpenID protocol uses standard HTTP protocol messages.
148-
- The web app sends an HTTP 202 (redirect) to the browser to use Azure AD.
148+
- The web app sends an HTTP 302 (redirect) to the browser to use Azure AD.
149149
- When the user is authenticated, Azure AD sends the token to the web app by using a redirect through the browser.
150150
- The redirect is provided by the web app in the form of a redirect URI. This redirect URI is registered with the Azure AD application object. There can be several redirect URIs because the application may be deployed at several URLs. So the web app will also need to specify the redirect URi to use.
151151
- Azure AD verifies that the redirect URI sent by the web app is one of the registered redirect URIs for the app.
@@ -156,7 +156,7 @@ The flow described above applies, with slight differences, to desktop and mobile
156156

157157
Desktop and mobile applications can use an embedded Web control, or a system browser, for authentication. The following diagram shows how a Desktop or mobile app uses the Microsoft authentication library (MSAL) to acquire access tokens and call web APIs.
158158

159-
![Desktop app how it appears to be](media/authentication-scenarios/web-app-how-it-appears-to-be.png)
159+
![Desktop app how it appears to be](media/authentication-scenarios/desktop-app-how-it-appears-to-be.png)
160160

161161
MSAL uses a browser to get tokens, and as with web apps, delegates authentication to Azure AD.
162162

59.6 KB
Loading

articles/active-directory/develop/msal-net-client-assertions.md

Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ ms.devlang: na
1414
ms.topic: conceptual
1515
ms.tgt_pltfrm: na
1616
ms.workload: identity
17-
ms.date: 07/16/2019
17+
ms.date: 11/18/2019
1818
ms.author: jmprieur
1919
ms.reviewer:
2020
ms.custom: aaddev
@@ -23,6 +23,7 @@ ms.collection: M365-identity-device-management
2323
---
2424

2525
# Confidential client assertions
26+
2627
In order to prove their identity, confidential client applications exchange a secret with Azure AD. The secret can be:
2728
- A client secret (application password).
2829
- A certificate, which is used to build a signed assertion containing standard claims.
@@ -35,6 +36,9 @@ MSAL.NET has four methods to provide either credentials or assertions to the con
3536
- `.WithClientAssertion()`
3637
- `.WithClientClaims()`
3738

39+
> [!NOTE]
40+
> While it is possible to use the `WithClientAssertion()` API to acquire tokens for the confidential client, we do not recommend using it by default as it is more advanced and is designed to handle very specific scenarios which are not common. Using the `.WithCertificate()` API will allow MSAL.NET to handle this for you. This api offers you the ability to customize your authentication request if needed but the default assertion created by `.WithCertificate()` will suffice for most authentication scenarios. This API can also be used as a workaround in some scenarios where MSAL.NET fails to perform the signing operation internally.
41+
3842
### Signed assertions
3943

4044
A signed client assertion takes the form of a signed JWT with the payload containing the required authentication claims mandated by Azure AD, Base64 encoded. To use it:
@@ -63,9 +67,9 @@ Here is an example of how to craft these claims:
6367
private static IDictionary<string, string> GetClaims()
6468
{
6569
//aud = https://login.microsoftonline.com/ + Tenant ID + /v2.0
66-
string aud = "https://login.microsoftonline.com/72f988bf-86f1-41af-hd4m-2d7cd011db47/v2.0";
70+
string aud = $"https://login.microsoftonline.com/{tenantId}/v2.0";
6771

68-
string ConfidentialClientID = "61dab2ba-145d-4b1b-8569-bf4b9aed5dhb" //client id
72+
string ConfidentialClientID = "00000000-0000-0000-0000-000000000000" //client id
6973
const uint JwtToAadLifetimeInSeconds = 60 * 10; // Ten minutes
7074
DateTime validFrom = DateTime.UtcNow;
7175
var nbf = ConvertToTimeT(validFrom);
@@ -102,11 +106,11 @@ string Encode(byte[] arg)
102106
return s;
103107
}
104108

105-
string GetAssertion()
109+
string GetSignedClientAssertion()
106110
{
107111
//Signing with SHA-256
108112
string rsaSha256Signature = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
109-
X509Certificate2 certificate = ReadCertificate(config.CertificateName);
113+
X509Certificate2 certificate = new X509Certificate2("Certificate.pfx", "Password", X509KeyStorageFlags.EphemeralKeySet);
110114

111115
//Create RSACryptoServiceProvider
112116
var x509Key = new X509AsymmetricSecurityKey(certificate);
@@ -126,11 +130,57 @@ string GetAssertion()
126130
string token = Encode(Encoding.UTF8.GetBytes(JObject.FromObject(header).ToString())) + "." + Encode(Encoding.UTF8.GetBytes(JObject.FromObject(GetClaims())));
127131

128132
string signature = Encode(rsa.SignData(Encoding.UTF8.GetBytes(token), new SHA256Cng()));
129-
string SignedAssertion = string.Concat(token, ".", signature);
130-
return SignedAssertion;
133+
string signedClientAssertion = string.Concat(token, ".", signature);
134+
return signedClientAssertion;
131135
}
132136
```
133137

138+
### Alternative method
139+
140+
You also have the option of using [Microsoft.IdentityModel.JsonWebTokens](https://www.nuget.org/packages/Microsoft.IdentityModel.JsonWebTokens/) to create the assertion for you. The code will be a more elegant as shown in the example below:
141+
142+
```CSharp
143+
string GetSignedClientAssertion()
144+
{
145+
var cert = new X509Certificate2("Certificate.pfx", "Password", X509KeyStorageFlags.EphemeralKeySet);
146+
147+
//aud = https://login.microsoftonline.com/ + Tenant ID + /v2.0
148+
string aud = $"https://login.microsoftonline.com/{tenantID}/v2.0";
149+
150+
// client_id
151+
string confidentialClientID = "00000000-0000-0000-0000-000000000000";
152+
153+
// no need to add exp, nbf as JsonWebTokenHandler will add them by default.
154+
var claims = new Dictionary<string, object>()
155+
{
156+
{ "aud", aud },
157+
{ "iss", confidentialClientID },
158+
{ "jti", Guid.NewGuid().ToString() },
159+
{ "sub", confidentialClientID }
160+
};
161+
162+
var securityTokenDescriptor = new SecurityTokenDescriptor
163+
{
164+
Claims = claims,
165+
SigningCredentials = new X509SigningCredentials(cert)
166+
};
167+
168+
var handler = new JsonWebTokenHandler();
169+
var signedClientAssertion = handler.CreateToken(securityTokenDescriptor);
170+
}
171+
```
172+
173+
Once you have your signed client assertion, you can use it with the MSAL apis as shown below.
174+
175+
```CSharp
176+
string signedClientAssertion = GetSignedClientAssertion();
177+
178+
var confidentialApp = ConfidentialClientApplicationBuilder
179+
.Create(ConfidentialClientID)
180+
.WithClientAssertion(signedClientAssertion)
181+
.Build();
182+
```
183+
134184
### WithClientClaims
135185

136186
`WithClientClaims(X509Certificate2 certificate, IDictionary<string, string> claimsToSign, bool mergeWithDefaultClaims = true)` by default will produce a signed assertion containing the claims expected by Azure AD plus additional client claims that you want to send. Here is a code snippet on how to do that.

articles/active-directory/manage-apps/configure-single-sign-on-non-gallery-applications.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ If the application hasn't been added to your Azure AD tenant, see [Add a non-gal
4747

4848
| Basic SAML Configuration setting | SP-Initiated | idP-Initiated | Description |
4949
|:--|:--|:--|:--|
50-
| **Identifier (Entity ID)** | Required for some apps | Required for some apps | Uniquely identifies the application. Azure AD sends the identifier to the application as the Audience parameter of the SAML token. The application is expected to validate it. This value also appears as the Entity ID in any SAML metadata provided by the application. *You can find this value as the **Issuer** element in the **AuthnRequest** (SAML request) sent by the application.* |
50+
| **Identifier (Entity ID)** | Required for some apps | Required for some apps | Uniquely identifies the application. Azure AD sends the identifier to the application as the Audience parameter of the SAML token. The application is expected to validate it. This value also appears as the Entity ID in any SAML metadata provided by the application. Enter a URL that uses the following pattern: 'https://<subdomain>.contoso.com' *You can find this value as the **Issuer** element in the **AuthnRequest** (SAML request) sent by the application.* |
5151
| **Reply URL** | Required | Required | Specifies where the application expects to receive the SAML token. The reply URL is also referred to as the Assertion Consumer Service (ACS) URL. You can use the additional reply URL fields to specify multiple reply URLs. For example, you might need additional reply URLs for multiple subdomains. Or, for testing purposes you can specify multiple reply URLs (local host and public URLs) at one time. |
5252
| **Sign-on URL** | Required | Don't specify | When a user opens this URL, the service provider redirects to Azure AD to authenticate and sign on the user. Azure AD uses the URL to start the application from Office 365 or the Azure AD Access Panel. When blank, Azure AD performs IdP-initiated sign-on when a user launches the application from Office 365, the Azure AD Access Panel, or the Azure AD SSO URL.|
5353
| **Relay State** | Optional | Optional | Specifies to the application where to redirect the user after authentication is completed. Typically the value is a valid URL for the application. However, some applications use this field differently. For more information, ask the application vendor.

0 commit comments

Comments
 (0)