Skip to content

Commit 71306d1

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into adDiskGA
2 parents 1cf88fe + 3b34d42 commit 71306d1

File tree

160 files changed

+4214
-1069
lines changed

Some content is hidden

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

160 files changed

+4214
-1069
lines changed

articles/active-directory-b2c/partner-akamai-secure-hybrid-access.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ To get started, you'll need:
4040

4141
- An application that uses headers for authentication. In this sample, we'll use an application that displays headers [docker header-demo-app](https://hub.docker.com/r/mistermik/header-demo-app).
4242

43-
- **OR** an OpenID Connect (OIDC) application. In this sample, we'll use an [ASP.NET MVC web app](https://learn.microsoft.com/azure/active-directory/develop/tutorial-v2-asp-webapp) that signs in users by using the Open Web Interface for .NET (OWIN) middleware and the Microsoft identity platform.
43+
- **OR** an OpenID Connect (OIDC) application. In this sample, we'll use an [ASP.NET MVC web app](../active-directory/develop/tutorial-v2-asp-webapp.md) that signs in users by using the Open Web Interface for .NET (OWIN) middleware and the Microsoft identity platform.
4444

4545
## Scenario description
4646

@@ -111,9 +111,9 @@ Akamai Enterprise Application Access supports SAML federation with cloud IdPs li
111111
112112
2. Create a signing certificate for Azure AD B2C to sign the SAML response sent to Akamai Enterprise Application Access:
113113
114-
a. [**Obtain a certificate**](https://learn.microsoft.com/azure/active-directory-b2c/saml-service-provider?tabs=windows&pivots=b2c-custom-policy#obtain-a-certificate). If you don't already have a certificate, you can use a self-signed certificate.
114+
a. [**Obtain a certificate**](saml-service-provider.md?tabs=windows&pivots=b2c-custom-policy#obtain-a-certificate). If you don't already have a certificate, you can use a self-signed certificate.
115115
116-
b. [**Upload the certificate**](https://learn.microsoft.com/azure/active-directory-b2c/saml-service-provider?tabs=windows&pivots=b2c-custom-policy#upload-the-certificate) in your Azure AD B2C tenant. Take note of the name as it will be needed in the `TechnicalProfile` mentioned in the next steps.
116+
b. [**Upload the certificate**](./saml-service-provider.md?tabs=windows&pivots=b2c-custom-policy#upload-the-certificate) in your Azure AD B2C tenant. Take note of the name as it will be needed in the `TechnicalProfile` mentioned in the next steps.
117117
118118
3. Enable your policy to connect with a SAML application.
119119
@@ -398,7 +398,7 @@ Once the Application is deployed in a private environment and a connector is cap
398398

399399
#### Option 2: OpenID Connect
400400

401-
In this sample, we'll use a [ASP.NET MVC web app](https://learn.microsoft.com/azure/active-directory/develop/tutorial-v2-asp-webapp) that signs in users by using the Open Web Interface for .NET (OWIN) middleware and the Microsoft identity platform.
401+
In this sample, we'll use a [ASP.NET MVC web app](../active-directory/develop/tutorial-v2-asp-webapp.md) that signs in users by using the Open Web Interface for .NET (OWIN) middleware and the Microsoft identity platform.
402402

403403
1. Configure the OIDC to SAML bridging in the **AZURE AD B2C SAML IdP** created with the previous steps.
404404

@@ -422,7 +422,7 @@ In this sample, we'll use a [ASP.NET MVC web app](https://learn.microsoft.com/az
422422

423423
[ ![Screenshot shows the akamai oidc app claim settings.](./media/partner-akamai-secure-hybrid-access/akamai-oidc-claims-settings.png)](./media/partner-akamai-secure-hybrid-access/akamai-oidc-claims-settings.png#lightbox)
424424

425-
7. Replace startup class with the following code in the [ASP.NET MVC web app](https://learn.microsoft.com/azure/active-directory/develop/tutorial-v2-asp-webapp).
425+
7. Replace startup class with the following code in the [ASP.NET MVC web app](../active-directory/develop/tutorial-v2-asp-webapp.md).
426426

427427
These few changes configure the Authorization code flow grant, the authorization code will be redeemed for tokens at the token endpoint for the application, and it introduces the Metadata Address to set the discovery endpoint for obtaining metadata from Akamai.
428428

@@ -496,7 +496,7 @@ In this sample, we'll use a [ASP.NET MVC web app](https://learn.microsoft.com/az
496496

497497
8. In the `web.config` file add the Metadata address, replace clientId, clientsecret, authority, redirectUri and PostLogoutRedirectUri with the values from the Akamai application in `appSettings`.
498498

499-
You can find these values in the previous step 5 in the OpenID tab for the HTTP Akamai Application, where you created `Discovery URL=MetadataAddress`. `redirectUri` is the local address for the Akamai connector to resolve to the local OIDC application. `Authority` is the authorization_endpoint you can find from your `.well-known/openid-configuration` [document](https://learn.microsoft.com/azure/active-directory/develop/v2-protocols-oidc).
499+
You can find these values in the previous step 5 in the OpenID tab for the HTTP Akamai Application, where you created `Discovery URL=MetadataAddress`. `redirectUri` is the local address for the Akamai connector to resolve to the local OIDC application. `Authority` is the authorization_endpoint you can find from your `.well-known/openid-configuration` [document](../active-directory/develop/v2-protocols-oidc.md).
500500

501501
Discovery URL: `https://fabrikam.login.go.akamai-access.com/.well-known/openid-configuration`
502502

@@ -532,8 +532,8 @@ In this sample, we'll use a [ASP.NET MVC web app](https://learn.microsoft.com/az
532532

533533
- [Akamai Enterprise Application Access getting started documentation](https://techdocs.akamai.com/eaa/docs/welcome-guide)
534534

535-
- [Custom policies in Azure AD B2C](https://docs.microsoft.com/azure/active-directory-b2c/custom-policy-overview)
535+
- [Custom policies in Azure AD B2C](custom-policy-overview.md)
536536

537-
- [Get started with custom policies in Azure AD B2C](https://docs.microsoft.com/azure/active-directory-b2c/custom-policy-get-started?tabs=applications)
537+
- [Get started with custom policies in Azure AD B2C](tutorial-create-user-flows.md?pivots=b2c-custom-policy)
538538

539-
- [Register a SAML application in Azure AD B2C](https://learn.microsoft.com/azure/active-directory-b2c/saml-service-provider?tabs=windows&pivots=b2c-custom-policy)
539+
- [Register a SAML application in Azure AD B2C](saml-service-provider.md?tabs=windows&pivots=b2c-custom-policy)

articles/active-directory/conditional-access/terms-of-use.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ A: You can [review previously accepted terms of use policies](#how-users-can-rev
413413
A: If you've configured both Azure AD terms of use and [Intune terms and conditions](/intune/terms-and-conditions-create), the user will be required to accept both. For more information, see the [Choosing the right Terms solution for your organization blog post](https://go.microsoft.com/fwlink/?linkid=2010506&clcid=0x409).
414414

415415
**Q: What endpoints does the terms of use service use for authentication?**<br />
416-
A: Terms of use utilize the following endpoints for authentication: https://tokenprovider.termsofuse.identitygovernance.azure.com and https://account.activedirectory.windowsazure.com. If your organization has an allowlist of URLs for enrollment, you'll need to add these endpoints to your allowlist, along with the Azure AD endpoints for sign-in.
416+
A: Terms of use utilize the following endpoints for authentication: https://tokenprovider.termsofuse.identitygovernance.azure.com, https://myaccount.microsoft.com and https://account.activedirectory.windowsazure.com. If your organization has an allowlist of URLs for enrollment, you'll need to add these endpoints to your allowlist, along with the Azure AD endpoints for sign-in.
417417

418418
## Next steps
419419

articles/active-directory/develop/msal-net-token-cache-serialization.md

Lines changed: 1 addition & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -548,149 +548,7 @@ A product-quality, file-based token cache serializer for public client applicati
548548
549549
#### Dual token cache serialization (MSAL unified cache and ADAL v3)
550550

551-
If you want to implement token cache serialization with the unified cache format (common to ADAL.NET 4.x, MSAL.NET 2.x, and other MSALs of the same generation or older, on the same platform), take a look at the following code:
552-
553-
```csharp
554-
string appLocation = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location;
555-
string cacheFolder = Path.GetFullPath(appLocation) + @"..\..\..\..");
556-
string adalV3cacheFileName = Path.Combine(cacheFolder, "cacheAdalV3.bin");
557-
string unifiedCacheFileName = Path.Combine(cacheFolder, "unifiedCache.bin");
558-
559-
IPublicClientApplication app;
560-
app = PublicClientApplicationBuilder.Create(clientId)
561-
.Build();
562-
FilesBasedTokenCacheHelper.EnableSerialization(app.UserTokenCache,
563-
unifiedCacheFileName,
564-
adalV3cacheFileName);
565-
566-
```
567-
568-
This time, the helper class is defined as:
569-
570-
```csharp
571-
using System;
572-
using System.IO;
573-
using System.Security.Cryptography;
574-
using Microsoft.Identity.Client;
575-
576-
namespace CommonCacheMsalV3
577-
{
578-
/// <summary>
579-
/// Simple persistent cache implementation of the dual cache serialization (ADAL v3 legacy
580-
/// and unified cache format) for a desktop applications (from MSAL 2.x)
581-
/// </summary>
582-
static class FilesBasedTokenCacheHelper
583-
{
584-
/// <summary>
585-
/// Enables the serialization of the token cache
586-
/// </summary>
587-
/// <param name="adalV3CacheFileName">File name where the cache is serialized with the
588-
/// ADAL v3 token cache format. Can
589-
/// be <c>null</c> if you don't want to implement the legacy ADAL v3 token cache
590-
/// serialization in your MSAL 2.x+ application</param>
591-
/// <param name="unifiedCacheFileName">File name where the cache is serialized
592-
/// with the unified cache format, common to
593-
/// ADAL v4 and MSAL v2 and later, and also across ADAL/MSAL on the same platform.
594-
/// Should not be <c>null</c></param>
595-
/// <returns></returns>
596-
public static void EnableSerialization(ITokenCache tokenCache, string unifiedCacheFileName, string adalV3CacheFileName)
597-
{
598-
UnifiedCacheFileName = unifiedCacheFileName;
599-
AdalV3CacheFileName = adalV3CacheFileName;
600-
601-
tokenCache.SetBeforeAccess(BeforeAccessNotification);
602-
tokenCache.SetAfterAccess(AfterAccessNotification);
603-
}
604-
605-
/// <summary>
606-
/// File path where the token cache is serialized with the unified cache format
607-
/// (ADAL.NET v4, MSAL.NET v3)
608-
/// </summary>
609-
public static string UnifiedCacheFileName { get; private set; }
610-
611-
/// <summary>
612-
/// File path where the token cache is serialized with the legacy ADAL v3 format
613-
/// </summary>
614-
public static string AdalV3CacheFileName { get; private set; }
615-
616-
private static readonly object FileLock = new object();
617-
618-
public static void BeforeAccessNotification(TokenCacheNotificationArgs args)
619-
{
620-
lock (FileLock)
621-
{
622-
args.TokenCache.DeserializeAdalV3(ReadFromFileIfExists(AdalV3CacheFileName));
623-
try
624-
{
625-
args.TokenCache.DeserializeMsalV3(ReadFromFileIfExists(UnifiedCacheFileName));
626-
}
627-
catch(Exception ex)
628-
{
629-
// Compatibility with the MSAL v2 cache if you used one
630-
args.TokenCache.DeserializeMsalV2(ReadFromFileIfExists(UnifiedCacheFileName));
631-
}
632-
}
633-
}
634-
635-
public static void AfterAccessNotification(TokenCacheNotificationArgs args)
636-
{
637-
// if the access operation resulted in a cache update
638-
if (args.HasStateChanged)
639-
{
640-
lock (FileLock)
641-
{
642-
WriteToFileIfNotNull(UnifiedCacheFileName, args.TokenCache.SerializeMsalV3());
643-
if (!string.IsNullOrWhiteSpace(AdalV3CacheFileName))
644-
{
645-
WriteToFileIfNotNull(AdalV3CacheFileName, args.TokenCache.SerializeAdalV3());
646-
}
647-
}
648-
}
649-
}
650-
651-
/// <summary>
652-
/// Read the content of a file if it exists
653-
/// </summary>
654-
/// <param name="path">File path</param>
655-
/// <returns>Content of the file (in bytes)</returns>
656-
private static byte[] ReadFromFileIfExists(string path)
657-
{
658-
byte[] protectedBytes = (!string.IsNullOrEmpty(path) && File.Exists(path))
659-
? File.ReadAllBytes(path) : null;
660-
byte[] unprotectedBytes = encrypt ?
661-
((protectedBytes != null) ? ProtectedData.Unprotect(protectedBytes, null, DataProtectionScope.CurrentUser) : null)
662-
: protectedBytes;
663-
return unprotectedBytes;
664-
}
665-
666-
/// <summary>
667-
/// Writes a blob of bytes to a file. If the blob is <c>null</c>, deletes the file
668-
/// </summary>
669-
/// <param name="path">path to the file to write</param>
670-
/// <param name="blob">Blob of bytes to write</param>
671-
private static void WriteToFileIfNotNull(string path, byte[] blob)
672-
{
673-
if (blob != null)
674-
{
675-
byte[] protectedBytes = encrypt
676-
? ProtectedData.Protect(blob, null, DataProtectionScope.CurrentUser)
677-
: blob;
678-
File.WriteAllBytes(path, protectedBytes);
679-
}
680-
else
681-
{
682-
File.Delete(path);
683-
}
684-
}
685-
686-
// Change if you want to test with an unencrypted blob (this is a JSON format)
687-
private static bool encrypt = true;
688-
}
689-
}
690-
```
691-
692-
For more details see the sample: https://github.com/Azure-Samples/active-directory-dotnet-v1-to-v2/tree/master/TokenCacheMigration/ADAL2MSAL
693-
551+
If you want to implement token cache serialization with the unified cache format (common to ADAL.NET 4.x, MSAL.NET 2.x, and other MSALs of the same generation or older, on the same platform), take a look at the following sample: https://github.com/Azure-Samples/active-directory-dotnet-v1-to-v2/tree/master/TokenCacheMigration/ADAL2MSAL.
694552
695553
---
696554

articles/active-directory/governance/lifecycle-workflow-tasks.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ For Microsoft Graph the parameters for the **Run a Custom Task Extension** task
309309

310310
```Example for usage within the workflow
311311
{
312-
"category": "joiner,leaver",
312+
"category": "joiner,leaver",
313313
"description": "Run a Custom Task Extension to call-out to an external system.",
314314
"displayName": "Run a Custom Task Extension",
315315
"isEnabled": true,
@@ -318,7 +318,7 @@ For Microsoft Graph the parameters for the **Run a Custom Task Extension** task
318318
"arguments": [
319319
{
320320
"name": "customTaskExtensionID",
321-
"value": ""<ID of your Custom Task Extension>""
321+
"value": "<ID of your Custom Task Extension>"
322322
}
323323
]
324324
}

articles/active-directory/hybrid/how-to-connect-import-export-config.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ Each time the configuration is changed from the Azure AD Connect wizard, a new t
2222
> [!IMPORTANT]
2323
> Only changes made by Azure AD Connect are automatically exported. Any changes made by using PowerShell, the Synchronization Service Manager, or the Synchronization Rules Editor must be exported on demand as needed to maintain an up-to-date copy. Export on demand can also be used to place a copy of the settings in a secure location for disaster recovery purposes.
2424
25+
>[!NOTE]
26+
>This feature cannot be used if the AADConnect installation was modified to include the G-SQL connector or the G-LDAP connector.
27+
2528
>[!NOTE]
2629
> This feature cannot be combined with using an existing ADSync database. The use of import/export configuration and using existing database are mutually exclusive.
2730

articles/active-directory/manage-apps/assign-app-owners.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ms.service: active-directory
99
ms.workload: identity
1010
ms.subservice: app-mgmt
1111
ms.topic: how-to
12-
ms.date: 12/02/2021
12+
ms.date: 12/05/2022
1313
ms.author: saibandaru
1414
#Customer intent: As an Azure AD administrator, I want to assign owners to enterprise applications.
1515

articles/active-directory/manage-apps/overview-assign-app-owners.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ms.service: active-directory
88
ms.workload: identity
99
ms.subservice: app-mgmt
1010
ms.topic: conceptual
11-
ms.date: 02/11/2022
11+
ms.date: 12/05/2022
1212
ms.author: saibandaru
1313

1414
#Customer intent: As an Azure AD administrator, I want to learn about enterprise application ownership.
@@ -32,7 +32,11 @@ If you have an ownerless application in your tenant, you can access the audit lo
3232

3333
You may also see other users who have scoped permissions on the application by navigating to “Roles and Administrators” tab. Once you find the right person to own the application, a user with a highly privileged administrative role in the organization can assign the new owner for the application. See [Assign enterprise application owners](assign-app-owners.md).
3434

35-
As a best practice, we recommend proactive monitoring applications in your environment to ensure there are at least two owners, where possible, to avoid the situation of ownerless apps. Additionally, you should utilize the serviceManagementReference property on the application object to reference the team contact information from your enterprise Service or Asset Management Database. The serviceManagementReference property ensures you have team contact even if an individual leaves the organization.
35+
As a best practice, we recommend proactive monitoring applications in your environment to ensure there are at least two owners, where possible, to avoid the situation of ownerless apps. Additionally, you should utilize the serviceManagementReference property on the application object to reference the team contact information from your enterprise Service or Asset Management Database. The serviceManagementReference property ensures you have team contact even if an individual leaves the organization.
36+
37+
**How can I find enterprise applications that are ownerless or at risk of being ownerless in my organization?**
38+
39+
To learn how to identify ownerless enterprise apps or those with only one owner using Microsoft Graph API, see [List ownerless applications](/graph/tutorial-applications-basics.md#manage-application-ownership).
3640

3741
**How do you add yourself as an owner of an enterprise application?**
3842

0 commit comments

Comments
 (0)