Skip to content

Commit 758833d

Browse files
committed
Merge remote-tracking branch 'refs/remotes/MicrosoftDocs/master'
2 parents 426e1f2 + d06d6b0 commit 758833d

File tree

456 files changed

+3593
-3320
lines changed

Some content is hidden

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

456 files changed

+3593
-3320
lines changed

articles/active-directory-b2c/active-directory-b2c-reference-oauth-code.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ grant_type=authorization_code&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6&sco
111111
|{tenant}| Required | Name of your Azure AD B2C tenant|
112112
|{policy}| Required| The user flow that was used to acquire the authorization code. You cannot use a different user flow in this request. |
113113
| client_id |Required |The application ID assigned to your app in the [Azure portal](https://portal.azure.com).|
114+
| client_secret | Yes, in Web Apps | The application secret that was generated in the [Azure portal](https://portal.azure.com/). Client secrets are used in this flow for Web App scenarios, where the client can securely store a client secret. For Native App (public client) scenarios, client secrets cannot be securely stored, and therefore are not used in this call. If you use a client secret, please change it on a periodic basis. |
114115
| grant_type |Required |The type of grant. For the authorization code flow, the grant type must be `authorization_code`. |
115116
| scope |Recommended |A space-separated list of scopes. A single scope value indicates to Azure AD both of the permissions that are being requested. Using the client ID as the scope indicates that your app needs an access token that can be used against your own service or web API, represented by the same client ID. The `offline_access` scope indicates that your app needs a refresh token for long-lived access to resources. You also can use the `openid` scope to request an ID token from Azure AD B2C. |
116117
| code |Required |The authorization code that you acquired in the first leg of the flow. |
@@ -176,7 +177,7 @@ grant_type=refresh_token&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6&scope=90
176177
|{tenant}| Required | Name of your Azure AD B2C tenant|
177178
|{policy} |Required |The user flow that was used to acquire the original refresh token. You cannot use a different user flow in this request. |
178179
| client_id |Required |The application ID assigned to your app in the [Azure portal](https://portal.azure.com). |
179-
| client_secret |Required |The client_secret associated to your client_id in the [Azure portal](https://portal.azure.com). |
180+
| client_secret | Yes, in Web Apps | The application secret that was generated in the [Azure portal](https://portal.azure.com/). Client secrets are used in this flow for Web App scenarios, where the client can securely store a client secret. For Native App (public client) scenarios, client secrets cannot be securely stored, and therefore are not used in this call. If you use a client secret, please change it on a periodic basis. |
180181
| grant_type |Required |The type of grant. For this leg of the authorization code flow, the grant type must be `refresh_token`. |
181182
| scope |Recommended |A space-separated list of scopes. A single scope value indicates to Azure AD both of the permissions that are being requested. Using the client ID as the scope indicates that your app needs an access token that can be used against your own service or web API, represented by the same client ID. The `offline_access` scope indicates that your app will need a refresh token for long-lived access to resources. You also can use the `openid` scope to request an ID token from Azure AD B2C. |
182183
| redirect_uri |Optional |The redirect URI of the application where you received the authorization code. |

articles/active-directory-b2c/validation-technical-profile.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ A validation technical profile can be conditionally executed based on preconditi
3535

3636
A self-asserted technical profile may define a validation technical profile to be used for validating some or all of its output claims. All of the input claims of the referenced technical profile must appear in the output claims of the referencing validation technical profile.
3737

38+
> [!NOTE]
39+
> Only self-asserted technical profiles can use validation technical profiles. If you need to validate the output claims from non-self-asserted technical profiles, consider using an additional orchestration step in your user journey to accommodate the technical profile in charge of the validation.
40+
3841
## ValidationTechnicalProfiles
3942

4043
The **ValidationTechnicalProfiles** element contains the following elements:

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)