Updates from: 05/02/2022 01:05:36
Service Microsoft Docs article Related commit history on GitHub Change details
active-directory How To Migrate Mfa Server To Azure Mfa User Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-migrate-mfa-server-to-azure-mfa-user-authentication.md
If you are already using Conditional Access to determine when users are prompted
As users are migrated to cloud authentication, they will start using Azure AD MFA as defined by your existing Conditional Access policies. They wonΓÇÖt be redirected to AD FS and MFA Server anymore.
-If your federated domain(s) have the [federatedIdpMfaBehavior](/graph/api/resources/federatedIdpMfaBehavior?view=graph-rest-beta) set to `enforceMfaByFederatedIdp` or **SupportsMfa** flag set to `$True` (the **federatedIdpMfaBehavior** overrides **SupportsMfa** when both are set), you are likely enforcing MFA on AD FS using claims rules.
+If your federated domain(s) have the **federatedIdpMfaBehavior** set to `enforceMfaByFederatedIdp` or **SupportsMfa** flag set to `$True` (the **federatedIdpMfaBehavior** overrides **SupportsMfa** when both are set), you are likely enforcing MFA on AD FS using claims rules.
In this case, you will need to analyze your claims rules on the Azure AD relying party trust and create Conditional Access policies that support the same security goals. If you need to configure Conditional Access policies, you need to do so before enabling staged rollout.
For more information on migrating applications to Azure, see [Resources for migr
- [Migrate from Microsoft MFA Server to Azure multi-factor authentication (Overview)](how-to-migrate-mfa-server-to-azure-mfa.md) - [Migrate applications from Windows Active Directory to Azure Active Directory](../manage-apps/migrate-application-authentication-to-azure-active-directory.md)-- [Plan your cloud authentication strategy](../fundamentals/active-directory-deployment-plans.md)
+- [Plan your cloud authentication strategy](../fundamentals/active-directory-deployment-plans.md)
active-directory How To Migrate Mfa Server To Azure Mfa With Federation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/authentication/how-to-migrate-mfa-server-to-azure-mfa-with-federation.md
This section covers final steps before migrating user phone numbers.
### Set federatedIdpMfaBehavior to enforceMfaByFederatedIdp + For federated domains, MFA may be enforced by Azure AD Conditional Access or by the on-premises federation provider. Each federated domain has a Microsoft Graph PowerShell security setting named **federatedIdpMfaBehavior**. You can set **federatedIdpMfaBehavior** to `enforceMfaByFederatedIdp` so Azure AD accepts MFA that's performed by the federated identity provider. If the federated identity provider didn't perform MFA, Azure AD redirects the request to the federated identity provider to perform MFA. For more information, see [federatedIdpMfaBehavior](/graph/api/resources/internaldomainfederation?view=graph-rest-beta#federatedidpmfabehavior-values). >[!NOTE]
Possible considerations when decommissions the MFA Servers include:
- [Deploy password hash synchronization](../hybrid/whatis-phs.md) - [Learn more about Conditional Access](../conditional-access/overview.md) - [Migrate applications to Azure AD](../manage-apps/migrate-application-authentication-to-azure-active-directory.md)-
-
-
-
-
-
active-directory Mobile App Quickstart Portal Android https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/mobile-app-quickstart-portal-android.md
#Customer intent: As an application developer, I want to learn how Android native apps can call protected APIs that require login and access tokens using the Microsoft identity platform. - # Quickstart: Sign in users and call the Microsoft Graph API from an Android app -
-In this quickstart, you download and run a code sample that demonstrates how an Android application can sign in users and get an access token to call the Microsoft Graph API.
-
-See [How the sample works](#how-the-sample-works) for an illustration.
-
-Applications must be represented by an app object in Azure Active Directory so that the Microsoft identity platform can provide tokens to your application.
-
-## Prerequisites
-
-* An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
-* Android Studio
-* Android 16+
-
-### Step 1: Configure your application in the Azure portal
-For the code sample in this quickstart to work, add a **Redirect URI** compatible with the Auth broker.
-> [!div id="makechanges" class="nextstepaction" class="configure-app-button"]
-> <button>Make this change for me</button>
-
-> [!div id="appconfigured" class="alert alert-info"]
-> ![Already configured](media/quickstart-v2-android/green-check.png) Your application is configured with these attributes
-
-### Step 2: Download the project
-
-Run the project using Android Studio.
-> [!div class="nextstepaction"]
-> [Download the code sample](https://github.com/Azure-Samples/ms-identity-android-java/archive/master.zip)
--
-### Step 3: Your app is configured and ready to run
-
-We have configured your project with values of your app's properties and it's ready to run.
-The sample app starts on the **Single Account Mode** screen. A default scope, **user.read**, is provided by default, which is used when reading your own profile data during the Microsoft Graph API call. The URL for the Microsoft Graph API call is provided by default. You can change both of these if you wish.
-
-![MSAL sample app showing single and multiple account usage](./media/quickstart-v2-android/quickstart-sample-app.png)
-
-Use the app menu to change between single and multiple account modes.
-
-In single account mode, sign in using a work or home account:
-
-1. Select **Get graph data interactively** to prompt the user for their credentials. You'll see the output from the call to the Microsoft Graph API in the bottom of the screen.
-2. Once signed in, select **Get graph data silently** to make a call to the Microsoft Graph API without prompting the user for credentials again. You'll see the output from the call to the Microsoft Graph API in the bottom of the screen.
-
-In multiple account mode, you can repeat the same steps. Additionally, you can remove the signed-in account, which also removes the cached tokens for that account.
-
-> [!div class="sxs-lookup"]
-> > [!NOTE]
-> > `Enter_the_Supported_Account_Info_Here`
-
-## How the sample works
-![Screenshot of the sample app](media/quickstart-v2-android/android-intro.svg)
--
-The code is organized into fragments that show how to write a single and multiple accounts MSAL app. The code files are organized as follows:
-
-| File | Demonstrates |
-|||
-| MainActivity | Manages the UI |
-| MSGraphRequestWrapper | Calls the Microsoft Graph API using the token provided by MSAL |
-| MultipleAccountModeFragment | Initializes a multi-account application, loads a user account, and gets a token to call the Microsoft Graph API |
-| SingleAccountModeFragment | Initializes a single-account application, loads a user account, and gets a token to call the Microsoft Graph API |
-| res/auth_config_multiple_account.json | The multiple account configuration file |
-| res/auth_config_single_account.json | The single account configuration file |
-| Gradle Scripts/build.grade (Module:app) | The MSAL library dependencies are added here |
-
-We'll now look at these files in more detail and call out the MSAL-specific code in each.
-
-### Adding MSAL to the app
-
-MSAL ([com.microsoft.identity.client](https://javadoc.io/doc/com.microsoft.identity.client/msal)) is the library used to sign in users and request tokens used to access an API protected by Microsoft identity platform. Gradle 3.0+ installs the library when you add the following to **Gradle Scripts** > **build.gradle (Module: app)** under **Dependencies**:
-
-```java
-dependencies {
- ...
- implementation 'com.microsoft.identity.client:msal:2.+'
- ...
-}
-```
-
-This instructs Gradle to download and build MSAL from maven central.
-
-You must also add references to maven to the **allprojects** > **repositories** portion of the **build.gradle (Module: app)** like so:
-
-```java
-allprojects {
- repositories {
- mavenCentral()
- google()
- mavenLocal()
- maven {
- url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
- }
- maven {
- name "vsts-maven-adal-android"
- url "https://identitydivision.pkgs.visualstudio.com/_packaging/AndroidADAL/maven/v1"
- credentials {
- username System.getenv("ENV_VSTS_MVN_ANDROIDADAL_USERNAME") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_USERNAME") : project.findProperty("vstsUsername")
- password System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") : project.findProperty("vstsMavenAccessToken")
- }
- }
- jcenter()
- }
-}
-```
-
-### MSAL imports
-
-The imports that are relevant to the MSAL library are `com.microsoft.identity.client.*`. For example, you'll see `import com.microsoft.identity.client.PublicClientApplication;` which is the namespace for the `PublicClientApplication` class, which represents your public client application.
-
-### SingleAccountModeFragment.java
-
-This file demonstrates how to create a single account MSAL app and call a Microsoft Graph API.
-
-Single account apps are only used by a single user. For example, you might just have one account that you sign into your mapping app with.
-
-#### Single account MSAL initialization
-
-In `auth_config_single_account.json`, in `onCreateView()`, a single account `PublicClientApplication` is created using the config information stored in the `auth_config_single_account.json` file. This is how you initialize the MSAL library for use in a single-account MSAL app:
-
-```java
-...
-// Creates a PublicClientApplication object with res/raw/auth_config_single_account.json
-PublicClientApplication.createSingleAccountPublicClientApplication(getContext(),
- R.raw.auth_config_single_account,
- new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
- @Override
- public void onCreated(ISingleAccountPublicClientApplication application) {
- /**
- * This test app assumes that the app is only going to support one account.
- * This requires "account_mode" : "SINGLE" in the config json file.
- **/
- mSingleAccountApp = application;
- loadAccount();
- }
-
- @Override
- public void onError(MsalException exception) {
- displayError(exception);
- }
- });
-```
-
-#### Sign in a user
-
-In `SingleAccountModeFragment.java`, the code to sign in a user is in `initializeUI()`, in the `signInButton` click handler.
-
-Call `signIn()` before trying to acquire tokens. `signIn()` behaves as though `acquireToken()` is called, resulting in an interactive prompt for the user to sign in.
-
-Signing in a user is an asynchronous operation. A callback is passed that calls the Microsoft Graph API and update the UI once the user signs in:
-
-```java
-mSingleAccountApp.signIn(getActivity(), null, getScopes(), getAuthInteractiveCallback());
-```
-
-#### Sign out a user
-
-In `SingleAccountModeFragment.java`, the code to sign out a user is in `initializeUI()`, in the `signOutButton` click handler. Signing a user out is an asynchronous operation. Signing the user out also clears the token cache for that account. A callback is created to update the UI once the user account is signed out:
-
-```java
-mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
- @Override
- public void onSignOut() {
- updateUI(null);
- performOperationOnSignOut();
- }
-
- @Override
- public void onError(@NonNull MsalException exception) {
- displayError(exception);
- }
-});
-```
-
-#### Get a token interactively or silently
-
-To present the fewest number of prompts to the user, you'll typically get a token silently. Then, if there's an error, attempt to get to token interactively. The first time the app calls `signIn()`, it effectively acts as a call to `acquireToken()`, which will prompt the user for credentials.
-
-Some situations when the user may be prompted to select their account, enter their credentials, or consent to the permissions your app has requested are:
-
-* The first time the user signs in to the application
-* If a user resets their password, they'll need to enter their credentials
-* If consent is revoked
-* If your app explicitly requires consent
-* When your application is requesting access to a resource for the first time
-* When MFA or other Conditional Access policies are required
-
-The code to get a token interactively, that is with UI that will involve the user, is in `SingleAccountModeFragment.java`, in `initializeUI()`, in the `callGraphApiInteractiveButton` click handler:
-
-```java
-/**
- * If acquireTokenSilent() returns an error that requires an interaction (MsalUiRequiredException),
- * invoke acquireToken() to have the user resolve the interrupt interactively.
- *
- * Some example scenarios are
- * - password change
- * - the resource you're acquiring a token for has a stricter set of requirement than your Single Sign-On refresh token.
- * - you're introducing a new scope which the user has never consented for.
- **/
-mSingleAccountApp.acquireToken(getActivity(), getScopes(), getAuthInteractiveCallback());
-```
-
-If the user has already signed in, `acquireTokenSilentAsync()` allows apps to request tokens silently as shown in `initializeUI()`, in the `callGraphApiSilentButton` click handler:
-
-```java
-/**
- * Once you've signed the user in,
- * you can perform acquireTokenSilent to obtain resources without interrupting the user.
- **/
- mSingleAccountApp.acquireTokenSilentAsync(getScopes(), AUTHORITY, getAuthSilentCallback());
-```
-
-#### Load an account
-
-The code to load an account is in `SingleAccountModeFragment.java` in `loadAccount()`. Loading the user's account is an asynchronous operation, so callbacks to handle when the account loads, changes, or an error occurs is passed to MSAL. The following code also handles `onAccountChanged()`, which occurs when an account is removed, the user changes to another account, and so on.
-
-```java
-private void loadAccount() {
- ...
-
- mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback() {
- @Override
- public void onAccountLoaded(@Nullable IAccount activeAccount) {
- // You can use the account data to update your UI or your app database.
- updateUI(activeAccount);
- }
-
- @Override
- public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable IAccount currentAccount) {
- if (currentAccount == null) {
- // Perform a cleanup task as the signed-in account changed.
- performOperationOnSignOut();
- }
- }
-
- @Override
- public void onError(@NonNull MsalException exception) {
- displayError(exception);
- }
- });
-```
-
-#### Call Microsoft Graph
-
-When a user is signed in, the call to Microsoft Graph is made via an HTTP request by `callGraphAPI()` that is defined in `SingleAccountModeFragment.java`. This function is a wrapper that simplifies the sample by doing some tasks such as getting the access token from the `authenticationResult` and packaging the call to the MSGraphRequestWrapper, and displaying the results of the call.
-
-```java
-private void callGraphAPI(final IAuthenticationResult authenticationResult) {
- MSGraphRequestWrapper.callGraphAPIUsingVolley(
- getContext(),
- graphResourceTextView.getText().toString(),
- authenticationResult.getAccessToken(),
- new Response.Listener<JSONObject>() {
- @Override
- public void onResponse(JSONObject response) {
- /* Successfully called graph, process data and send to UI */
- ...
- }
- },
- new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- ...
- }
- });
-}
-```
-
-### auth_config_single_account.json
-
-This is the configuration file for an MSAL app that uses a single account.
-
-See [Understand the Android MSAL configuration file ](msal-configuration.md) for an explanation of these fields.
-
-Note the presence of `"account_mode" : "SINGLE"`, which configures this app to use a single account.
-
-`"client_id"` is preconfigured to use an app object registration that Microsoft maintains.
-`"redirect_uri"`is preconfigured to use the signing key provided with the code sample.
-
-```json
-{
- "client_id" : "0984a7b6-bc13-4141-8b0d-8f767e136bb7",
- "authorization_user_agent" : "DEFAULT",
- "redirect_uri" : "msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
- "account_mode" : "SINGLE",
- "broker_redirect_uri_registered": true,
- "authorities" : [
- {
- "type": "AAD",
- "audience": {
- "type": "AzureADandPersonalMicrosoftAccount",
- "tenant_id": "common"
- }
- }
- ]
-}
-```
-
-### MultipleAccountModeFragment.java
-
-This file demonstrates how to create a multiple account MSAL app and call a Microsoft Graph API.
-
-An example of a multiple account app is a mail app that allows you to work with multiple user accounts such as a work account and a personal account.
-
-#### Multiple account MSAL initialization
-
-In the `MultipleAccountModeFragment.java` file, in `onCreateView()`, a multiple account app object (`IMultipleAccountPublicClientApplication`) is created using the config information stored in the `auth_config_multiple_account.json file`:
-
-```java
-// Creates a PublicClientApplication object with res/raw/auth_config_multiple_account.json
-PublicClientApplication.createMultipleAccountPublicClientApplication(getContext(),
- R.raw.auth_config_multiple_account,
- new IPublicClientApplication.IMultipleAccountApplicationCreatedListener() {
- @Override
- public void onCreated(IMultipleAccountPublicClientApplication application) {
- mMultipleAccountApp = application;
- loadAccounts();
- }
-
- @Override
- public void onError(MsalException exception) {
- ...
- }
- });
-```
-
-The created `MultipleAccountPublicClientApplication` object is stored in a class member variable so that it can be used to interact with the MSAL library to acquire tokens and load and remove the user account.
-
-#### Load an account
-
-Multiple account apps usually call `getAccounts()` to select the account to use for MSAL operations. The code to load an account is in the `MultipleAccountModeFragment.java` file, in `loadAccounts()`. Loading the user's account is an asynchronous operation. So a callback handles the situations when the account is loaded, changes, or an error occurs.
-
-```java
-/**
- * Load currently signed-in accounts, if there's any.
- **/
-private void loadAccounts() {
- if (mMultipleAccountApp == null) {
- return;
- }
-
- mMultipleAccountApp.getAccounts(new IPublicClientApplication.LoadAccountsCallback() {
- @Override
- public void onTaskCompleted(final List<IAccount> result) {
- // You can use the account data to update your UI or your app database.
- accountList = result;
- updateUI(accountList);
- }
-
- @Override
- public void onError(MsalException exception) {
- displayError(exception);
- }
- });
-}
-```
-
-#### Get a token interactively or silently
-
-Some situations when the user may be prompted to select their account, enter their credentials, or consent to the permissions your app has requested are:
-
-* The first time users sign in to the application
-* If a user resets their password, they'll need to enter their credentials
-* If consent is revoked
-* If your app explicitly requires consent
-* When your application is requesting access to a resource for the first time
-* When MFA or other Conditional Access policies are required
-
-Multiple account apps should typically acquire tokens interactively, that is with UI that involves the user, with a call to `acquireToken()`. The code to get a token interactively is in the `MultipleAccountModeFragment.java` file in `initializeUI()`, in the `callGraphApiInteractiveButton` click handler:
-
-```java
-/**
- * Acquire token interactively. It will also create an account object for the silent call as a result (to be obtained by getAccount()).
- *
- * If acquireTokenSilent() returns an error that requires an interaction,
- * invoke acquireToken() to have the user resolve the interrupt interactively.
- *
- * Some example scenarios are
- * - password change
- * - the resource you're acquiring a token for has a stricter set of requirement than your SSO refresh token.
- * - you're introducing a new scope which the user has never consented for.
- **/
-mMultipleAccountApp.acquireToken(getActivity(), getScopes(), getAuthInteractiveCallback());
-```
-
-Apps shouldn't require the user to sign in every time they request a token. If the user has already signed in, `acquireTokenSilentAsync()` allows apps to request tokens without prompting the user, as shown in the `MultipleAccountModeFragment.java` file, in`initializeUI()` in the `callGraphApiSilentButton` click handler:
-
-```java
-/**
- * Performs acquireToken without interrupting the user.
- *
- * This requires an account object of the account you're obtaining a token for.
- * (can be obtained via getAccount()).
- */
-mMultipleAccountApp.acquireTokenSilentAsync(getScopes(),
- accountList.get(accountListSpinner.getSelectedItemPosition()),
- AUTHORITY,
- getAuthSilentCallback());
-```
-
-#### Remove an account
-
-The code to remove an account, and any cached tokens for the account, is in the `MultipleAccountModeFragment.java` file in `initializeUI()` in the handler for the remove account button. Before you can remove an account, you need an account object, which you obtain from MSAL methods like `getAccounts()` and `acquireToken()`. Because removing an account is an asynchronous operation, the `onRemoved` callback is supplied to update the UI.
-
-```java
-/**
- * Removes the selected account and cached tokens from this app (or device, if the device is in shared mode).
- **/
-mMultipleAccountApp.removeAccount(accountList.get(accountListSpinner.getSelectedItemPosition()),
- new IMultipleAccountPublicClientApplication.RemoveAccountCallback() {
- @Override
- public void onRemoved() {
- ...
- /* Reload account asynchronously to get the up-to-date list. */
- loadAccounts();
- }
-
- @Override
- public void onError(@NonNull MsalException exception) {
- displayError(exception);
- }
- });
-```
-
-### auth_config_multiple_account.json
-
-This is the configuration file for a MSAL app that uses multiple accounts.
-
-See [Understand the Android MSAL configuration file ](msal-configuration.md) for an explanation of the various fields.
-
-Unlike the [auth_config_single_account.json](#auth_config_single_accountjson) configuration file, this config file has `"account_mode" : "MULTIPLE"` instead of `"account_mode" : "SINGLE"` because this is a multiple account app.
-
-`"client_id"` is preconfigured to use an app object registration that Microsoft maintains.
-`"redirect_uri"`is preconfigured to use the signing key provided with the code sample.
-
-```json
-{
- "client_id" : "0984a7b6-bc13-4141-8b0d-8f767e136bb7",
- "authorization_user_agent" : "DEFAULT",
- "redirect_uri" : "msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
- "account_mode" : "MULTIPLE",
- "broker_redirect_uri_registered": true,
- "authorities" : [
- {
- "type": "AAD",
- "audience": {
- "type": "AzureADandPersonalMicrosoftAccount",
- "tenant_id": "common"
- }
- }
- ]
-}
-```
--
-## Next steps
-
-Move on to the Android tutorial in which you build an Android app that gets an access token from the Microsoft identity platform and uses it to call the Microsoft Graph API.
-
-> [!div class="nextstepaction"]
-> [Tutorial: Sign in users and call the Microsoft Graph from an Android application](tutorial-v2-android.md)
+> [!div renderon="docs"]
+> Welcome! This probably isn't the page you were expecting. We're currently working on a fix, but for now, please use the link below - it should take you to the right article:
+>
+> > [Quickstart: Android app with user sign-in](mobile-app-quickstart.md?pivots=devlang-android)
+>
+> We apologize for the inconvenience and appreciate your patience while we work to get this resolved.
+
+> [!div renderon="portal" class="sxs-lookup display-on-portal"]
+> # Quickstart: Sign in users and call the Microsoft Graph API from an Android app
+>
+> In this quickstart, you download and run a code sample that demonstrates how an Android application can sign in users and get an access token to call the Microsoft Graph API.
+>
+> See [How the sample works](#how-the-sample-works) for an illustration.
+>
+> Applications must be represented by an app object in Azure Active Directory so that the Microsoft identity platform can provide tokens to your application.
+>
+> ## Prerequisites
+>
+> * An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+> * Android Studio
+> * Android 16+
+>
+> ### Step 1: Configure your application in the Azure portal
+> For the code sample in this quickstart to work, add a **Redirect URI** compatible with the Auth broker.
+>
+> <button id="makechanges" class="nextstepaction" class="configure-app-button"> Make this change for me </button>
+>
+> > [!div id="appconfigured" class="alert alert-info"]
+> > ![Already configured](media/quickstart-v2-android/green-check.png) Your application is configured with these attributes
+>
+> ### Step 2: Download the project
+>
+> Run the project using Android Studio.
+> <a href='https://github.com/Azure-Samples/ms-identity-android-java/archive/master.zip'><button id="downloadsample" class="download-sample-button">Download the code sample</button></a>
+>
+>
+> ### Step 3: Your app is configured and ready to run
+>
+> We have configured your project with values of your app's properties and it's ready to run.
+> The sample app starts on the **Single Account Mode** screen. A default scope, **user.read**, is provided by default, which is used when reading your own profile data during the Microsoft Graph API call. The URL for the Microsoft Graph API call is provided by default. You can change both of these if you wish.
+>
+> ![MSAL sample app showing single and multiple account usage](./media/quickstart-v2-android/quickstart-sample-app.png)
+>
+> Use the app menu to change between single and multiple account modes.
+>
+> In single account mode, sign in using a work or home account:
+>
+> 1. Select **Get graph data interactively** to prompt the user for their credentials. You'll see the output from the call to the Microsoft Graph API in the bottom of the screen.
+> 2. Once signed in, select **Get graph data silently** to make a call to the Microsoft Graph API without prompting the user for credentials again. You'll see the output from the call to the Microsoft Graph API in the bottom of the screen.
+>
+> In multiple account mode, you can repeat the same steps. Additionally, you can remove the signed-in account, which also removes the cached tokens for that account.
+>
+> > [!div class="sxs-lookup"]
+> > > [!NOTE]
+> > > `Enter_the_Supported_Account_Info_Here`
+>
+> ## How the sample works
+> ![Screenshot of the sample app](media/quickstart-v2-android/android-intro.svg)
+>
+>
+> The code is organized into fragments that show how to write a single and multiple accounts MSAL app. The code files are organized as follows:
+>
+> | File | Demonstrates |
+> |||
+> | MainActivity | Manages the UI |
+> | MSGraphRequestWrapper | Calls the Microsoft Graph API using the token provided by MSAL |
+> | MultipleAccountModeFragment | Initializes a multi-account application, loads a user account, and gets a token to call the Microsoft Graph API |
+> | SingleAccountModeFragment | Initializes a single-account application, loads a user account, and gets a token to call the Microsoft Graph API |
+> | res/auth_config_multiple_account.json | The multiple account configuration file |
+> | res/auth_config_single_account.json | The single account configuration file |
+> | Gradle Scripts/build.grade (Module:app) | The MSAL library dependencies are added here |
+>
+> We'll now look at these files in more detail and call out the MSAL-specific code in each.
+>
+> ### Adding MSAL to the app
+>
+> MSAL ([com.microsoft.identity.client](https://javadoc.io/doc/com.microsoft.identity.client/msal)) is the library used to sign in users and request tokens used to access an API protected by Microsoft identity platform. Gradle 3.0+ installs the library when you add the following to **Gradle Scripts** > **build.gradle (Module: app)** under **Dependencies**:
+>
+> ```java
+> dependencies {
+> ...
+> implementation 'com.microsoft.identity.client:msal:2.+'
+> ...
+> }
+> ```
+>
+> This instructs Gradle to download and build MSAL from maven central.
+>
+> You must also add references to maven to the **allprojects** > **repositories** portion of the **build.gradle (Module: app)** like so:
+>
+> ```java
+> allprojects {
+> repositories {
+> mavenCentral()
+> google()
+> mavenLocal()
+> maven {
+> url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
+> }
+> maven {
+> name "vsts-maven-adal-android"
+> url "https://identitydivision.pkgs.visualstudio.com/_packaging/AndroidADAL/maven/v1"
+> credentials {
+> username System.getenv("ENV_VSTS_MVN_ANDROIDADAL_USERNAME") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_USERNAME") : project.findProperty("vstsUsername")
+> password System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") : project.findProperty("vstsMavenAccessToken")
+> }
+> }
+> jcenter()
+> }
+> }
+> ```
+>
+> ### MSAL imports
+>
+> The imports that are relevant to the MSAL library are `com.microsoft.identity.client.*`. For example, you'll see `import com.microsoft.identity.client.PublicClientApplication;` which is the namespace for the `PublicClientApplication` class, which represents your public client application.
+>
+> ### SingleAccountModeFragment.java
+>
+> This file demonstrates how to create a single account MSAL app and call a Microsoft Graph API.
+>
+> Single account apps are only used by a single user. For example, you might just have one account that you sign into your mapping app with.
+>
+> #### Single account MSAL initialization
+>
+> In `auth_config_single_account.json`, in `onCreateView()`, a single account `PublicClientApplication` is created using the config information stored in the `auth_config_single_account.json` file. This is how you initialize the MSAL library for use in a single-account MSAL app:
+>
+> ```java
+> ...
+> // Creates a PublicClientApplication object with res/raw/auth_config_single_account.json
+> PublicClientApplication.createSingleAccountPublicClientApplication(getContext(),
+> R.raw.auth_config_single_account,
+> new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
+> @Override
+> public void onCreated(ISingleAccountPublicClientApplication application) {
+> /**
+> * This test app assumes that the app is only going to support one account.
+> * This requires "account_mode" : "SINGLE" in the config json file.
+> **/
+> mSingleAccountApp = application;
+> loadAccount();
+> }
+>
+> @Override
+> public void onError(MsalException exception) {
+> displayError(exception);
+> }
+> });
+> ```
+>
+> #### Sign in a user
+>
+> In `SingleAccountModeFragment.java`, the code to sign in a user is in `initializeUI()`, in the `signInButton` click handler.
+>
+> Call `signIn()` before trying to acquire tokens. `signIn()` behaves as though `acquireToken()` is called, resulting in an interactive prompt for the user to sign in.
+>
+> Signing in a user is an asynchronous operation. A callback is passed that calls the Microsoft Graph API and update the UI once the user signs in:
+>
+> ```java
+> mSingleAccountApp.signIn(getActivity(), null, getScopes(), getAuthInteractiveCallback());
+> ```
+>
+> #### Sign out a user
+>
+> In `SingleAccountModeFragment.java`, the code to sign out a user is in `initializeUI()`, in the `signOutButton` click handler. Signing a user out is an asynchronous operation. Signing the user out also clears the token cache for that account. A callback is created to update the UI once the user account is signed out:
+>
+> ```java
+> mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
+> @Override
+> public void onSignOut() {
+> updateUI(null);
+> performOperationOnSignOut();
+> }
+>
+> @Override
+> public void onError(@NonNull MsalException exception) {
+> displayError(exception);
+> }
+> });
+> ```
+>
+> #### Get a token interactively or silently
+>
+> To present the fewest number of prompts to the user, you'll typically get a token silently. Then, if there's an error, attempt to get to token interactively. The first time the app calls `signIn()`, it effectively acts as a call to `acquireToken()`, which will prompt the user for credentials.
+>
+> Some situations when the user may be prompted to select their account, enter their credentials, or consent to the permissions your app has requested are:
+>
+> * The first time the user signs in to the application
+> * If a user resets their password, they'll need to enter their credentials
+> * If consent is revoked
+> * If your app explicitly requires consent
+> * When your application is requesting access to a resource for the first time
+> * When MFA or other Conditional Access policies are required
+>
+> The code to get a token interactively, that is with UI that will involve the user, is in `SingleAccountModeFragment.java`, in `initializeUI()`, in the `callGraphApiInteractiveButton` click handler:
+>
+> ```java
+> /**
+> * If acquireTokenSilent() returns an error that requires an interaction (MsalUiRequiredException),
+> * invoke acquireToken() to have the user resolve the interrupt interactively.
+> *
+> * Some example scenarios are
+> * - password change
+> * - the resource you're acquiring a token for has a stricter set of requirement than your Single Sign-On refresh token.
+> * - you're introducing a new scope which the user has never consented for.
+> **/
+> mSingleAccountApp.acquireToken(getActivity(), getScopes(), getAuthInteractiveCallback());
+> ```
+>
+> If the user has already signed in, `acquireTokenSilentAsync()` allows apps to request tokens silently as shown in `initializeUI()`, in the `callGraphApiSilentButton` click handler:
+>
+> ```java
+> /**
+> * Once you've signed the user in,
+> * you can perform acquireTokenSilent to obtain resources without interrupting the user.
+> **/
+> mSingleAccountApp.acquireTokenSilentAsync(getScopes(), AUTHORITY, getAuthSilentCallback());
+> ```
+>
+> #### Load an account
+>
+> The code to load an account is in `SingleAccountModeFragment.java` in `loadAccount()`. Loading the user's account is an asynchronous operation, so callbacks to handle when the account loads, changes, or an error occurs is passed to MSAL. The following code also handles `onAccountChanged()`, which occurs when an account is removed, the user changes to another account, and so on.
+>
+> ```java
+> private void loadAccount() {
+> ...
+>
+> mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback() {
+> @Override
+> public void onAccountLoaded(@Nullable IAccount activeAccount) {
+> // You can use the account data to update your UI or your app database.
+> updateUI(activeAccount);
+> }
+>
+> @Override
+> public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable IAccount currentAccount) {
+> if (currentAccount == null) {
+> // Perform a cleanup task as the signed-in account changed.
+> performOperationOnSignOut();
+> }
+> }
+>
+> @Override
+> public void onError(@NonNull MsalException exception) {
+> displayError(exception);
+> }
+> });
+> ```
+>
+> #### Call Microsoft Graph
+>
+> When a user is signed in, the call to Microsoft Graph is made via an HTTP request by `callGraphAPI()` that is defined in `SingleAccountModeFragment.java`. This function is a wrapper that simplifies the sample by doing some tasks such as getting the access token from the `authenticationResult` and packaging the call to the MSGraphRequestWrapper, and displaying the results of the call.
+>
+> ```java
+> private void callGraphAPI(final IAuthenticationResult authenticationResult) {
+> MSGraphRequestWrapper.callGraphAPIUsingVolley(
+> getContext(),
+> graphResourceTextView.getText().toString(),
+> authenticationResult.getAccessToken(),
+> new Response.Listener<JSONObject>() {
+> @Override
+> public void onResponse(JSONObject response) {
+> /* Successfully called graph, process data and send to UI */
+> ...
+> }
+> },
+> new Response.ErrorListener() {
+> @Override
+> public void onErrorResponse(VolleyError error) {
+> ...
+> }
+> });
+> }
+> ```
+>
+> ### auth_config_single_account.json
+>
+> This is the configuration file for an MSAL app that uses a single account.
+>
+> See [Understand the Android MSAL configuration file ](msal-configuration.md) for an explanation of these fields.
+>
+> Note the presence of `"account_mode" : "SINGLE"`, which configures this app to use a single account.
+>
+> `"client_id"` is preconfigured to use an app object registration that Microsoft maintains.
+> `"redirect_uri"`is preconfigured to use the signing key provided with the code sample.
+>
+> ```json
+> {
+> "client_id" : "0984a7b6-bc13-4141-8b0d-8f767e136bb7",
+> "authorization_user_agent" : "DEFAULT",
+> "redirect_uri" : "msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
+> "account_mode" : "SINGLE",
+> "broker_redirect_uri_registered": true,
+> "authorities" : [
+> {
+> "type": "AAD",
+> "audience": {
+> "type": "AzureADandPersonalMicrosoftAccount",
+> "tenant_id": "common"
+> }
+> }
+> ]
+> }
+> ```
+>
+> ### MultipleAccountModeFragment.java
+>
+> This file demonstrates how to create a multiple account MSAL app and call a Microsoft Graph API.
+>
+> An example of a multiple account app is a mail app that allows you to work with multiple user accounts such as a work account and a personal account.
+>
+> #### Multiple account MSAL initialization
+>
+> In the `MultipleAccountModeFragment.java` file, in `onCreateView()`, a multiple account app object (`IMultipleAccountPublicClientApplication`) is created using the config information stored in the `auth_config_multiple_account.json file`:
+>
+> ```java
+> // Creates a PublicClientApplication object with res/raw/auth_config_multiple_account.json
+> PublicClientApplication.createMultipleAccountPublicClientApplication(getContext(),
+> R.raw.auth_config_multiple_account,
+> new IPublicClientApplication.IMultipleAccountApplicationCreatedListener() {
+> @Override
+> public void onCreated(IMultipleAccountPublicClientApplication application) {
+> mMultipleAccountApp = application;
+> loadAccounts();
+> }
+>
+> @Override
+> public void onError(MsalException exception) {
+> ...
+> }
+> });
+> ```
+>
+> The created `MultipleAccountPublicClientApplication` object is stored in a class member variable so that it can be used to interact with the MSAL library to acquire tokens and load and remove the user account.
+>
+> #### Load an account
+>
+> Multiple account apps usually call `getAccounts()` to select the account to use for MSAL operations. The code to load an account is in the `MultipleAccountModeFragment.java` file, in `loadAccounts()`. Loading the user's account is an asynchronous operation. So a callback handles the situations when the account is loaded, changes, or an error occurs.
+>
+> ```java
+> /**
+> * Load currently signed-in accounts, if there's any.
+> **/
+> private void loadAccounts() {
+> if (mMultipleAccountApp == null) {
+> return;
+> }
+>
+> mMultipleAccountApp.getAccounts(new IPublicClientApplication.LoadAccountsCallback() {
+> @Override
+> public void onTaskCompleted(final List<IAccount> result) {
+> // You can use the account data to update your UI or your app database.
+> accountList = result;
+> updateUI(accountList);
+> }
+>
+> @Override
+> public void onError(MsalException exception) {
+> displayError(exception);
+> }
+> });
+> }
+> ```
+>
+> #### Get a token interactively or silently
+>
+> Some situations when the user may be prompted to select their account, enter their credentials, or consent to the permissions your app has requested are:
+>
+> * The first time users sign in to the application
+> * If a user resets their password, they'll need to enter their credentials
+> * If consent is revoked
+> * If your app explicitly requires consent
+> * When your application is requesting access to a resource for the first time
+> * When MFA or other Conditional Access policies are required
+>
+> Multiple account apps should typically acquire tokens interactively, that is with UI that involves the user, with a call to `acquireToken()`. The code to get a token interactively is in the `MultipleAccountModeFragment.java` file in `initializeUI()`, in the `callGraphApiInteractiveButton` click handler:
+>
+> ```java
+> /**
+> * Acquire token interactively. It will also create an account object for the silent call as a result (to be obtained by getAccount()).
+> *
+> * If acquireTokenSilent() returns an error that requires an interaction,
+> * invoke acquireToken() to have the user resolve the interrupt interactively.
+> *
+> * Some example scenarios are
+> * - password change
+> * - the resource you're acquiring a token for has a stricter set of requirement than your SSO refresh token.
+> * - you're introducing a new scope which the user has never consented for.
+> **/
+> mMultipleAccountApp.acquireToken(getActivity(), getScopes(), getAuthInteractiveCallback());
+> ```
+>
+> Apps shouldn't require the user to sign in every time they request a token. If the user has already signed in, `acquireTokenSilentAsync()` allows apps to request tokens without prompting the user, as shown in the `MultipleAccountModeFragment.java` file, in`initializeUI()` in the `callGraphApiSilentButton` click handler:
+>
+> ```java
+> /**
+> * Performs acquireToken without interrupting the user.
+> *
+> * This requires an account object of the account you're obtaining a token for.
+> * (can be obtained via getAccount()).
+> */
+> mMultipleAccountApp.acquireTokenSilentAsync(getScopes(),
+> accountList.get(accountListSpinner.getSelectedItemPosition()),
+> AUTHORITY,
+> getAuthSilentCallback());
+> ```
+>
+> #### Remove an account
+>
+> The code to remove an account, and any cached tokens for the account, is in the `MultipleAccountModeFragment.java` file in `initializeUI()` in the handler for the remove account button. Before you can remove an account, you need an account object, which you obtain from MSAL methods like `getAccounts()` and `acquireToken()`. Because removing an account is an asynchronous operation, the `onRemoved` callback is supplied to update the UI.
+>
+> ```java
+> /**
+> * Removes the selected account and cached tokens from this app (or device, if the device is in shared mode).
+> **/
+> mMultipleAccountApp.removeAccount(accountList.get(accountListSpinner.getSelectedItemPosition()),
+> new IMultipleAccountPublicClientApplication.RemoveAccountCallback() {
+> @Override
+> public void onRemoved() {
+> ...
+> /* Reload account asynchronously to get the up-to-date list. */
+> loadAccounts();
+> }
+>
+> @Override
+> public void onError(@NonNull MsalException exception) {
+> displayError(exception);
+> }
+> });
+> ```
+>
+> ### auth_config_multiple_account.json
+>
+> This is the configuration file for a MSAL app that uses multiple accounts.
+>
+> See [Understand the Android MSAL configuration file ](msal-configuration.md) for an explanation of the various fields.
+>
+> Unlike the [auth_config_single_account.json](#auth_config_single_accountjson) configuration file, this config file has `"account_mode" : "MULTIPLE"` instead of `"account_mode" : "SINGLE"` because this is a multiple account app.
+>
+> `"client_id"` is preconfigured to use an app object registration that Microsoft maintains.
+> `"redirect_uri"`is preconfigured to use the signing key provided with the code sample.
+>
+> ```json
+> {
+> "client_id" : "0984a7b6-bc13-4141-8b0d-8f767e136bb7",
+> "authorization_user_agent" : "DEFAULT",
+> "redirect_uri" : "msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
+> "account_mode" : "MULTIPLE",
+> "broker_redirect_uri_registered": true,
+> "authorities" : [
+> {
+> "type": "AAD",
+> "audience": {
+> "type": "AzureADandPersonalMicrosoftAccount",
+> "tenant_id": "common"
+> }
+> }
+> ]
+> }
+> ```
+>
+> [!INCLUDE [Help and support](../../../includes/active-directory-develop-help-support-include.md)]
+>
+> ## Next steps
+>
+> Move on to the Android tutorial in which you build an Android app that gets an access token from the Microsoft identity platform and uses it to call the Microsoft Graph API.
+>
+> > [!div class="nextstepaction"]
+> > [Tutorial: Sign in users and call the Microsoft Graph from an Android application](tutorial-v2-android.md)
active-directory Mobile App Quickstart Portal Ios https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/mobile-app-quickstart-portal-ios.md
# Quickstart: Sign in users and call the Microsoft Graph API from an iOS or macOS app
-In this quickstart, you download and run a code sample that demonstrates how a native iOS or macOS application can sign in users and get an access token to call the Microsoft Graph API.
-
-The quickstart applies to both iOS and macOS apps. Some steps are needed only for iOS apps and will be indicated as such.
-
-## Prerequisites
-
-* An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
-* XCode 10+
-* iOS 10+
-* macOS 10.12+
-
-## How the sample works
-
-![Shows how the sample app generated by this quickstart works](media/quickstart-v2-ios/ios-intro.svg)
-
-#### Step 1: Configure your application
-For the code sample in this quickstart to work, add a **Redirect URI** compatible with the Auth broker.
-> [!div id="makechanges" class="nextstepaction" class="configure-app-button"]
-> <button>Make this change for me</button>
-
-> [!div id="appconfigured" class="alert alert-info"]
-> ![Already configured](media/quickstart-v2-ios/green-check.png) Your application is configured with these attributes
-
-#### Step 2: Download the sample project
-> [!div class="nextstepaction"]
-> [Download the code sample for iOS]()
-
-> [!div class="nextstepaction"]
-> [Download the code sample for macOS]()
-
-#### Step 3: Install dependencies
-
-1. Extract the zip file.
-2. In a terminal window, navigate to the folder with the downloaded code sample and run `pod install` to install the latest MSAL library.
-
-#### Step 4: Your app is configured and ready to run
-We have configured your project with values of your app's properties and it's ready to run.
-> [!NOTE]
-> `Enter_the_Supported_Account_Info_Here`
-
-1. If you're building an app for [Azure AD national clouds](/graph/deployments#app-registration-and-token-service-root-endpoints), replace the line starting with 'let kGraphEndpoint' and 'let kAuthority' with correct endpoints. For global access, use default values:
-
- ```swift
- let kGraphEndpoint = "https://graph.microsoft.com/"
- let kAuthority = "https://login.microsoftonline.com/common"
- ```
-
-1. Other endpoints are documented [here](/graph/deployments#app-registration-and-token-service-root-endpoints). For example, to run the quickstart with Azure AD Germany, use following:
-
- ```swift
- let kGraphEndpoint = "https://graph.microsoft.de/"
- let kAuthority = "https://login.microsoftonline.de/common"
- ```
-
-3. Open the project settings. In the **Identity** section, enter the **Bundle Identifier** that you entered into the portal.
-4. Right-click **Info.plist** and select **Open As** > **Source Code**.
-5. Under the dict root node, replace `Enter_the_bundle_Id_Here` with the ***Bundle Id*** that you used in the portal. Notice the `msauth.` prefix in the string.
-
- ```xml
- <key>CFBundleURLTypes</key>
- <array>
- <dict>
- <key>CFBundleURLSchemes</key>
- <array>
- <string>msauth.Enter_the_Bundle_Id_Here</string>
- </array>
- </dict>
- </array>
- ```
-
-6. Build and run the app!
-
-## More Information
-
-Read these sections to learn more about this quickstart.
-
-### Get MSAL
-
-MSAL ([MSAL.framework](https://github.com/AzureAD/microsoft-authentication-library-for-objc)) is the library used to sign in users and request tokens used to access an API protected by Microsoft identity platform. You can add MSAL to your application using the following process:
-
-```
-$ vi Podfile
-```
-
-Add the following to this podfile (with your project's target):
-
-```
-use_frameworks!
-
-target 'MSALiOS' do
- pod 'MSAL'
-end
-```
-
-Run CocoaPods installation command:
-
-`pod install`
-
-### Initialize MSAL
-
-You can add the reference for MSAL by adding the following code:
-
-```swift
-import MSAL
-```
-
-Then, initialize MSAL using the following code:
-
-```swift
-let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
-
-let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
-self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
-```
-
-> |Where: | Description |
-> |||
-> | `clientId` | The Application ID from the application registered in *portal.azure.com* |
-> | `authority` | The Microsoft identity platform. In most of cases this will be `https://login.microsoftonline.com/common` |
-> | `redirectUri` | The redirect URI of the application. You can pass 'nil' to use the default value, or your custom redirect URI. |
-
-### For iOS only, additional app requirements
-
-Your app must also have the following in your `AppDelegate`. This lets MSAL SDK handle token response from the Auth broker app when you do authentication.
-
-```swift
-func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
-
- return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
-}
-```
-
-> [!NOTE]
-> On iOS 13+, if you adopt `UISceneDelegate` instead of `UIApplicationDelegate`, place this code into the `scene:openURLContexts:` callback instead (See [Apple's documentation](https://developer.apple.com/documentation/uikit/uiscenedelegate/3238059-scene?language=objc)).
-> If you support both UISceneDelegate and UIApplicationDelegate for compatibility with older iOS, MSAL callback needs to be placed into both places.
-
-```swift
-func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
-
- guard let urlContext = URLContexts.first else {
- return
- }
-
- let url = urlContext.url
- let sourceApp = urlContext.options.sourceApplication
-
- MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
-}
-```
-
-Finally, your app must have an `LSApplicationQueriesSchemes` entry in your ***Info.plist*** alongside the `CFBundleURLTypes`. The sample comes with this included.
-
- ```xml
- <key>LSApplicationQueriesSchemes</key>
- <array>
- <string>msauthv2</string>
- <string>msauthv3</string>
- </array>
- ```
-
-### Sign in users & request tokens
-
-MSAL has two methods used to acquire tokens: `acquireToken` and `acquireTokenSilent`.
-
-#### acquireToken: Get a token interactively
-
-Some situations require users to interact with Microsoft identity platform. In these cases, the end user may be required to select their account, enter their credentials, or consent to your app's permissions. For example,
-
-* The first time users sign in to the application
-* If a user resets their password, they'll need to enter their credentials
-* When your application is requesting access to a resource for the first time
-* When MFA or other Conditional Access policies are required
-
-```swift
-let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
-self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
-```
-
-> |Where:| Description |
-> |||
-> | `scopes` | Contains the scopes being requested (that is, `[ "user.read" ]` for Microsoft Graph or `[ "<Application ID URL>/scope" ]` for custom web APIs (`api://<Application ID>/access_as_user`) |
-
-#### acquireTokenSilent: Get an access token silently
-
-Apps shouldn't require their users to sign in every time they request a token. If the user has already signed in, this method allows apps to request tokens silently.
-
-```swift
-self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in
-
- guard let account = currentAccount else {
- return
- }
-
- let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
- self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
-}
-```
-
-> |Where: | Description |
-> |||
-> | `scopes` | Contains the scopes being requested (that is, `[ "user.read" ]` for Microsoft Graph or `[ "<Application ID URL>/scope" ]` for custom web APIs (`api://<Application ID>/access_as_user`) |
-> | `account` | The account a token is being requested for. This quickstart is about a single account application. If you want to build a multi-account app you'll need to define logic to identify which account to use for token requests using `accountsFromDeviceForParameters:completionBlock:` and passing correct `accountIdentifier` |
--
-## Next steps
-
-Move on to the step-by-step tutorial in which you build an iOS or macOS app that gets an access token from the Microsoft identity platform and uses it to call the Microsoft Graph API.
-
-> [!div class="nextstepaction"]
-> [Tutorial: Sign in users and call Microsoft Graph from an iOS or macOS app](tutorial-v2-ios.md)
+> [!div renderon="docs"]
+> Welcome! This probably isn't the page you were expecting. While we work on a fix, this link should take you to the right article:
+>
+> > [Quickstart: iOS or macOS app that signs in users and calls a web API](mobile-app-quickstart.md?pivots=devlang-ios)
+>
+> We apologize for the inconvenience and appreciate your patience while we work to get this resolved.
+
+> [!div renderon="portal" class="sxs-lookup display-on-portal"]
+> # Quickstart: Sign in users and call the Microsoft Graph API from an iOS or macOS app
+>
+> In this quickstart, you download and run a code sample that demonstrates how a native iOS or macOS application can sign in users and get an access token to call the Microsoft Graph API.
+>
+> The quickstart applies to both iOS and macOS apps. Some steps are needed only for iOS apps and will be indicated as such.
+>
+> ## Prerequisites
+>
+> * An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
+> * XCode 10+
+> * iOS 10+
+> * macOS 10.12+
+>
+> ## How the sample works
+>
+> ![Shows how the sample app generated by this quickstart works](media/quickstart-v2-ios/ios-intro.svg)
+>
+> #### Step 1: Configure your application
+> For the code sample in this quickstart to work, add a **Redirect URI** compatible with the Auth broker.
+>
+> <button id="makechanges" class="nextstepaction" class="configure-app-button"> Make this change for me </button>
+>
+> > [!div id="appconfigured" class="alert alert-info"]
+> > ![Already configured](media/quickstart-v2-ios/green-check.png) Your application is configured with these attributes
+>
+> #### Step 2: Download the sample project
+>
+> <a href='https://github.com/Azure-Samples/active-directory-ios-swift-native-v2/archive/master.zip'><button id="downloadsample" class="downloadsample_ios">Download the code sample for iOS</button></a>
+>
+> <a href='https://github.com/Azure-Samples/active-directory-macOS-swift-native-v2/archive/master.zip'><button id="downloadsample" class="downloadsample_ios">Download the code sample for macOS</button></a>
+>
+> #### Step 3: Install dependencies
+>
+> 1. Extract the zip file.
+> 2. In a terminal window, navigate to the folder with the downloaded code sample and run `pod install` to install the latest MSAL library.
+>
+> #### Step 4: Your app is configured and ready to run
+> We have configured your project with values of your app's properties and it's ready to run.
+> > [!NOTE]
+> > `Enter_the_Supported_Account_Info_Here`
+>
+> 1. If you're building an app for [Azure AD national clouds](/graph/deployments#app-registration-and-token-service-root-endpoints), replace the line starting with 'let kGraphEndpoint' and 'let kAuthority' with correct endpoints. For global access, use default values:
+>
+> ```swift
+> let kGraphEndpoint = "https://graph.microsoft.com/"
+> let kAuthority = "https://login.microsoftonline.com/common"
+> ```
+>
+> 1. Other endpoints are documented [here](/graph/deployments#app-registration-and-token-service-root-endpoints). For example, to run the quickstart with Azure AD Germany, use following:
+>
+> ```swift
+> let kGraphEndpoint = "https://graph.microsoft.de/"
+> let kAuthority = "https://login.microsoftonline.de/common"
+> ```
+>
+> 3. Open the project settings. In the **Identity** section, enter the **Bundle Identifier** that you entered into the portal.
+> 4. Right-click **Info.plist** and select **Open As** > **Source Code**.
+> 5. Under the dict root node, replace `Enter_the_bundle_Id_Here` with the ***Bundle Id*** that you used in the portal. Notice the `msauth.` prefix in the string.
+>
+> ```xml
+> <key>CFBundleURLTypes</key>
+> <array>
+> <dict>
+> <key>CFBundleURLSchemes</key>
+> <array>
+> <string>msauth.Enter_the_Bundle_Id_Here</string>
+> </array>
+> </dict>
+> </array>
+> ```
+>
+> 6. Build and run the app!
+>
+> ## More Information
+>
+> Read these sections to learn more about this quickstart.
+>
+> ### Get MSAL
+>
+> MSAL ([MSAL.framework](https://github.com/AzureAD/microsoft-authentication-library-for-objc)) is the library used to sign in users and request tokens used to access an API protected by Microsoft identity platform. You can add MSAL to your application using the following process:
+>
+> ```
+> $ vi Podfile
+> ```
+>
+> Add the following to this podfile (with your project's target):
+>
+> ```
+> use_frameworks!
+>
+> target 'MSALiOS' do
+> pod 'MSAL'
+> end
+> ```
+>
+> Run CocoaPods installation command:
+>
+> `pod install`
+>
+> ### Initialize MSAL
+>
+> You can add the reference for MSAL by adding the following code:
+>
+> ```swift
+> import MSAL
+> ```
+>
+> Then, initialize MSAL using the following code:
+>
+> ```swift
+> let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
+>
+> let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
+> self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
+> ```
+>
+> > |Where: | Description |
+> > |||
+> > | `clientId` | The Application ID from the application registered in *portal.azure.com* |
+> > | `authority` | The Microsoft identity platform. In most of cases this will be `https://login.microsoftonline.com/common` |
+> > | `redirectUri` | The redirect URI of the application. You can pass 'nil' to use the default value, or your custom redirect URI. |
+>
+> ### For iOS only, additional app requirements
+>
+> Your app must also have the following in your `AppDelegate`. This lets MSAL SDK handle token response from the Auth broker app when you do authentication.
+>
+> ```swift
+> func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
+>
+> return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
+> }
+> ```
+>
+> > [!NOTE]
+> > On iOS 13+, if you adopt `UISceneDelegate` instead of `UIApplicationDelegate`, place this code into the `scene:openURLContexts:` callback instead (See [Apple's documentation](https://developer.apple.com/documentation/uikit/uiscenedelegate/3238059-scene?language=objc)).
+> > If you support both UISceneDelegate and UIApplicationDelegate for compatibility with older iOS, MSAL callback needs to be placed into both places.
+>
+> ```swift
+> func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
+>
+> guard let urlContext = URLContexts.first else {
+> return
+> }
+>
+> let url = urlContext.url
+> let sourceApp = urlContext.options.sourceApplication
+>
+> MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
+> }
+> ```
+>
+> Finally, your app must have an `LSApplicationQueriesSchemes` entry in your ***Info.plist*** alongside the `CFBundleURLTypes`. The sample comes with this included.
+>
+> ```xml
+> <key>LSApplicationQueriesSchemes</key>
+> <array>
+> <string>msauthv2</string>
+> <string>msauthv3</string>
+> </array>
+> ```
+>
+> ### Sign in users & request tokens
+>
+> MSAL has two methods used to acquire tokens: `acquireToken` and `acquireTokenSilent`.
+>
+> #### acquireToken: Get a token interactively
+>
+> Some situations require users to interact with Microsoft identity platform. In these cases, the end user may be required to select their account, enter their credentials, or consent to your app's permissions. For example,
+>
+> * The first time users sign in to the application
+> * If a user resets their password, they'll need to enter their credentials
+> * When your application is requesting access to a resource for the first time
+> * When MFA or other Conditional Access policies are required
+>
+> ```swift
+> let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
+> self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
+> ```
+>
+> > |Where:| Description |
+> > |||
+> > | `scopes` | Contains the scopes being requested (that is, `[ "user.read" ]` for Microsoft Graph or `[ "<Application ID URL>/scope" ]` for custom web APIs (`api://<Application ID>/access_as_user`) |
+>
+> #### acquireTokenSilent: Get an access token silently
+>
+> Apps shouldn't require their users to sign in every time they request a token. If the user has already signed in, this method allows apps to request tokens silently.
+>
+> ```swift
+> self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in
+>
+> guard let account = currentAccount else {
+> return
+> }
+>
+> let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
+> self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
+> }
+> ```
+>
+> > |Where: | Description |
+> > |||
+> > | `scopes` | Contains the scopes being requested (that is, `[ "user.read" ]` for Microsoft Graph or `[ "<Application ID URL>/scope" ]` for custom web APIs (`api://<Application ID>/access_as_user`) |
+> > | `account` | The account a token is being requested for. This quickstart is about a single account application. If you want to build a multi-account app you'll need to define logic to identify which account to use for token requests using `accountsFromDeviceForParameters:completionBlock:` and passing correct `accountIdentifier` |
+>
+> [!INCLUDE [Help and support](../../../includes/active-directory-develop-help-support-include.md)]
+>
+> ## Next steps
+>
+> Move on to the step-by-step tutorial in which you build an iOS or macOS app that gets an access token from the Microsoft identity platform and uses it to call the Microsoft Graph API.
+>
+> > [!div class="nextstepaction"]
+> > [Tutorial: Sign in users and call Microsoft Graph from an iOS or macOS app](tutorial-v2-ios.md)
active-directory Quickstart V2 Ios https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/develop/quickstart-v2-ios.md
> We apologize for the inconvenience and appreciate your patience while we work to get this resolved. > [!div renderon="portal" class="sxs-lookup"]
+>
> In this quickstart, you download and run a code sample that demonstrates how a native iOS or macOS application can sign in users and get an access token to call the Microsoft Graph API. > > The quickstart applies to both iOS and macOS apps. Some steps are needed only for iOS apps and will be indicated as such.
active-directory Migrate From Federation To Cloud Authentication https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/hybrid/migrate-from-federation-to-cloud-authentication.md
To find your current federation settings, run [Get-MgDomainFederationConfigurati
Get-MgDomainFederationConfiguration ΓÇôDomainID yourdomain.com ```
-Verify any settings that might have been customized for your federation design and deployment documentation. Specifically, look for customizations in **PreferredAuthenticationProtocol**, [federatedIdpMfaBehavior](/graph/api/resources/federatedIdpMfaBehavior?view=graph-rest-beta&preserve-view=true), **SupportsMfa** (if **federatedIdpMfaBehavior** is not set), and **PromptLoginBehavior**.
+Verify any settings that might have been customized for your federation design and deployment documentation. Specifically, look for customizations in **PreferredAuthenticationProtocol**, **federatedIdpMfaBehavior**, **SupportsMfa** (if **federatedIdpMfaBehavior** is not set), and **PromptLoginBehavior**.
### Back up federation settings
Consider replacing AD FS access control policies with the equivalent Azure AD [C
For federated domains, MFA may be enforced by Azure AD Conditional Access or by the on-premises federation provider. You can enable protection to prevent bypassing of Azure MFA by configuring the security setting **federatedIdpMfaBehavior**. Enabling the protection for a federated domain in your Azure AD tenant makes sure that Azure MFA is always performed when a federated user accesses an application that is governed by a Conditional Access policy requiring MFA. This includes performing Azure MFA even when federated identity provider has issued federated token claims that on-prem MFA has been performed. Enforcing Azure MFA every time assures that a bad actor cannot bypass Azure MFA by imitating that MFA has already been performed by the identity provider, and is highly recommended unless you perform MFA for your federated users using a third party MFA provider.
-The following table explains the behavior for each option. For more information, see [federatedIdpMfaBehavior](/graph/api/resources/federatedIdpMfaBehavior?view=graph-rest-beta&preserve-view=true).
+The following table explains the behavior for each option. For more information, see **federatedIdpMfaBehavior**.
| Value | Description | | : | : |
If you donΓÇÖt use AD FS for other purposes (that is, for other relying party tr
## Next steps - [Learn about migrating applications](../manage-apps/migration-resources.md)-- [Deploy other identity features](../fundamentals/active-directory-deployment-plans.md)
+- [Deploy other identity features](../fundamentals/active-directory-deployment-plans.md)
active-directory Access Panel Collections https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/access-panel-collections.md
Title: Create collections for My Apps portals
description: Use My Apps collections to Customize My Apps pages for a simpler My Apps experience for your users. Organize applications into groups with separate tabs. -+ Last updated 09/02/2021--+ #customer intent: As an admin, I want to enable and create collections for My Apps portal in Azure AD so that I can create a simpler My Apps experience for users.
active-directory Add Application Portal Assign Users https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/add-application-portal-assign-users.md
Title: 'Quickstart: Create and assign a user account'
description: Create a user account in your Azure Active Directory tenant and assign it to an application. -+ Last updated 03/24/2022-+ #Customer intent: As an administrator of an Azure AD tenant, I want to assign a user to an enterprise application.
active-directory Add Application Portal Configure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/add-application-portal-configure.md
Title: 'Configure enterprise application properties'
description: Configure the properties of an enterprise application in Azure Active Directory. -+ Last updated 09/22/2021-+ #Customer intent: As an administrator of an Azure AD tenant, I want to configure the properties of an enterprise application.
active-directory Add Application Portal Setup Oidc Sso https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/add-application-portal-setup-oidc-sso.md
Title: 'Add an OpenID Connect-based single sign-on application'
description: Learn how to add OpenID Connect-based single sign-on application in Azure Active Directory. -+ Previously updated : 09/22/2021-- Last updated : 04/14/2022+ # Add an OpenID Connect-based single sign-on application
active-directory Add Application Portal Setup Sso https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/add-application-portal-setup-sso.md
Title: 'Quickstart: Enable single sign-on for an enterprise application'
description: Enable single sign-on for an enterprise application in Azure Active Directory. -+ Last updated 09/21/2021-+ #Customer intent: As an administrator of an Azure AD tenant, I want to enable single sign-on for an enterprise application.
active-directory Add Application Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/add-application-portal.md
Title: 'Quickstart: Add an enterprise application'
description: Add an enterprise application in Azure Active Directory. -+ Last updated 03/24/2022--++ #Customer intent: As an administrator of an Azure AD tenant, I want to add an enterprise application.
active-directory App Management Powershell Samples https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/app-management-powershell-samples.md
Last updated 02/18/2021-+
active-directory Application List https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/application-list.md
Title: Viewing apps using your tenant for identity management
description: Understand how to view all applications using your Azure Active Directory tenant for identity management. -+ Previously updated : 01/07/2021-- Last updated : 01/07/2022+ # Applications listed in Enterprise applications
active-directory Application Management Certs Faq https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/application-management-certs-faq.md
Last updated 03/19/2021-+
active-directory Application Properties https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/application-properties.md
Title: 'Properties of an enterprise application'
description: Learn about the properties of an enterprise application in Azure Active Directory. -+ Last updated 09/22/2021--+ #Customer intent: As an administrator of an Azure AD tenant, I want to learn more about the properties of an enterprise application that I can configure.
You can use this field to add any information that is relevant for the managemen
Learn where to go to configure the properties of an enterprise application. -- [Configure enterprise application properties](add-application-portal-configure.md)
+- [Configure enterprise application properties](add-application-portal-configure.md)
active-directory Application Sign In Other Problem Access Panel https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/application-sign-in-other-problem-access-panel.md
Title: Troubleshoot problems signing in to an application from My Apps portal
description: Troubleshoot problems signing in to an application from Azure AD My Apps -+ Last updated 02/01/2022--+
active-directory Application Sign In Problem First Party Microsoft https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/application-sign-in-problem-first-party-microsoft.md
Title: Problems signing in to a Microsoft application
description: Troubleshoot common problems faced when signing in to first-party Microsoft Applications using Azure AD (like Microsoft 365). -+ Last updated 09/10/2018--+
active-directory Application Sign In Unexpected User Consent Error https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/application-sign-in-unexpected-user-consent-error.md
Title: Unexpected error when performing consent to an application
description: Discusses errors that can occur during the process of consenting to an application and what you can do about them -+ Last updated 07/11/2017--++
active-directory Application Sign In Unexpected User Consent Prompt https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/application-sign-in-unexpected-user-consent-prompt.md
Title: Unexpected consent prompt when signing in to an application
description: How to troubleshoot when a user sees a consent prompt for an application you have integrated with Azure AD that you did not expect -+ Last updated 07/11/2017--++
active-directory Certificate Signing Options https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/certificate-signing-options.md
Last updated 07/30/2021-+
active-directory Configure Linked Sign On https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/configure-linked-sign-on.md
Title: Add linked single sign-on to an application
description: Add linked single sign-on to an application in Azure Active Directory. -+ Last updated 09/22/2021--+ # Customer intent: As an IT admin, I need to know how to implement linked single sign-on in Azure Active Directory.
active-directory Configure Password Single Sign On Non Gallery Applications https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/configure-password-single-sign-on-non-gallery-applications.md
Title: Add password-based single sign-on to an application
description: Add password-based single sign-on to an application in Azure Active Directory. -+ Last updated 09/22/2021--+ # Customer intent: As an IT admin, I need to know how to implement password-based single sign-on in Azure Active Directory.
active-directory Configure Permission Classifications https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/configure-permission-classifications.md
Title: Configure permission classifications
description: Learn how to manage delegated permission classifications. -+ Last updated 10/23/2021-+
active-directory Configure User Consent Groups https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/configure-user-consent-groups.md
Title: Configure group owner consent to apps accessing group data
description: Learn manage whether group and team owners can consent to applications that will have access to the group or team's data. -+ Last updated 08/31/2021--++ #customer intent: As an admin, I want to configure group owner consent to apps accessing group data using Azure AD
To learn more:
To get help or find answers to your questions:
-* [Azure AD on Microsoft Q&A](/answers/topics/azure-active-directory.html)
+* [Azure AD on Microsoft Q&A](/answers/topics/azure-active-directory.html)
active-directory Debug Saml Sso Issues https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/debug-saml-sso-issues.md
Title: Debug SAML-based single sign-on
description: Debug SAML-based single sign-on to applications in Azure Active Directory. --++ Last updated 02/18/2019- # Debug SAML-based single sign-on to applications
To resolve the error, follow these steps, or watch this [short video about how t
## Next steps
-Now that single sign-on is working to your application, you could [Automate user provisioning and de-provisioning to SaaS applications](../app-provisioning/user-provisioning.md) or [get started with Conditional Access](../conditional-access/app-based-conditional-access.md).
+Now that single sign-on is working to your application, you could [Automate user provisioning and de-provisioning to SaaS applications](../app-provisioning/user-provisioning.md) or [get started with Conditional Access](../conditional-access/app-based-conditional-access.md).
active-directory Delete Application Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/delete-application-portal.md
Last updated 03/24/2022--++ #Customer intent: As an administrator of an Azure AD tenant, I want to delete an enterprise application.
active-directory End User Experiences https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/end-user-experiences.md
Title: End-user experiences for applications
description: Azure Active Directory (Azure AD) provides several customizable ways to deploy applications to end users in your organization. -+ Last updated 09/27/2019--+ # End-user experiences for applications
These links use the same access control mechanisms as My Apps and Microsoft 365,
* [Quickstart Series on Application Management](view-applications-portal.md) * [What is single sign-on?](what-is-single-sign-on.md)
-* [Integrating Azure Active Directory with applications getting started guide](plan-an-application-integration.md)
+* [Integrating Azure Active Directory with applications getting started guide](plan-an-application-integration.md)
active-directory Hide Application From User Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/hide-application-from-user-portal.md
Title: Hide an Enterprise application
description: How to hide an Enterprise application from user's experience in Azure Active Directory access portals or Microsoft 365 launchers. -+ Last updated 09/23/2021--++ #customer intent: As an admin, I want to hide an enterprise application from user's experience so that it is not listed in the user's Active directory access portals or Microsoft 365 launchers
active-directory Howto Saml Token Encryption https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/howto-saml-token-encryption.md
Title: SAML token encryption
description: Learn how to configure Azure Active Directory SAML token encryption. -+ Last updated 03/13/2020--+
active-directory Manage Application Permissions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/manage-application-permissions.md
Title: Review permissions granted to applications
description: Learn how to review and manage permissions for an application in Azure Active Directory. -+ Last updated 10/23/2021-+
active-directory Manage Self Service Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/manage-self-service-access.md
Title: How to enable self-service application assignment
description: Enable self-service application access to allow users to find their own applications from their My Apps portal -+ Last updated 09/23/2021-+ -+ #customer intent: As an admin, I want to enable self-service application access so that users can self-discover applications from their My Apps portal.
active-directory Migrate Adfs Application Activity https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-adfs-application-activity.md
Title: Use the activity report to move AD FS apps to Azure Active Directory
description: The Active Directory Federation Services (AD FS) application activity report lets you quickly migrate applications from AD FS to Azure Active Directory (Azure AD). This migration tool for AD FS identifies compatibility with Azure AD and gives migration guidance. -+ Last updated 01/14/2019-+
active-directory Migrate Adfs Apps To Azure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-adfs-apps-to-azure.md
Title: Moving application authentication from AD FS to Azure Active Directory
description: Learn how to use Azure Active Directory to replace Active Directory Federation Services (AD FS), giving users single sign-on to all their applications. -+ Last updated 03/01/2021-+
This group of users is usually the most critically impacted in case of issues. T
* Read [Migrating application authentication to Azure AD](https://aka.ms/migrateapps/whitepaper). * Set up [Conditional Access](../conditional-access/overview.md) and [MFA](../authentication/concept-mfa-howitworks.md).
-* Try a step-wise code sample:[AD FS to Azure AD application migration playbook for developers](https://aka.ms/adfsplaybook).
+* Try a step-wise code sample:[AD FS to Azure AD application migration playbook for developers](https://aka.ms/adfsplaybook).
active-directory Migrate Application Authentication To Azure Active Directory https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migrate-application-authentication-to-azure-active-directory.md
Title: 'Migrate application authentication to Azure Active Directory' description: This whitepaper details the planning for and benefits of migrating your application authentication to Azure AD. -+ Last updated 02/05/2021-+
Identity deployment issue depending on your Enterprise Agreement with Microsoft.
- **Engage the Product Engineering team:** If you are working on a major customer deployment with millions of users, you are entitled to support from the Microsoft account team or your Cloud Solutions Architect. Based on the projectΓÇÖs deployment complexity, you can work directly with the [Azure Identity Product Engineering team.](https://aad.portal.azure.com/#blade/Microsoft_Azure_Marketplace/MarketplaceOffersBlade/selectedMenuItemId/solutionProviders) -- **Azure AD Identity blog:** Subscribe to the [Azure AD Identity blog](https://techcommunity.microsoft.com/t5/Azure-Active-Directory-Identity/bg-p/Identity) to stay up to date with all the latest product announcements, deep dives, and roadmap information provided directly by the Identity engineering team.
+- **Azure AD Identity blog:** Subscribe to the [Azure AD Identity blog](https://techcommunity.microsoft.com/t5/Azure-Active-Directory-Identity/bg-p/Identity) to stay up to date with all the latest product announcements, deep dives, and roadmap information provided directly by the Identity engineering team.
active-directory Migration Resources https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/migration-resources.md
Title: Resources for migrating apps to Azure Active Directory
description: Resources to help you migrate application access and authentication to Azure Active Directory (Azure AD). -+ Last updated 02/29/2020-+
active-directory My Apps Deployment Plan https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/my-apps-deployment-plan.md
Title: Plan My Apps configuration
description: Planning guide to effectively use My Apps in your organization. -+ Last updated 09/02/2021--++ # Plan Azure Active Directory My Apps configuration
active-directory One Click Sso Tutorial https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/one-click-sso-tutorial.md
Title: One-click, single sign-on (SSO) configuration of your Azure Marketplace a
description: Steps for one-click configuration of SSO for your application from the Azure Marketplace. -+ Last updated 06/11/2019-+ - # One-click app configuration of single sign-on
The one-click SSO feature is designed to configure single sign-on for Azure Mark
## Additional resources - [List of tutorials on how to integrate SaaS apps with Azure Active Directory](../saas-apps/tutorial-list.md)-- [What is the My Apps Secure Sign-in browser extension?](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510)
+- [What is the My Apps Secure Sign-in browser extension?](https://support.microsoft.com/account-billing/sign-in-and-start-apps-from-the-my-apps-portal-2f3b1bae-0e5a-4a86-a33e-876fbd2a4510)
active-directory Overview Application Gallery https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/overview-application-gallery.md
Title: Overview of the Azure Active Directory application gallery
description: An overview of using the Azure Active Directory application gallery. -+ Previously updated : 01/22/2021- Last updated : 01/22/2022+ # Overview of the Azure Active Directory application gallery
active-directory Plan Sso Deployment https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/plan-sso-deployment.md
Title: Plan a single sign-on deployment
description: Plan the deployment of single sign-on in Azure Active Directory. -+ Last updated 11/18/2021--+ # Customer intent: As an IT admin, I need to learn what it takes to plan a single-sign on deployment for my application in Azure Active Directory.
active-directory Tenant Restrictions https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/tenant-restrictions.md
Title: Use tenant restrictions to manage access to SaaS apps description: How to use tenant restrictions to manage which users can access apps based on their Azure AD tenant. -+ Last updated 12/6/2021--+
active-directory Troubleshoot Password Based Sso https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/troubleshoot-password-based-sso.md
Title: Troubleshoot password-based single sign-on description: Troubleshoot issues with an Azure AD app that's configured for password-based single sign-on. -+ Last updated 07/11/2017--+ # Troubleshoot password-based single sign-on
active-directory Troubleshoot Saml Based Sso https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/troubleshoot-saml-based-sso.md
Title: Troubleshoot SAML-based single sign-on
description: Troubleshoot issues with an Azure AD app that's configured for SAML-based single sign-on. -+ Last updated 07/11/2017--+ # Troubleshoot SAML-based single sign-on
active-directory View Applications Portal https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/view-applications-portal.md
Title: 'Quickstart: View enterprise applications'
description: View the enterprise applications that are registered to use your Azure Active Directory tenant. -+ Last updated 03/24/2022--+ #Customer intent: As an administrator of an Azure AD tenant, I want to search for and view the enterprise applications in the tenant.
active-directory What Is Application Management https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/what-is-application-management.md
Title: What is application management?
description: An overview of managing the lifecycle of an application in Azure Active Directory. -+ Last updated 10/22/2021--+ # What is application management in Azure Active Directory?
You can clean up access to applications. For example, [removing a userΓÇÖs acces
## Next steps -- Get started by adding your first enterprise application with the [Quickstart: Add an enterprise application](add-application-portal.md).
+- Get started by adding your first enterprise application with the [Quickstart: Add an enterprise application](add-application-portal.md).
active-directory What Is Single Sign On https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/what-is-single-sign-on.md
Title: What is single sign-on?
description: Learn about single sign-on for enterprise applications in Azure Active Directory. -+ Last updated 11/18/2021--++ # Customer intent: As an IT admin, I need to learn about single sign-on and my applications in Azure Active Directory.
active-directory Whats New Docs https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/manage-apps/whats-new-docs.md
--++
-reviewer: napuri
# Azure Active Directory application management: What's new
active-directory Fedramp Identification And Authentication Controls https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/active-directory/standards/fedramp-identification-and-authentication-controls.md
Each row in the following table provides prescriptive guidance to help you devel
| IA-02(5)| **When multiple users have access to a shared or group account password, require each user to first authenticate by using an individual authenticator.**<p>Use an individual account per user. If a shared account is required, Azure AD permits binding of multiple authenticators to an account so that each user has an individual authenticator. <p>Resources<br><li>[How it works: Azure AD multifactor authentication](../authentication/concept-mfa-howitworks.md)<br> <li>[Manage authentication methods for Azure AD multifactor authentication](../authentication/howto-mfa-userdevicesettings.md) | | IA-02(8)| **Implement replay-resistant authentication mechanisms for network access to privileged accounts.**<p>Configure conditional access policies to require multifactor authentication for all users. All Azure AD authentication methods at authentication assurance level 2 and 3 use either nonce or challenges and are resistant to replay attacks.<p>References<br> <li>[Conditional access: Require multifactor authentication for all users](../conditional-access/howto-conditional-access-policy-all-users-mfa.md)<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md) | | IA-02(11)| **Implement Azure AD multifactor authentication to access customer-deployed resources remotely so that one of the factors is provided by a device separate from the system gaining access where the device meets FIPS-140-2, NIAP certification, or NSA approval.**<p>See guidance for IA-02(1-4). Azure AD authentication methods to consider at AAL3 meeting the separate device requirements are:<p> FIDO2 security keys<br> <li>Windows Hello for Business with hardware TPM (TPM is recognized as a valid "something you have" factor by NIST 800-63B Section 5.1.7.1.)<br> <li>Smart card<p>References<br><li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md)<br> <li>[NIST 800-63B Section 5.1.7.1](https://pages.nist.gov/800-63-3/sp800-63b.html) |
-| IA-02(12)| **Accept and verify personal identity verification (PIV) credentials. This control isn't applicable if the customer doesn't deploy PIV credentials.**<p>Configure federated authentication by using Active Directory Federation Services (AD FS) to accept PIV (certificate authentication) as both primary and multifactor authentication methods and issue the multifactor authentication (MultipleAuthN) claim when PIV is used. Configure the federated domain in Azure AD with setting [federatedIdpMfaBehavior](/graph/api/resources/federatedIdpMfaBehavior?view=graph-rest-beta&preserve-view=true) to `enforceMfaByFederatedIdp` (recommended) or SupportsMfa to `$True` to direct multifactor authentication requests originating at Azure AD to AD FS. Alternatively, you can use PIV for sign-in on Windows devices and later use integrated Windows authentication along with seamless single sign-on. Windows Server and client verify certificates by default when used for authentication. <p>Resources<br><li>[What is federation with Azure AD?](../hybrid/whatis-fed.md)<br> <li>[Configure AD FS support for user certificate authentication](/windows-server/identity/ad-fs/operations/configure-user-certificate-authentication)<br> <li>[Configure authentication policies](/windows-server/identity/ad-fs/operations/configure-authentication-policies)<br> <li>[Secure resources with Azure AD multifactor authentication and AD FS](../authentication/howto-mfa-adfs.md)<br><li>[Set-MsolDomainFederationSettings](/powershell/module/msonline/set-msoldomainfederationsettings)<br> <li>[Azure AD Connect: Seamless single sign-on](../hybrid/how-to-connect-sso.md) |
+| IA-02(12)| **Accept and verify personal identity verification (PIV) credentials. This control isn't applicable if the customer doesn't deploy PIV credentials.**<p>Configure federated authentication by using Active Directory Federation Services (AD FS) to accept PIV (certificate authentication) as both primary and multifactor authentication methods and issue the multifactor authentication (MultipleAuthN) claim when PIV is used. Configure the federated domain in Azure AD with setting **federatedIdpMfaBehavior** to `enforceMfaByFederatedIdp` (recommended) or SupportsMfa to `$True` to direct multifactor authentication requests originating at Azure AD to AD FS. Alternatively, you can use PIV for sign-in on Windows devices and later use integrated Windows authentication along with seamless single sign-on. Windows Server and client verify certificates by default when used for authentication. <p>Resources<br><li>[What is federation with Azure AD?](../hybrid/whatis-fed.md)<br> <li>[Configure AD FS support for user certificate authentication](/windows-server/identity/ad-fs/operations/configure-user-certificate-authentication)<br> <li>[Configure authentication policies](/windows-server/identity/ad-fs/operations/configure-authentication-policies)<br> <li>[Secure resources with Azure AD multifactor authentication and AD FS](../authentication/howto-mfa-adfs.md)<br><li>[Set-MsolDomainFederationSettings](/powershell/module/msonline/set-msoldomainfederationsettings)<br> <li>[Azure AD Connect: Seamless single sign-on](../hybrid/how-to-connect-sso.md) |
| IA-03| **Implement device identification and authentication prior to establishing a connection.**<p>Configure Azure AD to identify and authenticate Azure AD Registered, Azure AD Joined, and Azure AD Hybrid joined devices.<p> Resources<br><li>[What is a device identity?](../devices/overview.md)<br> <li>[Plan an Azure AD devices deployment](../devices/plan-device-deployment.md)<br><li>[Require managed devices for cloud app access with conditional access](../conditional-access/require-managed-devices.md) | | IA-04<br>IA-04(4)| **Disable account identifiers after 35 days of inactivity and prevent their reuse for two years. Manage individual identifiers by uniquely identifying each individual (for example, contractors and foreign nationals).**<p>Assign and manage individual account identifiers and status in Azure AD in accordance with existing organizational policies defined in AC-02. Follow AC-02(3) to automatically disable user and device accounts after 35 days of inactivity. Ensure that organizational policy maintains all accounts that remain in the disabled state for at least two years. After this time, you can remove them. <p>Determine inactivity<br> <li>[Manage inactive user accounts in Azure AD](../reports-monitoring/howto-manage-inactive-user-accounts.md)<br> <li>[Manage stale devices in Azure AD](../devices/manage-stale-devices.md)<br> <li>[See AC-02 guidance](fedramp-access-controls.md) | | IA-05| **Configure and manage information system authenticators.**<p>Azure AD supports various authentication methods. You can use your existing organizational policies for management. See guidance for authenticator selection in IA-02(1-4). Enable users in combined registration for SSPR and Azure AD multifactor authentication and require users to register a minimum of two acceptable multifactor authentication methods to facilitate self-remediation. You can revoke user-configured authenticators at any time with the authentication methods API. <p>Authenticator strength/protecting authenticator content<br> <li>[Achieving NIST authenticator assurance levels with the Microsoft identity platform](nist-overview.md)<p>Authentication methods and combined registration<br> <li>[What authentication and verification methods are available in Azure Active Directory?](../authentication/concept-authentication-methods.md)<br> <li>[Combined registration for SSPR and Azure AD multifactor authentication](../authentication/concept-registration-mfa-sspr-combined.md)<p>Authenticator revokes<br> <li>[Azure AD authentication methods API overview](/graph/api/resources/authenticationmethods-overview) |
aks Node Pool Snapshot https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/node-pool-snapshot.md
NODEPOOL_ID=$(az aks nodepool show --name nodepool1 --cluster-name myAKSCluster
> [!IMPORTANT] > Your AKS node pool must be created or upgraded after Nov 10th, 2021 in order for a snapshot to be taken from it.
+>Starting April, 2022 the CLI-preview extension commands for node pool snapshot has changed. In preview CLI please use az aks nodepool snapshot commands, refer [CLI Node Pool Snapshot][az-aks-nodepool-snapshot].
Now, to take a snapshot from the previous node pool you'll use the `az aks snapshot` CLI command.
az aks create --name myAKSCluster2 --resource-group myResourceGroup --snapshot-i
[use-multiple-node-pools]: use-multiple-node-pools.md [max-surge]: upgrade-cluster.md#customize-node-surge-upgrade [az-extension-add]: /cli/azure/extension#az_extension_add
+[az-aks-nodepool-snapshot]:/cli/azure/aks/nodepool#az-aks-nodepool-add
[az-extension-update]: /cli/azure/extension#az_extension_update [az-feature-list]: /cli/azure/feature#az_feature_list [az-feature-register]: /cli/azure/feature#az_feature_register
aks Use Byo Cni https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/aks/use-byo-cni.md
resource aksCluster 'Microsoft.ContainerService/managedClusters@2022-02-02-previ
} ``` ++ ### Deploy a CNI plugin When AKS provisioning completes, the cluster will be online, but all of the nodes will be in a `NotReady` state:
aks-nodepool1-23902496-vmss000000 container runtime network not ready: Network
At this point, the cluster is ready for installation of a CNI plugin. - ## Next steps Learn more about networking in AKS in the following articles:
Learn more about networking in AKS in the following articles:
[network-comparisons]: concepts-network.md#compare-network-models [system-node-pools]: use-system-pools.md [prerequisites]: configure-azure-cni.md#prerequisites
+[deploy-bicep-template]: ../azure-resource-manager/bicep/deploy-cli.md
azure-arc Conceptual Gitops Flux2 https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/kubernetes/conceptual-gitops-flux2.md
Each `fluxConfigurations` resource in Azure will be associated in a Kubernetes c
> * `fluxconfig-agent` monitors for new or updated `fluxConfiguration` resources in Azure. The agent requires connectivity to Azure for the desired state of the `fluxConfiguration` to be applied to the cluster. If the agent is unable to connect to Azure, there will be a delay in making the changes in the cluster until the agent can connect. If the cluster is disconnected from Azure for more than 48 hours, then the request to the cluster will time-out, and the changes will need to be re-applied in Azure. > * Sensitive customer inputs like private key and token/password are stored for less than 48 hours in the Kubernetes Configuration service. If you update any of these values in Azure, assure that your clusters connect with Azure within 48 hours.
+## Data residency
+The Azure GitOps service (Azure Kubernetes Configuration Management) stores/processes customer data. By default, customer data is replicated to the paired region. For the regions Singapore, East Asia, and Brazil South, all customer data is stored and processed in the region.
+ ## Next steps Advance to the next tutorial to learn how to enable GitOps on your AKS or Azure Arc-enabled Kubernetes clusters
azure-arc Tutorial Enable Vm Insights https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-arc/servers/learn/tutorial-enable-vm-insights.md
Title: Tutorial - Monitor a hybrid machine with Azure Monitor VM insights description: Learn how to collect and analyze data from a hybrid machine in Azure Monitor. Previously updated : 04/21/2021 Last updated : 04/25/2022 # Tutorial: Monitor a hybrid machine with VM insights
-[Azure Monitor](../../../azure-monitor/overview.md) can collect data directly from your hybrid machines into a Log Analytics workspace for detailed analysis and correlation. Typically this would entail installing the [Log Analytics agent](../../../azure-monitor/agents/agents-overview.md#log-analytics-agent) on the machine using a script, manually, or automated method following your configuration management standards. Azure Arc-enabled servers recently introduced support to install the Log Analytics and Dependency agent [VM extensions](../manage-vm-extensions.md) for Windows and Linux, enabling [VM insights](../../../azure-monitor/vm/vminsights-overview.md) to collect data from your non-Azure VMs.
+[Azure Monitor](../../../azure-monitor/overview.md) can collect data directly from your hybrid machines into a Log Analytics workspace for detailed analysis and correlation. Typically, this would require installing the [Log Analytics agent](../../../azure-monitor/agents/agents-overview.md#log-analytics-agent) on the machine using a script, manually, or an automated method following your configuration management standards. Now, Azure Arc-enabled servers can install the Log Analytics and Dependency agent [VM extension](../manage-vm-extensions.md) for Windows and Linux, enabling [VM insights](../../../azure-monitor/vm/vminsights-overview.md) to collect data from your non-Azure VMs.
-This tutorial shows you how to configure and collect data from your Linux or Windows machines by enabling VM insights following a simplified set of steps, which streamlines the experience and takes a shorter amount of time.
+<!This tutorial shows you how to configure and collect data from your Linux or Windows machines by enabling VM insights following a simplified set of steps, which streamlines the experience and takes a shorter amount of time.>
+
+In this tutorial, you will learn how to:
+
+> [!div class="checklist"]
+> * Enable and configure VM insights for your Linux or Windows non-azure VMs
+> * Collect and view data from these VMs
## Prerequisites
This tutorial shows you how to configure and collect data from your Linux or Win
* Review firewall requirements for the Log Analytics agent provided in the [Log Analytics agent overview](../../../azure-monitor/agents/log-analytics-agent.md#network-requirements). The VM insights Map Dependency agent doesn't transmit any data itself, and it doesn't require any changes to firewalls or ports.
-## Sign in to Azure portal
+<!## Sign in to Azure portal
-Sign in to the [Azure portal](https://portal.azure.com).
+Sign in to the [Azure portal](https://portal.azure.com).>
## Enable VM insights
-1. Launch the Azure Arc service in the Azure portal by clicking **All services**, then searching for and selecting **Machines - Azure Arc**.
+1. Launch the Azure Arc service in the Azure portal by clicking **All services**, then searching for and selecting **Servers - Azure Arc**.
- :::image type="content" source="./media/quick-enable-hybrid-vm/search-machines.png" alt-text="Search for Azure Arc-enabled servers in All Services" border="false":::
+ :::image type="content" source="./media/quick-enable-hybrid-vm/search-machines.png" alt-text="Screenshot of Azure portal showing search for Servers, Azure Arc." border="false":::
-1. On the **Machines - Azure Arc** page, select the connected machine you created in the [quickstart](quick-enable-hybrid-vm.md) article.
+1. On the **Azure Arc - Servers** page, select the connected machine you created in the [quickstart](quick-enable-hybrid-vm.md) article.
1. From the left-pane under the **Monitoring** section, select **Insights** and then **Enable**.
- :::image type="content" source="./media/tutorial-enable-vm-insights/insights-option.png" alt-text="Select Insights option from left-hand menu" border="false":::
+ :::image type="content" source="./media/tutorial-enable-vm-insights/insights-option.png" alt-text="Screenshot of left-side navigation menu for the machine with Insights selected." border="false":::
-1. On the Azure Monitor **Insights Onboarding** page, you are prompted to create a workspace. For this tutorial, we don't recommend you select an existing Log Analytics workspace if you have one already. Select the default, which is a workspace with a unique name in the same region as your registered connected machine. This workspace is created and configured for you.
+1. On the Azure Monitor **Insights Onboarding** page, you're prompted to create a workspace. For this tutorial, don't select an existing Log Analytics workspace if you already have one. Instead, select the default, which is a workspace with a unique name in the same region as your registered connected machine. This workspace is created and configured for you.
- :::image type="content" source="./media/tutorial-enable-vm-insights/enable-vm-insights.png" alt-text="Enable VM insights page" border="false":::
+ :::image type="content" source="./media/tutorial-enable-vm-insights/enable-vm-insights.png" alt-text="Screenshot of Insights Onboarding screen with button to enable VM insights." border="false":::
-1. You receive status messages while the configuration is performed. This process takes a few minutes as extensions are installed on your connected machine.
+ Status messages display while the configuration is performed and extensions are installed on your connected machine. This process takes a few minutes.
- :::image type="content" source="./media/tutorial-enable-vm-insights/onboard-vminsights-vm-portal-status.png" alt-text="Enable VM insights progress status message" border="false":::
+ :::image type="content" source="./media/tutorial-enable-vm-insights/onboard-vminsights-vm-portal-status.png" alt-text="Screenshot of Insights installation page for machine showing progress status message." border="false":::
- When it's complete, you get a message that the machine has been successfully onboarded and the insight has been successfully deployed.
+ When the process is complete, a message displays that the machine has been onboarded and that insight has been successfully deployed.
## View data collected
-After the deployment and configuration is completed, select **Insights**, and then select the **Performance** tab. On the Performance tab, it shows a select group of performance counters collected from the guest operating system of your machine. Scroll down to view more counters, and move the mouse over a graph to view average and percentiles taken starting from the time when the Log Analytics VM extension was installed on the machine.
+1. After deployment and configuration is complete, select **Insights**, and then select the **Performance** tab. The Performance tab shows a select group of performance counters collected from the guest operating system of your machine. Scroll down to view more counters, and move the mouse over a graph to view average and percentiles taken starting from the time when the Log Analytics VM extension was installed on the machine.
+
+ :::image type="content" source="./media/tutorial-enable-vm-insights/insights-performance-charts.png" alt-text="Screenshot of Insights Performance tab with charts for selected machine." border="false":::
+1. Select **Map**. The maps feature shows the processes running on the machine and their dependencies. Select **Properties** to open the property pane (if it isn't already open).
-Select **Map** to open the maps feature, which shows the processes running on the machine and their dependencies. Select **Properties** to open the property pane if it isn't already open.
+ :::image type="content" source="./media/tutorial-enable-vm-insights/insights-map.png" alt-text="Screenshot of Insights Map tab with map for selected machine." border="false":::
+1. Expand the processes for your machine. Select one of the processes to view its details and to highlight its dependencies.
-Expand the processes for your machine. Select one of the processes to view its details and to highlight its dependencies.
+1. Select your machine again and then select **Log Events**. You see a list of tables that are stored in the Log Analytics workspace for the machine. This list will be different depending whether you're using a Windows or Linux machine.
-Select your machine again and then select **Log Events**. You see a list of tables that are stored in the Log Analytics workspace for the machine. This list will be different depending whether you're using a Windows or Linux machine. Select the **Event** table. The **Event** table includes all events from the Windows event log. Log Analytics opens with a simple query to retrieve collected event log entries.
+1. Select the **Event** table. The **Event** table includes all events from the Windows event log. Log Analytics opens with a simple query to retrieve collected event log entries.
## Next steps
-To learn more about Azure Monitor, look at the following article:
+To learn more about Azure Monitor, see the following article:
> [!div class="nextstepaction"] > [Azure Monitor overview](../../../azure-monitor/overview.md)
azure-government Compare Azure Government Global Azure https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-government/compare-azure-government-global-azure.md
recommendations: false Previously updated : 03/22/2022 Last updated : 04/29/2022 # Compare Azure Government and global Azure
You can use AzureCLI or PowerShell to obtain Azure Government endpoints for serv
should get you different endpoints for Azure Government. -- Use a **PowerShell** cmdlet such as [Get-AzureEnvironment](/powershell/module/servicemanagement/azure.service/get-azureenvironment) to get endpoints and metadata for an instance of Azure service. For example,
+- Use a **PowerShell** cmdlet such as [Get-AzEnvironment](/powershell/module/az.accounts/get-azenvironment) to get endpoints and metadata for an instance of Azure service. For example,
```powershell
- Get-AzureEnvironment -Name AzureUSGovernment
+ Get-AzEnvironment -Name AzureUSGovernment
``` should get you properties for Azure Government. This cmdlet gets environments from your subscription data file.
Table below lists API endpoints in Azure vs. Azure Government for accessing and
|||portal.loganalytics.io|portal.loganalytics.us|| |||api.loganalytics.io|api.loganalytics.us|| |||docs.loganalytics.io|docs.loganalytics.us||
+|||adx.monitor.azure.com|adx.monitor.azure.us|[Data Explorer queries](/azure/data-explorer/query-monitor-data)|
||Azure Resource Manager|management.azure.com|management.usgovcloudapi.net|| ||Gallery URL|gallery.azure.com|gallery.azure.us|| ||Microsoft Azure portal|portal.azure.com|portal.azure.us||
azure-maps Power Bi Visual Add Reference Layer https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/power-bi-visual-add-reference-layer.md
To add a **GeoJSON** file as a reference layer, go to the **Format** pane, expan
After a GeoJSON file is added to the reference layer, the name of the file will appear in place of the **+ Add local file** button with an **X** beside it. Press the **X** button to remove the data from the visual and delete the GeoJSON file from Power BI.
-The following map is displays [2016 census tracts for Colorado](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/AzureMapsCodeSamples/Common/data/geojson), colored by population.
+The following map is displays [2016 census tracts for Colorado](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Static/data/geojson), colored by population.
> [!div class="mx-imgBorder"] > ![A map displaying 2016 census tracts for Colorado, colored by population as a reference layer](media/power-bi-visual/reference-layer-CO-census-tract.png)
azure-maps Tutorial Create Store Locator https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/tutorial-create-store-locator.md
To see a live sample of what you will create in this tutorial, see [Simple Store
To more easily follow and engage this tutorial, you'll need to download the following resources:
-* Full source code for the [Simple Store Locator](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/AzureMapsCodeSamples/Tutorials/Simple%20Store%20Locator) on GitHub.
-* [Store location data](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/AzureMapsCodeSamples/Tutorials/Simple%20Store%20Locator/data) that you'll import into the store locator dataset.
-* The [Map images](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/AzureMapsCodeSamples/Tutorials/Simple%20Store%20Locator/images).
+* Full source code for the [Simple Store Locator](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Simple%20Store%20Locator) on GitHub.
+* [Store location data](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Simple%20Store%20Locator/data) that you'll import into the store locator dataset.
+* The [Map images](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Simple%20Store%20Locator/images).
## Store locator features
This section describes how to create a dataset of the stores that you want to di
:::image type="content" source="./media/tutorial-create-store-locator/store-locator-data-spreadsheet.png" alt-text="Screenshot of the store locator data in an Excel workbook.":::
-The excel file containing the full dataset for the Contoso Coffee locator sample application can be downloaded from the [data](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/AzureMapsCodeSamples/Tutorials/Simple%20Store%20Locator/data) folder of the _Azure Maps code samples_ repository in GitHub.
+The excel file containing the full dataset for the Contoso Coffee locator sample application can be downloaded from the [data](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Simple%20Store%20Locator/data) folder of the _Azure Maps code samples_ repository in GitHub.
From the above screenshot of the data, we can make the following observations:
From the above screenshot of the data, we can make the following observations:
To convert the Contoso Coffee shop location data from an Excel workbook into a tab-delimited text file:
-1. Download the Excel workbook [ContosoCoffee.xlsx](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/AzureMapsCodeSamples/Tutorials/Simple%20Store%20Locator/data) and Open it in Excel.
+1. Download the Excel workbook [ContosoCoffee.xlsx](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Simple%20Store%20Locator/data) and Open it in Excel.
1. Select **File > Save As...**.
If you open the text file in Notepad, it looks similar to the following text:
8. Create another folder named *images*.
-9. If you haven't already, download the 10 [Map images](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/AzureMapsCodeSamples/Tutorials/Simple%20Store%20Locator/images) from the images directory in the GitHub Repository and add them to the *images* folder.
+9. If you haven't already, download the 10 [Map images](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Simple%20Store%20Locator/images) from the images directory in the GitHub Repository and add them to the *images* folder.
Your workspace folder should now look like the following screenshot:
To create the HTML:
</main> ```
-After you finish, *https://docsupdatetracker.net/index.html* should look like [this example https://docsupdatetracker.net/index.html file](https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/master/AzureMapsCodeSamples/Tutorials/Simple%20Store%20Locator/https://docsupdatetracker.net/index.html).
+After you finish, *https://docsupdatetracker.net/index.html* should look like [Simple Store Locator.html](https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/master/Samples/Tutorials/Simple%20Store%20Locator/Simple%20Store%20Locator.html).
## Define the CSS styles
In this tutorial, you learned how to create a basic store locator by using Azure
## Additional information
-* For the completed code used in this tutorial, see [Simple Store Locator](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/AzureMapsCodeSamples/Tutorials/Simple%20Store%20Locator) on GitHub.
+* For the completed code used in this tutorial, see the [Simple Store Locator](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Simple%20Store%20Locator) tutorial on GitHub.
* To view this sample live, see [Simple Store Locator](https://azuremapscodesamples.azurewebsites.net/https://docsupdatetracker.net/index.html?sample=Simple%20Store%20Locator) on the **Azure Maps Code Samples** site. * learn more about the coverage and capabilities of Azure Maps by using [Zoom levels and tile grid](zoom-levels-and-tile-grid.md). * You can also [Use data-driven style expressions](data-driven-style-expressions-web-sdk.md) to apply to your business logic.
azure-maps Tutorial Load Geojson File Android https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/tutorial-load-geojson-file-android.md
This tutorial guides you through the process of importing a GeoJSON file of loca
## Prerequisites 1. Complete the [Quickstart: Create an Android app](quick-android-map.md). This tutorial will extend the code used in that quickstart.
-2. Download the [Sample Points of Interest](https://raw.githubusercontent.com/Azure-Samples/AzureMapsCodeSamples/master/AzureMapsCodeSamples/Common/data/geojson/SamplePoiDataSet.json) GeoJSON file.
+2. Download the [Sample Points of Interest](https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/master/Static/data/geojson/SamplePoiDataSet.json) GeoJSON file.
### Import GeoJSON data from web or assets folder
The following steps show you how to import a GeoJSON file into the application a
1. Complete the [Quickstart: Create an Android app](quick-android-map.md) as the following steps build on top of this application. 2. In the project panel of Android studio, right-click on the **app** folder and go to `New > Folder > Assets Folder`.
-3. Drag and drop the [Sample Points of Interest](https://raw.githubusercontent.com/Azure-Samples/AzureMapsCodeSamples/master/AzureMapsCodeSamples/Common/data/geojson/SamplePoiDataSet.json) GeoJSON file into the assets folder.
+3. Drag and drop the [Sample Points of Interest](https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/master/Static/data/geojson/SamplePoiDataSet.json) GeoJSON file into the assets folder.
::: zone pivot="programming-language-java-android"
azure-maps Tutorial Prioritized Routes https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/tutorial-prioritized-routes.md
This section shows you how to use the Azure Maps Route service to get directions
* The truck route is displayed using a thick blue line and the car route is displayed using a thin purple line. * The car route goes across Lake Washington via I-90, passing through tunnels beneath residential areas. Because the tunnels are in residential areas, hazardous waste cargo is restricted. The truck route, which specifies a `USHazmatClass2` cargo type, is directed to use a different route that doesn't have this restriction.
-* For the completed code used in this tutorial, see [truckRoute.html](https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/master/AzureMapsCodeSamples/Tutorials/truckRoute.html) on GitHub.
+* For the completed code used in this tutorial, see the [Truck Route](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Truck%20Route) tutorial on GitHub.
* To view this sample live, see [Multiple routes by mode of travel](https://azuremapscodesamples.azurewebsites.net/?sample=Multiple%20routes%20by%20mode%20of%20travel) on the **Azure Maps Code Samples** site. * You can also use [Data-driven style expressions](data-driven-style-expressions-web-sdk.md)
azure-maps Tutorial Route Location https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/tutorial-route-location.md
This tutorial shows you how to use the Azure Maps [Route service API](/rest/api/
> * Create and add GeoJSON objects to the Map to represent start and end points. > * Get route directions from start and end points using the [Get Route directions API](/rest/api/maps/route/getroutedirections).
-You can obtain the full source code for the sample [here](https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/master/AzureMapsCodeSamples/Tutorials/route.html). A live sample can be found [here](https://azuremapscodesamples.azurewebsites.net/?sample=Route%20to%20a%20destination).
+See the [route](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Route) tutorial in GitHub for the source code. See [Route to a destination](https://samples.azuremaps.com/?sample=route-to-a-destination) for a live sample.
## Prerequisites
This section shows you how to use the Azure Maps Route Directions API to get rou
:::image type="content" source="./media/tutorial-route-location/map-route.png" alt-text="[A screenshot showing a map that demonstrates the Azure Map control and Route service.":::
-* For the completed code used in this tutorial, see [route.html](https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/master/AzureMapsCodeSamples/Tutorials/route.html) on GitHub.
+* For the completed code used in this tutorial, see the [route](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Route) tutorial on GitHub.
* To view this sample live, see [Route to a destination](https://azuremapscodesamples.azurewebsites.net/?sample=Route%20to%20a%20destination) on the **Azure Maps Code Samples** site. ## Next steps
azure-maps Tutorial Search Location https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-maps/tutorial-search-location.md
The map that we've made so far only looks at the longitude/latitude data for the
![A screen shot of a map with information popups that appear when you hover over a search pin.](./media/tutorial-search-location/popup-map.png)
-* For the completed code used in this tutorial, see [search.html](https://github.com/Azure-Samples/AzureMapsCodeSamples/blob/master/AzureMapsCodeSamples/Tutorials/search.html) on GitHub.
+* For the completed code used in this tutorial, see the [search](https://github.com/Azure-Samples/AzureMapsCodeSamples/tree/master/Samples/Tutorials/Search) tutorial on GitHub.
* To view this sample live, see [Search for points of interest](https://azuremapscodesamples.azurewebsites.net/?sample=Search%20for%20points%20of%20interest) on the **Azure Maps Code Samples** site. ## Next steps
azure-monitor Best Practices Cost https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/best-practices-cost.md
The decision whether to configure a table for Basic Logs is based on the followi
- You only require basic queries of the data using a limited version of the query language. - The cost savings for data ingestion over a month exceeds the expected cost for any expected queries
-See [Query Basic Logs in Azure Monitor (Preview)](/logs/basic-logs-query.md) for details on query limitations and [Configure Basic Logs in Azure Monitor (Preview)](logs/basic-logs-configure.md) for more details about them.
+See [Query Basic Logs in Azure Monitor (Preview)](.//logs/basic-logs-query.md) for details on query limitations and [Configure Basic Logs in Azure Monitor (Preview)](logs/basic-logs-configure.md) for more details about them.
## Reduce the amount of data collected The most straightforward strategy to reduce your costs for data ingestion and retention is to reduce the amount of data that you collect. Your goal should be to collect the minimal amount of data to meet your monitoring requirements. If you find that you're collecting data that's not being used for alerting or analysis, then you have an opportunity to reduce your monitoring costs by modifying your configuration to stop collecting data that you don't need.
You can also ingestion-time transformations to lower the storage requirements fo
The following table for methods to apply transformations to different workflows. > [!NOTE]
-> Azure tables here refers to tables that are created and maintained by Microsoft and documented in the [Azure Monitor Reference](/azure/azure-monitor-reference). Custom tables are created by custom applications and have a suffix of *_CL* ion their name.
+> Azure tables here refers to tables that are created and maintained by Microsoft and documented in the [Azure Monitor Reference](/azure/azure-monitor/reference/). Custom tables are created by custom applications and have a suffix of *_CL* ion their name.
| Source | Target | Description | Filtering method | |:|:|:|:|
azure-monitor Containers https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/containers/containers.md
The following table outlines the Docker orchestration and operating system monit
Use the following information to install and configure the solution.
-1. Add the Container Monitoring solution to your Log Analytics workspace from [Azure Marketplace](https://azuremarketplace.microsoft.com/marketplace/apps/Microsoft.ContainersOMS?tab=Overview) or by using the process described in [Add monitoring solutions from the Solutions Gallery](../insights/solutions.md).
+1. Add the Container Monitoring solution to your Log Analytics workspace from Azure Marketplace or by using the process described in [Add monitoring solutions from the Solutions Gallery](../insights/solutions.md).
2. Install and use Docker with a Log Analytics agent. Based on your operating system and Docker orchestrator, you can use the following methods to configure your agent. - For standalone hosts:
azure-monitor Customer Managed Keys https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/logs/customer-managed-keys.md
description: Information and steps to configure Customer-managed key to encrypt
Previously updated : 07/29/2021 Last updated : 05/01/2022
azure-monitor Logs Dedicated Clusters https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-monitor/logs/logs-dedicated-clusters.md
description: Customers meeting the minimum commitment tier could use dedicated c
Previously updated : 07/29/2021 Last updated : 05/01/2022
The user account that creates the clusters must have the standard Azure resource
After you create your cluster resource, you can edit additional properties such as *sku*, *keyVaultProperties, or *billingType*. See more details below.
-You can have up to two active clusters per subscription per region. If the cluster is deleted, it is still reserved for 14 days. You can have up to four reserved clusters per subscription per region (active or recently deleted).
+You can have up to five active clusters per subscription per region. If the cluster is deleted, it is still reserved for 14 days. You can have up to four reserved clusters per subscription per region (active or recently deleted).
> [!NOTE] > Cluster creation triggers resource allocation and provisioning. This operation can take a few hours to complete.
Authorization: Bearer <token>
## Limits and constraints -- A maximum of two active clusters can be created in each region and subscription.
+- A maximum of five active clusters can be created in each region and subscription.
- A maximum number of four reserved clusters (active or recently deleted) can be created in each region and subscription.
azure-resource-manager Bicep Functions Resource https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/bicep/bicep-functions-resource.md
The possible uses of `list*` are shown in the following table.
| Microsoft.ApiManagement/service/openidConnectProviders | [listSecrets](/rest/api/apimanagement/current-ga/openid-connect-provider/list-secrets) | | Microsoft.ApiManagement/service/subscriptions | [listSecrets](/rest/api/apimanagement/current-ga/subscription/list-secrets) | | Microsoft.AppConfiguration/configurationStores | [ListKeys](/rest/api/appconfiguration/configurationstores/listkeys) |
-| Microsoft.AppPlatform/Spring | [listTestKeys](/rest/api/azurespringcloud/services/listtestkeys) |
+| Microsoft.AppPlatform/Spring | [listTestKeys](/rest/api/azurespringapps/services/list-test-keys) |
| Microsoft.Automation/automationAccounts | [listKeys](/rest/api/automation/keys/listbyautomationaccount) | | Microsoft.Batch/batchAccounts | [listkeys](/rest/api/batchmanagement/batchaccount/getkeys) | | Microsoft.BatchAI/workspaces/experiments/jobs | listoutputfiles |
azure-resource-manager Key Vault Access https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/managed-applications/key-vault-access.md
Title: Use Key Vault when deploying managed app
-description: Shows how to use access secrets in Azure Key Vault when deploying Managed Applications
-
+ Title: Use Azure Key Vault when deploying Managed Applications
+description: Shows how to access secrets in Azure Key Vault when deploying Managed Applications.
Previously updated : 08/16/2021- Last updated : 04/29/2022 + # Access Key Vault secret when deploying Azure Managed Applications When you need to pass a secure value (like a password) as a parameter during deployment, you can retrieve the value from an [Azure Key Vault](../../key-vault/general/overview.md). To access the Key Vault when deploying Managed Applications, you must grant access to the **Appliance Resource Provider** service principal. The Managed Applications service uses this identity to run operations. To successfully retrieve a value from a Key Vault during deployment, the service principal must be able to access the Key Vault.
This article describes how to configure the Key Vault to work with Managed Appli
## Enable template deployment
-1. In the portal, select your Key Vault.
-
-1. Select **Access policies**.
+1. Sign in to the [Azure portal](https://portal.azure.com).
+1. Open your key vault. Enter _key vaults_ in the search box or select **Key vaults**.
- ![Select access policies](./media/key-vault-access/select-access-policies.png)
+ :::image type="content" source="./media/key-vault-access/open-key-vault.png" alt-text="Screenshot of the Azure home page to open a key vault using search or by selecting key vault.":::
-1. Select **Click to show advanced access policies**.
+1. Select **Access policies**.
- ![Show advanced access policies](./media/key-vault-access/advanced.png)
+ :::image type="content" source="./media/key-vault-access/select-access-policies.png" alt-text="Screenshot of the key vault setting to select access policies.":::
-1. Select **Enable access to Azure Resource Manager for template deployment**. Then, select **Save**.
+1. Select **Azure Resource Manager for template deployment**. Then, select **Save**.
- ![Enable template deployment](./media/key-vault-access/enable-template.png)
+ :::image type="content" source="./media/key-vault-access/enable-template.png" alt-text="Screenshot of the key vault's access policies to enable Azure Resource Manager for template deployment.":::
## Add service as contributor
To pass a secret from a Key Vault to a template in your Managed Application, you
```json {
- "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0", "parameters": { "location": {
To pass a secret from a Key Vault to a template in your Managed Application, you
"vaultName": { "type": "string", "metadata": {
- "description": "The name of the keyvault that contains the secret."
+ "description": "The name of the key vault that contains the secret."
} }, "secretName": {
To pass a secret from a Key Vault to a template in your Managed Application, you
"vaultResourceGroupName": { "type": "string", "metadata": {
- "description": "The name of the resource group that contains the keyvault."
+ "description": "The name of the resource group that contains the key vault."
} }, "vaultSubscription": { "type": "string", "defaultValue": "[subscription().subscriptionId]", "metadata": {
- "description": "The name of the subscription that contains the keyvault."
+ "description": "The name of the subscription that contains the key vault."
} } }, "resources": [ { "type": "Microsoft.Resources/deployments",
- "apiVersion": "2018-05-01",
+ "apiVersion": "2021-04-01",
"name": "dynamicSecret", "properties": { "mode": "Incremental",
To pass a secret from a Key Vault to a template in your Managed Application, you
"scope": "inner" }, "template": {
- "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
+ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0", "parameters": { "adminLogin": {
To pass a secret from a Key Vault to a template in your Managed Application, you
"resources": [ { "type": "Microsoft.Sql/servers",
- "apiVersion": "2018-06-01-preview",
+ "apiVersion": "2021-08-01-preview",
"name": "[variables('sqlServerName')]", "location": "[parameters('location')]", "properties": {
To pass a secret from a Key Vault to a template in your Managed Application, you
You've configured your Key Vault to be accessible during deployment of a Managed Application.
-* For information about passing a value from a Key Vault as a template parameter, see [Use Azure Key Vault to pass secure parameter value during deployment](../templates/key-vault-parameter.md).
-* For managed application examples, see [Sample projects for Azure managed applications](sample-projects.md).
-* To learn how to create a UI definition file for a managed application, see [Get started with CreateUiDefinition](create-uidefinition-overview.md).
+- For information about passing a value from a Key Vault as a template parameter, see [Use Azure Key Vault to pass secure parameter value during deployment](../templates/key-vault-parameter.md).
+- For managed application examples, see [Sample projects for Azure managed applications](sample-projects.md).
+- To learn how to create a UI definition file for a managed application, see [Get started with CreateUiDefinition](create-uidefinition-overview.md).
azure-resource-manager Template Functions Resource https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/azure-resource-manager/templates/template-functions-resource.md
The possible uses of `list*` are shown in the following table.
| Microsoft.ApiManagement/service/openidConnectProviders | [listSecrets](/rest/api/apimanagement/current-ga/openid-connect-provider/list-secrets) | | Microsoft.ApiManagement/service/subscriptions | [listSecrets](/rest/api/apimanagement/current-ga/subscription/list-secrets) | | Microsoft.AppConfiguration/configurationStores | [ListKeys](/rest/api/appconfiguration/configurationstores/listkeys) |
-| Microsoft.AppPlatform/Spring | [listTestKeys](/rest/api/azurespringcloud/services/listtestkeys) |
+| Microsoft.AppPlatform/Spring | [listTestKeys](/rest/api/azurespringapps/services/list-test-keys) |
| Microsoft.Automation/automationAccounts | [listKeys](/rest/api/automation/keys/listbyautomationaccount) | | Microsoft.Batch/batchAccounts | [listKeys](/rest/api/batchmanagement/batchaccount/getkeys) | | Microsoft.BatchAI/workspaces/experiments/jobs | listoutputfiles |
cdn Cdn Create A Storage Account With Cdn https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cdn/cdn-create-a-storage-account-with-cdn.md
Previously updated : 04/30/2020 Last updated : 04/29/2022
A storage account gives access to Azure Storage services. The storage account re
To create a storage account, you must be either the service administrator or a coadministrator for the associated subscription.
-1. In the Azure portal, select **Create a resource** on the upper left. The **New** pane appears.
+1. In the Azure portal, select **Create a resource** on the upper left. The **Create a resource** pane appears.
-1. Search for **Storage account** and select **Storage account - blob, file, table, queue** from the drop-down list. Then select **Create**:
-
- ![Select storage resource](./media/cdn-create-a-storage-account-with-cdn/cdn-select-new-storage-account.png)
+1. Search for **Storage account** and select **Storage account** from the list. Then select **Create**:
+
+ :::image type="content" source="./media/cdn-create-a-storage-account-with-cdn/cdn-select-new-storage-account.png" alt-text="Screenshot of create a storage account.":::
1. In the **Create storage account pane**, enter the following details:
- | Setting | Value |
+ | Setting | Value |
| | |
- | Project details > Resource group | Select **Create new** and use the name *CDNQuickstart-rg*. You can also use an existing resource group if you prefer. |
- | Instance details > Storage account name | Enter a name for the account using 3-24 lowercase letters and numbers only. The name must be unique across Azure, and becomes the host name in the URL that's used to address blob, queue, or table resources for the subscription. To address a container resource in Blob storage, use a URI in the following format: http://*&lt;storageaccountname&gt;*.blob.core.windows.net/*&lt;container-name&gt;*.
- | Instance details > Location | Select an Azure region near you from the drop-down list. |
+ | Resource group | Select **Create new** and use the name *CDNQuickstart-rg*. You can also use an existing resource group if you prefer. |
+ | Storage account name | Enter a name for the account using 3-24 lowercase letters and numbers only. The name must be unique across Azure, and becomes the host name in the URL that's used to address blob, queue, or table resources for the subscription. To address a container resource in Blob storage, use a URI in the following format: http://*&lt;storageaccountname&gt;*.blob.core.windows.net/*&lt;container-name&gt;*.
+ | Region | Select an Azure region near you from the drop-down list. |
Leave all other details set to the defaults, then select **Review + create**.
To create a storage account, you must be either the service administrator or a c
1. On the page for your storage account, select **Blob service** > **Azure CDN** from the left menu. The **Azure CDN** page appears.
- ![Create CDN endpoint](./media/cdn-create-a-storage-account-with-cdn/cdn-storage-endpoint-configuration.png)
+ :::image type="content" source="./media/cdn-create-a-storage-account-with-cdn/cdn-storage-endpoint-configuration.png" alt-text="Screenshot of create a CDN endpoint.":::
1. In the **New endpoint** section, enter the following information: | Setting | Value | | -- | -- | | **CDN profile** | Select **Create new** and enter your profile name, for example, *cdn-profile-123*. A profile is a collection of endpoints. |
- | **Pricing tier** | Select one of the **Standard** options, such as **Standard Microsoft**. |
+ | **Pricing tier** | Select one of the **Standard** options, such as **Microsoft CDN (classic)**. |
| **CDN endpoint name** | Enter your endpoint hostname, such as *cdn-endpoint-123*. This name must be globally unique across Azure because it's to access your cached resources at the URL _&lt;endpoint-name&gt;_.azureedge.net. | | **Origin hostname** | By default, a new CDN endpoint uses the hostname of your storage account as the origin server. |
To create a storage account, you must be either the service administrator or a c
From the storage account **Azure CDN** page, select the CDN endpoint from the list to open the CDN endpoint configuration page.
-From this page, you can enable additional CDN features for your delivery, such as [compression](cdn-improve-performance.md), [query string caching](cdn-query-string.md), and [geo filtering](cdn-restrict-access-by-country-region.md).
+From this page, you can enable additional CDN features for your delivery, such as [compression](cdn-improve-performance.md), [query string caching](cdn-query-string.md), and [geo filtering](cdn-restrict-access-by-country-region.md).
## Enable SAS
In the preceding steps, you created a CDN profile and an endpoint in a resource
## Next steps > [!div class="nextstepaction"]
-> [Tutorial: Use CDN to serve static content from a web app](cdn-add-to-web-app.md)
+> [Tutorial: Use CDN to serve static content from a web app.](cdn-add-to-web-app.md)
cloud-services Cloud Services Guestos Msrc Releases https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cloud-services/cloud-services-guestos-msrc-releases.md
na Previously updated : 4/16/2022 Last updated : 4/30/2022
The following tables show the Microsoft Security Response Center (MSRC) updates
## April 2022 Guest OS
->[!NOTE]
-
->The April Guest OS is currently being rolled out to Cloud Service VMs that are configured for automatic updates. When the rollout is complete, this version will be made available for manual updates through the Azure portal and configuration files. The following patches are included in the April Guest OS. This list is subject to change.
- | Product Category | Parent KB Article | Vulnerability Description | Guest OS | Date First Introduced | | | | | | |
-| Rel 22-04 | [5012647] | Latest Cumulative Update(LCU) | 6.43 | Apr 12, 2022 |
-| Rel 22-04 | [5011486] | IE Cumulative Updates | 2.122, 3.109, 4.102 | Apr 12, 2022 |
-| Rel 22-04 | [5012604] | Latest Cumulative Update(LCU) | 7.11 | Apr 12, 2022 |
-| Rel 22-04 | [5012596] | Latest Cumulative Update(LCU) | 5.67 | Apr 12, 2022 |
-| Rel 22-04 | [5012138] | .NET Framework 3.5 Security and Quality Rollup | 2.122 | Apr 12, 2022 |
-| Rel 22-04 | [5012141] | .NET Framework 4.5.2 Security and Quality Rollup | 2.122 | Apr 12, 2022 |
-| Rel 22-04 | [5012139] | .NET Framework 3.5 Security and Quality Rollup | 4.102 | Apr 12, 2022 |
-| Rel 22-04 | [5012142] | .NET Framework 4.5.2 Security and Quality Rollup | 4.102 | Apr 12, 2022 |
-| Rel 22-04 | [5012136] | .NET Framework 3.5 Security and Quality Rollup | 3.109 | Apr 12, 2022 |
-| Rel 22-04 | [5012140] | . NET Framework 4.5.2 Security and Quality Rollup | 3.109 | Apr 12, 2022 |
-| Rel 22-04 | [5012128] | . NET Framework 3.5 and 4.7.2 Cumulative Update | 6.43 | Apr 12, 2022 |
-| Rel 22-04 | [5012123] | .NET Framework 4.8 Security and Quality Rollup | 7.11 | Apr 12, 2022 |
-| Rel 22-04 | [5012626] | Monthly Rollup | 2.122 | Apr 12, 2022 |
-| Rel 22-04 | [5012650] | Monthly Rollup | 3.109 | Apr 12, 2022 |
-| Rel 22-04 | [5012670] | Monthly Rollup | 4.102 | Apr 12, 2022 |
-| Rel 22-04 | [5013270] | Servicing Stack update | 3.109 | Apr 12, 2022 |
-| Rel 22-04 | [5012672] | Servicing Stack update | 4.102 | Apr 12, 2022 |
-| Rel 22-04 | [4578013] | Standalone Security Update | 4.102 | Aug 19, 2020 |
-| Rel 22-04 | [5011570] | Servicing Stack update | 5.67 | Mar 8, 2021 |
-| Rel 22-04 | [5011649] | Servicing Stack update | 2.122 | Mar 8, 2022 |
-| Rel 22-04 | [4494175] | Microcode | 5.67 | Sep 1, 2020 |
-| Rel 22-04 | [4494174] | Microcode | 6.43 | Sep 1, 2020 |
+| Rel 22-04 | [5012647] | Latest Cumulative Update(LCU) | [6.43] | Apr 12, 2022 |
+| Rel 22-04 | [5011486] | IE Cumulative Updates | [2.122], [3.109], [4.102] | Apr 12, 2022 |
+| Rel 22-04 | [5012604] | Latest Cumulative Update(LCU) | [7.11] | Apr 12, 2022 |
+| Rel 22-04 | [5012596] | Latest Cumulative Update(LCU) | [5.67] | Apr 12, 2022 |
+| Rel 22-04 | [5012138] | .NET Framework 3.5 Security and Quality Rollup | [2.122] | Apr 12, 2022 |
+| Rel 22-04 | [5012141] | .NET Framework 4.5.2 Security and Quality Rollup | [2.122] | Apr 12, 2022 |
+| Rel 22-04 | [5012139] | .NET Framework 3.5 Security and Quality Rollup | [4.102] | Apr 12, 2022 |
+| Rel 22-04 | [5012142] | .NET Framework 4.5.2 Security and Quality Rollup | [4.102] | Apr 12, 2022 |
+| Rel 22-04 | [5012136] | .NET Framework 3.5 Security and Quality Rollup | [3.109] | Apr 12, 2022 |
+| Rel 22-04 | [5012140] | . NET Framework 4.5.2 Security and Quality Rollup | [3.109] | Apr 12, 2022 |
+| Rel 22-04 | [5012128] | . NET Framework 3.5 and 4.7.2 Cumulative Update | [6.43] | Apr 12, 2022 |
+| Rel 22-04 | [5012123] | .NET Framework 4.8 Security and Quality Rollup | [7.11] | Apr 12, 2022 |
+| Rel 22-04 | [5012626] | Monthly Rollup | [2.122] | Apr 12, 2022 |
+| Rel 22-04 | [5012650] | Monthly Rollup | [3.109] | Apr 12, 2022 |
+| Rel 22-04 | [5012670] | Monthly Rollup | [4.102] | Apr 12, 2022 |
+| Rel 22-04 | [5013270] | Servicing Stack update | [3.109] | Apr 12, 2022 |
+| Rel 22-04 | [5012672] | Servicing Stack update | [4.102] | Apr 12, 2022 |
+| Rel 22-04 | [4578013] | Standalone Security Update | [4.102] | Aug 19, 2020 |
+| Rel 22-04 | [5011570] | Servicing Stack update | [5.67] | Mar 8, 2021 |
+| Rel 22-04 | [5011649] | Servicing Stack update | [2.122] | Mar 8, 2022 |
+| Rel 22-04 | [4494175] | Microcode | [5.67] | Sep 1, 2020 |
+| Rel 22-04 | [4494174] | Microcode | [6.43] | Sep 1, 2020 |
[5012647]: https://support.microsoft.com/kb/5012647 [5011486]: https://support.microsoft.com/kb/5011486
The following tables show the Microsoft Security Response Center (MSRC) updates
[5011649]: https://support.microsoft.com/kb/5011649 [4494175]: https://support.microsoft.com/kb/4494175 [4494174]: https://support.microsoft.com/kb/4494174
+[2.122]: ./cloud-services-guestos-update-matrix.md#family-2-releases
+[3.109]: ./cloud-services-guestos-update-matrix.md#family-3-releases
+[4.102]: ./cloud-services-guestos-update-matrix.md#family-4-releases
+[5.67]: ./cloud-services-guestos-update-matrix.md#family-5-releases
+[6.43]: ./cloud-services-guestos-update-matrix.md#family-6-releases
+[7.11]: ./cloud-services-guestos-update-matrix.md#family-7-releases
## March 2022 Guest OS
cloud-services Cloud Services Guestos Update Matrix https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cloud-services/cloud-services-guestos-update-matrix.md
na Previously updated : 3/19/2022 Last updated : 4/30/2022 # Azure Guest OS releases and SDK compatibility matrix
Unsure about how to update your Guest OS? Check [this][cloud updates] out.
## News updates
+###### **April 30, 2022**
+The April Guest OS has released.
###### **March 19, 2022** The March Guest OS has released.
The September Guest OS has released.
| Configuration string | Release date | Disable date | | | | |
+| WA-GUEST-OS-7.11_202204-01 | April 30, 2022 | Post 7.13 |
| WA-GUEST-OS-7.10_202203-01 | March 19, 2022 | Post 7.12 |
-| WA-GUEST-OS-7.9_202202-01 | March 2, 2022 | Post 7.11 |
+|~~WA-GUEST-OS-7.9_202202-01~~| March 2, 2022 | April 30, 2022 |
|~~WA-GUEST-OS-7.8_202201-02~~| February 11, 2022 | March 19, 2022 | |~~WA-GUEST-OS-7.6_202112-01~~| January 10, 2022 | March 2, 2022 | |~~WA-GUEST-OS-7.5_202111-01~~| November 19, 2021 | February 11, 2022 |
The September Guest OS has released.
| Configuration string | Release date | Disable date | | | | |
+| WA-GUEST-OS-6.43_202204-01 | April 30, 2022 | Post 6.45 |
| WA-GUEST-OS-6.42_202203-01 | March 19, 2022 | Post 6.44 |
-| WA-GUEST-OS-6.41_202202-01 | March 2, 2022 | Post 6.43 |
+|~~WA-GUEST-OS-6.41_202202-01~~| March 2, 2022 | April 30, 2022 |
|~~WA-GUEST-OS-6.40_202201-02~~| February 11, 2022 | March 19, 2022 | |~~WA-GUEST-OS-6.38_202112-01~~| January 10, 2022 | March 2, 2022 | |~~WA-GUEST-OS-6.37_202111-01~~| November 19, 2021 | February 11, 2022 |
The September Guest OS has released.
| Configuration string | Release date | Disable date | | | | |
+| WA-GUEST-OS-5.67_202204-01 | April 30, 2022 | Post 5.69 |
| WA-GUEST-OS-5.66_202203-01 | March 19, 2022 | Post 5.68 |
-| WA-GUEST-OS-5.65_202202-01 | March 2, 2022 | Post 5.67 |
+|~~WA-GUEST-OS-5.65_202202-01~~| March 2, 2022 | April 30, 2022 |
|~~WA-GUEST-OS-5.64_202201-02~~| February 11, 2022 | March 19, 2022 | |~~WA-GUEST-OS-5.62_202112-01~~| January 10, 2022 | March 2, 2022 | |~~WA-GUEST-OS-5.61_202111-01~~| November 19, 2021 | February 11, 2022 |
The September Guest OS has released.
| Configuration string | Release date | Disable date | | | | |
+| WA-GUEST-OS-4.102_202204-01 | April 30, 2022 | Post 4.104 |
| WA-GUEST-OS-4.101_202203-01 | March 19, 2022 | Post 4.103 |
-| WA-GUEST-OS-4.100_202202-01 | March 2, 2022 | Post 4.102 |
+|~~WA-GUEST-OS-4.100_202202-01~~| March 2, 2022 | April 30, 2022 |
|~~WA-GUEST-OS-4.99_202201-02~~| February 11 , 2022 | March 19, 2022 | |~~WA-GUEST-OS-4.97_202112-01~~| January 10 , 2022 | March 2, 2022 | |~~WA-GUEST-OS-4.96_202111-01~~| November 19, 2021 | February 11, 2022 |
The September Guest OS has released.
| Configuration string | Release date | Disable date | | | | |
+| WA-GUEST-OS-3.109_202204-01 | April 30, 2022 | Post 3.111 |
| WA-GUEST-OS-3.108_202203-01 | March 19, 2022 | Post 3.110 |
-| WA-GUEST-OS-3.107_202202-01 | March 2, 2022 | Post 3.109 |
+|~~WA-GUEST-OS-3.107_202202-01~~| March 2, 2022 | April 30, 2022 |
|~~WA-GUEST-OS-3.106_202201-02~~| February 11, 2022 | March 19, 2022 | |~~WA-GUEST-OS-3.104_202112-01~~| January 10, 2022 | March 2, 2022| |~~WA-GUEST-OS-3.103_202111-01~~| November 19, 2021 | February 11, 2022 |
The September Guest OS has released.
| Configuration string | Release date | Disable date | | | | |
+| WA-GUEST-OS-2.122_202204-01 | April 30, 2022 | Post 2.124 |
| WA-GUEST-OS-2.121_202203-01 | March 19, 2022 | Post 2.123 |
-| WA-GUEST-OS-2.120_202202-01 | March 2, 2022 | Post 2.122 |
+|~~WA-GUEST-OS-2.120_202202-01~~| March 2, 2022 | April 30, 2022 |
|~~WA-GUEST-OS-2.119_202201-02~~| February 11, 2022 | March 19, 2022 | |~~WA-GUEST-OS-2.117_202112-01~~| January 10, 2022 | March 2, 2022 | |~~WA-GUEST-OS-2.116_202111-01~~| November 19, 2021 | February 11, 2022 |
cognitive-services Get Started Speech Translation https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Speech-Service/get-started-speech-translation.md
keywords: speech translation
## Next steps
-* Use [codec-compressed audio formats](how-to-use-codec-compressed-audio-input-streams.md).
-* See the [quickstart samples](https://github.com/Azure-Samples/cognitive-services-speech-sdk/tree/master/quickstart) on GitHub.
+> [!div class="nextstepaction"]
+> [Learn about language identification](language-identification.md)
cognitive-services Language Identification https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cognitive-services/Speech-Service/language-identification.md
When prioritizing `Latency`, the Speech service returns one of the candidate lan
> [!NOTE] > You may see cases where an empty string will be returned instead of `Unknown`, due to Speech service inconsistency. > While this note is present, applications should check for both the `Unknown` and empty string case and treat them identically.+ ### Recognize once or continuous Language identification is completed with recognition objects and operations. You will make a request to the Speech service for recognition of audio.
You use standalone language identification when you only need to identify the la
> Standalone source language identification is only supported with the Speech SDKs for C#, C++, and Python. ::: zone pivot="programming-language-csharp"
+See more examples of standalone language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/csharp/sharedcontent/console/standalone_language_detection_samples.cs).
+ ### [Recognize once](#tab/once) :::code language="csharp" source="~/samples-cognitive-services-speech-sdk/samples/csharp/sharedcontent/console/standalone_language_detection_samples.cs" id="languageDetectionInAccuracyWithFile":::
You use standalone language identification when you only need to identify the la
-See more examples of standalone language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/csharp/sharedcontent/console/standalone_language_detection_samples.cs).
- ::: zone-end ::: zone pivot="programming-language-cpp"
+See more examples of standalone language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/cpp/windows/console/samples/standalone_language_detection_samples.cpp).
+ ### [Recognize once](#tab/once) :::code language="cpp" source="~/samples-cognitive-services-speech-sdk/samples/cpp/windows/console/samples/standalone_language_detection_samples.cpp" id="StandaloneLanguageDetectionWithMicrophone":::
See more examples of standalone language identification on [GitHub](https://gith
-See more examples of standalone language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/cpp/windows/console/samples/standalone_language_detection_samples.cpp).
- ::: zone-end ::: zone pivot="programming-language-python"
+See more examples of standalone language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/python/console/speech_language_detection_sample.py).
+ ### [Recognize once](#tab/once) :::code language="python" source="~/samples-cognitive-services-speech-sdk/samples/python/console/speech_language_detection_sample.py" id="SpeechLanguageDetectionWithFile":::
See more examples of standalone language identification on [GitHub](https://gith
-See more examples of standalone language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/python/console/speech_language_detection_sample.py).
- ::: zone-end ## Speech-to-text
You use Speech-to-text recognition when you need to identify the language in an
> [!NOTE] > Speech-to-text recognition with at-start language identification is supported with Speech SDKs in C#, C++, Python, Java, JavaScript, and Objective-C. Speech-to-text recognition with continuous language identification is only supported with Speech SDKs in C#, C++, and Python. > Currently for speech-to-text recognition with continuous language identification, you must create a SpeechConfig from the `wss://{region}.stt.speech.microsoft.com/speech/universal/v2` endpoint string, as shown in code examples. In a future SDK release you won't need to set it.+ ::: zone pivot="programming-language-csharp"
+See more examples of speech-to-text recognition with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/csharp/sharedcontent/console/translation_samples.cs).
+ ### [Recognize once](#tab/once) ```csharp
using (var audioInput = AudioConfig.FromWavFileInput(@"en-us_zh-cn.wav"))
} } ```-
-See more examples of speech-to-text recognition with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/csharp/sharedcontent/console/translation_samples.cs).
+ ::: zone-end ::: zone pivot="programming-language-cpp"
+See more examples of speech-to-text recognition with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/cpp/windows/console/samples/speech_recognition_samples.cpp).
+ ### [Recognize once](#tab/once) ```cpp
auto detectedLanguage = autoDetectSourceLanguageResult->Language;
:::code language="cpp" source="~/samples-cognitive-services-speech-sdk/samples/cpp/windows/console/samples/speech_recognition_samples.cpp" id="SpeechContinuousRecognitionAndLanguageIdWithMultiLingualFile":::
-See more examples of speech-to-text recognition with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/cpp/windows/console/samples/speech_recognition_samples.cpp).
- ::: zone-end ::: zone pivot="programming-language-java"
+See more examples of speech-to-text recognition with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/java/jre/console/src/com/microsoft/cognitiveservices/speech/samples/console/SpeechRecognitionSamples.java).
+ ```java AutoDetectSourceLanguageConfig autoDetectSourceLanguageConfig = AutoDetectSourceLanguageConfig.fromLanguages(Arrays.asList("en-US", "de-DE"));
autoDetectSourceLanguageConfig.close();
audioConfig.close(); result.close(); ```-
-See more examples of speech-to-text recognition with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/java/jre/console/src/com/microsoft/cognitiveservices/speech/samples/console/SpeechRecognitionSamples.java).
+ ::: zone-end ::: zone pivot="programming-language-python"
+See more examples of speech-to-text recognition with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/python/console/speech_sample.py).
+ ### [Recognize once](#tab/once) ```Python
while not done:
speech_recognizer.stop_continuous_recognition() ```
-See more examples of speech-to-text recognition with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/python/console/speech_sample.py).
- ::: zone-end ::: zone pivot="programming-language-objectivec"
You use Speech translation when you need to identify the language in an audio so
> Currently for speech translation with language identification, you must create a SpeechConfig from the `wss://{region}.stt.speech.microsoft.com/speech/universal/v2` endpoint string, as shown in code examples. In a future SDK release you won't need to set it. ::: zone pivot="programming-language-csharp"
+See more examples of speech translation with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/csharp/sharedcontent/console/translation_samples.cs).
+ ### [Recognize once](#tab/once) ```csharp
public static async Task MultiLingualTranslation()
} } ```-
-See more examples of speech translation with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/csharp/sharedcontent/console/translation_samples.cs).
+ ::: zone-end ::: zone pivot="programming-language-cpp"
+See more examples of speech translation with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/cpp/windows/console/samples/translation_samples.cpp).
+ ### [Recognize once](#tab/once) ```cpp
void MultiLingualTranslation()
recognizer->StopContinuousRecognitionAsync().get(); } ```-
-See more examples of speech translation with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/cpp/windows/console/samples/translation_samples.cpp).
+ ::: zone-end ::: zone pivot="programming-language-python"
+See more examples of speech translation with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/python/console/translation_sample.py).
+ ### [Recognize once](#tab/once) ```python
recognizer.stop_continuous_recognition()
-See more examples of speech translation with language identification on [GitHub](https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/python/console/translation_sample.py).
- ::: zone-end+
+## Next steps
+
+* [Captioning concepts](captioning-concepts.md)
cosmos-db Audit Restore Continuous https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/audit-restore-continuous.md
# Audit the point in time restore action for continuous backup mode in Azure Cosmos DB [!INCLUDE[appliesto-all-apis-except-cassandra](includes/appliesto-all-apis-except-cassandra.md)]
-Azure Cosmos DB provides you the list of all the point in time restores for continuous mode that were performed on a Cosmos DB account using [Activity Logs](/azure-monitor/essentials/activity-log). Activity logs can be viewed for any Cosmos DB account from the **Activity Logs** page in the Azure portal. The Activity Log shows all the operations that were triggered on the specific account. When a point in time restore is triggered, it shows up as `Restore Database Account` operation on the source account as well as the target account. The Activity Log for the source account can be used to audit restore events, and the activity logs on the target account can be used to get the updates about the progress of the restore.
+Azure Cosmos DB provides you the list of all the point in time restores for continuous mode that were performed on a Cosmos DB account using [Activity Logs](/azure/azure-monitor/essentials/activity-log). Activity logs can be viewed for any Cosmos DB account from the **Activity Logs** page in the Azure portal. The Activity Log shows all the operations that were triggered on the specific account. When a point in time restore is triggered, it shows up as `Restore Database Account` operation on the source account as well as the target account. The Activity Log for the source account can be used to audit restore events, and the activity logs on the target account can be used to get the updates about the progress of the restore.
## Audit the restores that were triggered on a live database account
For the accounts that were already deleted, there would not be any database acco
:::image type="content" source="media/restore-account-continuous-backup/continuous-backup-restore-details-deleted-json.png" alt-text="Azure Cosmos DB restore audit activity log." lightbox="media/restore-account-continuous-backup/continuous-backup-restore-details-deleted-json.png":::
-The activity logs can also be accessed using Azure CLI or Azure PowerShell. For more information on activity logs, review [Azure Activity log - Azure Monitor](/azure-monitor/essentials/activity-log).
+The activity logs can also be accessed using Azure CLI or Azure PowerShell. For more information on activity logs, review [Azure Activity log - Azure Monitor](/azure/azure-monitor/essentials/activity-log).
## Track the progress of the restore operation
cosmos-db How To Setup Cmk https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/how-to-setup-cmk.md
description: Learn how to configure customer-managed keys for your Azure Cosmos
Previously updated : 02/25/2022 Last updated : 04/29/2022 ms.devlang: azurecli
You must store customer-managed keys in [Azure Key Vault](../key-vault/general/o
## Configure your Azure Key Vault instance > [!IMPORTANT]
-> Your Azure Key Vault instance must be accessible through public network access. An instance that is only accessible through [private endpoints](../key-vault/general/private-link-service.md) cannot be used to host your customer-managed keys.
+> Your Azure Key Vault instance must be accessible through public network access or allow trusted Microsoft services to bypass its firewall. An instance that is exclusively accessible through [private endpoints](../key-vault/general/private-link-service.md) cannot be used to host your customer-managed keys.
Using customer-managed keys with Azure Cosmos DB requires you to set two properties on the Azure Key Vault instance that you plan to use to host your encryption keys: **Soft Delete** and **Purge Protection**.
When you create a new Azure Cosmos account through an Azure Resource Manager tem
} } ```
-
+
+## Customer-managed keys and double encryption
+
+When using customer-managed keys, the data you store in your Azure Cosmos DB account ends up being encrypted twice:
+
+- Once through the default encryption performed with Microsoft-managed keys.
+- Once through the additional encryption performed with customer-managed keys.
+
+Note that **this only applies to the main Azure Cosmos DB transactional storage**. Some features involve internal replication of your data to a second tier of storage where double encryption isn't provided, even when using customer-managed keys. These features include:
+
+- [Synapse Link](./synapse-link.md)
+- [Continuous backups with point-in-time restore](./continuous-backup-restore-introduction.md)
+
## Key rotation Rotating the customer-managed key used by your Azure Cosmos account can be done in two ways.
cosmos-db How To Create Container Mongodb https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/mongodb/how-to-create-container-mongodb.md
Title: Create a container in Azure Cosmos DB API for MongoDB
-description: Learn how to create a container in Azure Cosmos DB API for MongoDB by using Azure portal, .NET, Java, Node.js, and other SDKs.
+ Title: Create a collection in Azure Cosmos DB API for MongoDB
+description: Learn how to create a collection in Azure Cosmos DB API for MongoDB by using Azure portal, .NET, Java, Node.js, and other SDKs.
Previously updated : 08/26/2021 Last updated : 04/07/2022 ms.devlang: csharp
-# Create a container in Azure Cosmos DB API for MongoDB
+# Create a collection in Azure Cosmos DB API for MongoDB
[!INCLUDE[appliesto-mongodb-api](../includes/appliesto-mongodb-api.md)]
-This article explains the different ways to create a container in Azure Cosmos DB API for MongoDB. It shows how to create a container using Azure portal, Azure CLI, PowerShell, or supported SDKs. This article demonstrates how to create a container, specify the partition key, and provision throughput.
+This article explains the different ways to create a collection in Azure Cosmos DB API for MongoDB. It shows how to create a collection using Azure portal, Azure CLI, PowerShell, or supported SDKs. This article demonstrates how to create a collection, specify the partition key, and provision throughput.
-This article explains the different ways to create a container in Azure Cosmos DB API for MongoDB. If you are using a different API, see [SQL API](../how-to-create-container.md), [Cassandra API](../cassandr) articles to create the container.
+>[!NOTE]
+> **Containers** and **collections** are similar to a table in a relational database. We refer to **containers** in the Cosmos DB SQL API and throughout the Azure portal, while we use **collections** in the context of the Cosmos DB MongoDB API to match the terminology used in Mongo DB.
+
+This article explains the different ways to create a collection in Azure Cosmos DB API for MongoDB. If you are using a different API, see [SQL API](../how-to-create-container.md), [Cassandra API](../cassandr) articles to create the collection.
> [!NOTE]
-> When creating containers, make sure you donΓÇÖt create two containers with the same name but different casing. ThatΓÇÖs because some parts of the Azure platform are not case-sensitive, and this can result in confusion/collision of telemetry and actions on containers with such names.
+> When creating collections, make sure you donΓÇÖt create two collections with the same name but different casing. ThatΓÇÖs because some parts of the Azure platform are not case-sensitive, and this can result in confusion/collision of telemetry and actions on collections with such names.
## <a id="portal-mongodb"></a>Create using Azure portal
If you encounter timeout exception when creating a collection, do a read operati
[Create a collection for Azure Cosmos DB for MongoDB API with PowerShell](../scripts/powershell/mongodb/create.md). For a listing of all PowerShell samples across all Azure Cosmos DB APIs see, [PowerShell Samples](powershell-samples.md)
-## Create a container using Azure Resource Manager templates
+## Create a collection using Azure Resource Manager templates
[Create a collection for Azure Cosmos DB for MongoDB API with Resource Manager template](../manage-with-templates.md#azure-cosmos-account-with-standard-provisioned-throughput).
If you encounter timeout exception when creating a collection, do a read operati
* [Work with Azure Cosmos account](../account-databases-containers-items.md) * Trying to do capacity planning for a migration to Azure Cosmos DB? You can use information about your existing database cluster for capacity planning. * If all you know is the number of vcores and servers in your existing database cluster, read about [estimating request units using vCores or vCPUs](../convert-vcore-to-request-unit.md)
- * If you know typical request rates for your current database workload, read about [estimating request units using Azure Cosmos DB capacity planner](estimate-ru-capacity-planner.md)
+ * If you know typical request rates for your current database workload, read about [estimating request units using Azure Cosmos DB capacity planner](estimate-ru-capacity-planner.md)
cosmos-db Sql Query Is Number https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/cosmos-db/sql/sql-query-is-number.md
Title: IS_NUMBER in Azure Cosmos DB query language description: Learn about SQL system function IS_NUMBER in Azure Cosmos DB.-+ Last updated 09/13/2019-+ + # IS_NUMBER (Azure Cosmos DB) [!INCLUDE[appliesto-sql-api](../includes/appliesto-sql-api.md)]
- Returns a Boolean value indicating if the type of the specified expression is a number.
+Returns a Boolean value indicating if the type of the specified expression is a number.
## Syntax
IS_NUMBER(<expr>)
## Arguments *expr*
- Is any expression.
+ Is any expression.
## Return types
- Returns a Boolean expression.
+Returns a Boolean expression.
## Examples
- The following example checks objects of JSON Boolean, number, string, null, object, array, and undefined types using the `IS_NUMBER` function.
+The following example checks objects of JSON Boolean, number, string, null, object, array, and undefined types using the `IS_NUMBER` function.
```sql SELECT
- IS_NUMBER(true) AS isNum1,
- IS_NUMBER(1) AS isNum2,
- IS_NUMBER("value") AS isNum3,
- IS_NUMBER(null) AS isNum4,
- IS_NUMBER({prop: "value"}) AS isNum5,
- IS_NUMBER([1, 2, 3]) AS isNum6,
- IS_NUMBER({prop: "value"}.prop2) AS isNum7
+ IS_NUMBER(true) AS isBooleanANumber,
+ IS_NUMBER(1) AS isNumberANumber,
+ IS_NUMBER("value") AS isTextStringANumber,
+ IS_NUMBER("1") AS isNumberStringANumber,
+ IS_NUMBER(null) AS isNullANumber,
+ IS_NUMBER({prop: "value"}) AS isObjectANumber,
+ IS_NUMBER([1, 2, 3]) AS isArrayANumber,
+ IS_NUMBER({stringProp: "value"}.stringProp) AS isObjectStringPropertyANumber,
+ IS_NUMBER({numberProp: 1}.numberProp) AS isObjectNumberPropertyANumber
```
-
- Here is the result set.
+
+Here's the result set.
```json
-[{"isNum1":false,"isNum2":true,"isNum3":false,"isNum4":false,"isNum5":false,"isNum6":false,"isNum7":false}]
+[
+ {
+ "isBooleanANumber": false,
+ "isNumberANumber": true,
+ "isTextStringANumber": false,
+ "isNumberStringANumber": false,
+ "isNullANumber": false,
+ "isObjectANumber": false,
+ "isArrayANumber": false,
+ "isObjectStringPropertyANumber": false,
+ "isObjectNumberPropertyANumber": true
+ }
+]
``` ## Remarks
data-factory Quickstart Create Data Factory Python https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/data-factory/quickstart-create-data-factory-python.md
Pipelines can ingest data from disparate data stores. Pipelines process or trans
``` > [!NOTE] > The "azure-identity" package might have conflicts with "azure-cli" on some common dependencies. If you meet any authentication issue, remove "azure-cli" and its dependencies, or use a clean machine without installing "azure-cli" package to make it work.
- > For Sovereign clouds, you must use the appropriate cloud-specific constants. Please refer to [Connect to all regions using Azure libraries for Python Multi-cloud | Microsoft Docs for instructions to connect with Python in Sovereign clouds.](/azure/developer/python/azure-sdk-sovereign-domain)
+ > For Sovereign clouds, you must use the appropriate cloud-specific constants. Please refer to [Connect to all regions using Azure libraries for Python Multi-cloud | Microsoft Docs for instructions to connect with Python in Sovereign clouds.](/azure/developer/python/sdk/azure-sdk-sovereign-domain)
## Create a data factory client
data-factory Whats New https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/data-factory/whats-new.md
The Azure Data Factory service is improved on an ongoing basis. To stay up to da
This page is updated monthly, so revisit it regularly.
+## April 2022
+<br>
+<table>
+<tr><td><b>Service Category</b></td><td><b>Service improvements</b></td><td><b>Details</b></td></tr>
+
+<tr><td rowspan=3><b>Data Flow</b></td><td>Data Preview and Debug Improvements in Mapping Data Flows</td><td>Debug sessions using the AutoResolve Azure IR will now startup in under 10 seconds. New updates to the data preview panel in mapping data flows: You can now sort the rows inside the data preview view by clicking on column headers, move columns around interactively, save the data preview results as a CSV using Export CSV.<br><a href="https://techcommunity.microsoft.com/t5/azure-data-factory-blog/data-preview-and-debug-improvements-in-mapping-data-flows/ba-p/3268254">Learn more</a></td></tr>
+
+<tr><td>Dataverse Connector is available for Mapping data flows</td><td>Dataverse Connector is available as source and sink for Mapping data flows.<br><a href="connector-dynamics-crm-office-365.md">Learn more</a></td></tr>
+
+<tr><td>Support for user db schemas for staging with the Azure Synapse and PostgreSQL connectors in data flow sink</td><td>Data flow sink now supports using a user db schema for staging in both the Azure Synapse and PostgreSQL connectors.<br><a href="https://techcommunity.microsoft.com/t5/azure-data-factory-blog/data-flow-sink-supports-user-db-schema-for-staging-in-azure/ba-p/3299210">Learn more</a></td></tr>
+
+<tr><td><b>Monitoring</b></td><td>Multiple updates to ADF monitoring experiences</td><td>New updates to the monitoring experience in Azure Data Factory including the ability to export results to a CSV, clear all filters, open a run in a new tab, and improved caching of columns and results.<br><a href="https://techcommunity.microsoft.com/t5/azure-data-factory-blog/adf-monitoring-improvements/ba-p/3295531">Learn more</a></td></tr>
+
+<tr><td><b>Orchestration</b></td><td>Azure Functions available in ADF managed virtual network</td><td>Now managed private endpoints for Azure Functions are available in Azure Data Factory managed virtual network. So you can leverage private link and secure the communications to Azure Functions during the orchestration.<br><a href="https://techcommunity.microsoft.com/t5/azure-data-factory-blog/azure-functions-available-in-adf-managed-virtual-network/ba-p/3298383">Learn more</a></td></tr>
+
+<tr><td><b>User Interface</b></td><td>New Regional format support</td><td>Choose your language and the regional format that will influence how data such as dates and times appear in the Azure Data Factory Studio monitoring. These language and regional settings affect only the Azure Data Factory Studio user interface and do not change/modify your actual data.</td></tr>
+
+</table>
+ ## March 2022 <br> <table>
defender-for-iot How To Manage Sensors From The On Premises Management Console https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/defender-for-iot/organizations/how-to-manage-sensors-from-the-on-premises-management-console.md
Title: Manage sensors from the on-premises management console description: Learn how to manage sensors from the management console, including updating sensor versions, pushing system settings to sensors, managing certificates, and enabling and disabling engines on sensors. Previously updated : 03/20/2022 Last updated : 04/28/2022
To restore by using the CLI:
1. In Defender for IoT, make a directory for the backups:
- `sudo mkdir /<backup_folder_name_on_server>`
-
- `sudo chmod 777 /<backup_folder_name_on_server>/`
+ ```bash
+ sudo mkdir /<backup_folder_name_on_server>
+
+ sudo chmod 777 /<backup_folder_name_on_server>/
+ ```
1. Edit fstab:ΓÇ»
- `sudo nano /etc/fstab`
+ ```bash
+ sudo nano /etc/fstab
- `add - //<server_IP>/<folder_path> /<backup_folder_name_on_cyberx_server> cifs rw,credentials=/etc/samba/user,vers=3.0,uid=cyberx,gid=cyberx,file_mode=0777,dir_mode=0777 0 0`
+ add - //<server_IP>/<folder_path> /<backup_folder_name_on_cyberx_server> cifs rw,credentials=/etc/samba/user,vers=3.0,uid=cyberx,gid=cyberx,file_mode=0777,dir_mode=0777 0 0
+ ```
+
1. Edit or create credentials to share. These are the credentials for the SMB server:
- `sudo nano /etc/samba/user`
+ ```bash
+ sudo nano /etc/samba/user
+ ```
+
1. Add:ΓÇ»
- `username=<user name>`
+ ```bash
+ username=<user name>
- `password=<password>`
+ password=<password>
+ ```
+
1. Mount the directory:
- `sudo mount -a`
+ ```bash
+ sudo mount -a
+ ```
+
1. Configure a backup directory to the shared folder on the Defender for IoT sensor:ΓÇ»
- `sudo nano /var/cyberx/properties/backup.properties`
+ ```bash
+ sudo nano /var/cyberx/properties/backup.properties
+ ```
+
1. Set `Backup.shared_location` to `<backup_folder_name_on_cyberx_server>`.
expressroute About Fastpath https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/expressroute/about-fastpath.md
While FastPath supports most configurations, it doesn't support the following fe
* Basic Load Balancer: If you deploy a Basic internal load balancer in your virtual network or the Azure PaaS service you deploy in your virtual network uses a Basic internal load balancer, the network traffic from your on-premises network to the virtual IPs hosted on the Basic load balancer will be sent to the virtual network gateway. The solution is to upgrade the Basic load balancer to a [Standard load balancer](../load-balancer/load-balancer-overview.md).
-* Private Link: If you connect to a [private endpoint](../private-link/private-link-overview.md) in your virtual network from your on-premises network, the connection will go through the virtual network gateway.
+* Private Link: If you connect to a [private endpoint](../private-link/private-link-overview.md) in your virtual network from your on-premises network, over a non-100Gbps ExpressRoute Direct circuit, the connection will go through the virtual network gateway. FastPath Connectivity to a private endpoint over a 100Gb ExpressRoute Direct circuit is supported.
### IP address limits
The following FastPath features are in Public preview:
**VNet Peering** - FastPath will send traffic directly to any VM deployed in a virtual network peered to the one connected to ExpressRoute, bypassing the ExpressRoute virtual network gateway.
-**Private Link** - Private Link traffic sent over ExpressRoute FastPath will bypass the ExpressRoute virtual network gateway in the data path.
+**Private Link Connectivity for 10Gbps ExpressRoute Direct Connectivity** - Private Link traffic sent over ExpressRoute FastPath will bypass the ExpressRoute virtual network gateway in the data path.
This preview is available in the following Azure Regions. - Australia East - East Asia
expressroute Expressroute Howto Linkvnet Arm https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/expressroute/expressroute-howto-linkvnet-arm.md
$connection.ExpressRouteGatewayBypass = $True
Set-AzVirtualNetworkGatewayConnection -VirtualNetworkGatewayConnection $connection ```
+### FastPath and Private Link for 100Gbps ExpressRoute Direct
+
+With FastPath and Private Link, Private Link traffic sent over ExpressRoute bypassess the ExpressRoute virtual network gateway in the data path. This is supported for connections associated to 100Gb ExpressRoute Direct circuits. To enable this, follow the below guidance:
+1. Send an email to **ERFastPathPL@microsoft.com**, providing the following information:
+* Azure Subscription ID
+* Virtual Network (Vnet) Resource ID
+* Azure Region where the Private Endpoint/Private Link service is deployed
+
+2. Once you receive a confirmation from Step 1, run the following Azure PowerShell command in the target Azure subscription.
+ ```azurepowershell-interactive
+Register-AzProviderFeature -FeatureName ExpressRoutePrivateEndpointGatewayBypass -ProviderNamespace Microsoft.Network
+```
+3. Disable and Enable FastPath on the target connection(s) to enables the changes. Once this step is complete. 100Gb Private Link traffic over ExpressRoute will bypass the ExpressRoute Virtual Network Gateway in the data path.
++ > [!NOTE] > You can use [Connection Monitor](how-to-configure-connection-monitor.md) to verify that your traffic is reaching the destination using FastPath. >
To enroll in this preview, run the follow Azure PowerShell command in the target
Register-AzProviderFeature -FeatureName ExpressRouteVnetPeeringGatewayBypass -ProviderNamespace Microsoft.Network ```
-### FastPath and Private Link
+### FastPath and Private Link for 10Gbps ExpressRoute Direct
-With FastPath and Private Link, Private Link traffic sent over ExpressRoute bypassess the ExpressRoute virtual network gateway in the data path.
+With FastPath and Private Link, Private Link traffic sent over ExpressRoute bypassess the ExpressRoute virtual network gateway in the data path. This preview supports connections associated to 10Gbps ExpressRoute Direct circuits. This preview doesn't support ExpressRoute circuits managed by an ExpressRoute partner.
To enroll in this preview, run the following Azure PowerShell command in the target Azure subscription:
frontdoor Custom Domain https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/frontdoor/scripts/custom-domain.md
+
+ Title: "Azure CLI example: Deploy custom domain in Azure Front Door"
+description: Use this Azure CLI example script to deploy a Custom Domain name and TLS certificate on an Azure Front Door front-end.
+++
+ms.devlang: azurecli
+++ Last updated : 04/27/2022 ++
+# Azure Front Door: Deploy custom domain
+
+This Azure CLI script example deploys a custom domain name and TLS certificate on an Azure Front Door front-end. This script demonstrates fully automated provisioning of Azure Front Door with a custom domain name (hosted by Azure DNS) and TLS cert.
+
+> [!IMPORTANT]
+> This script requires that an Azure DNS public zone already exists for domain name. For a tutorial, see [Host your domain in Azure DNS](../../dns/dns-delegate-domain-azure-dns.md).
+++
+## Sample script
++
+### Getting started
+
+The script will:
+
+1. Create a resource group
+1. Create a storage account to host a SPA
+1. Enable SPA hosting on storage account
+1. Upload a "Hello world!" `https://docsupdatetracker.net/index.html` file
+1. Create a Front Door profile
+1. Create a DNS alias for the Apex that resolves to the Front Door
+1. Create a CNAME for the `adverify` hostname
+1. Create a Front Door front-end endpoint for the custom domain
+1. Add route from custom domain frontend to SPA origin
+1. Add a routing rule to redirect HTTP -> HTTPS
+1. Enable HTTPS with Front Door managed cert
+
+### Run the script
+
+To run this script, copy the following code to a .sh file, change the hardcoded variables to your domain values, and then execute the following command to pass these variables into the script
+
+```bash
+AZURE_DNS_ZONE_NAME=www.contoso.com AZURE_DNS_ZONE_RESOURCE_GROUP=contoso-rg ./deploy-custom-apex-domain.sh
+```
++
+## Clean up resources
++
+```azurecli
+az group delete --name $resourceGroup
+```
+
+## Sample reference
+
+This script uses the following commands. Each command in the table links to command-specific documentation.
+
+| Command | Description |
+|||
+| [az group create](/cli/azure/group#az-group-create) | Creates a resource group in which all resources are stored.. |
+| [az storage account create](/cli/azure/storage/account) | Creates an Azure Storage account in the specified resource group. |
+| [az storage blob service-properties update](/cli/azure/storage/blob/service-properties#az-storage-blob-service-properties-update) | Update storage blob service properties. |
+| [az storage blob upload](/cli/azure/storage/blob#az-storage-blob-update) | Sets system properties on the blob. |
+| [az storage account show](/cli/azure/storage/account#az-storage-account-show) | Show storage account properties.|
+| [az network front-door create](/cli/azure/network/front-door#az-network-front-door-create) | Create a Front Door.|
+| [az network dns record-set](/cli/azure/network/dns/record-set) | Manage DNS records and record sets.|
+| [az network front-door](/cli/azure/network/front-door) | Manage Front Doors.|
+
+## Next steps
+
+For more information on Azure CLI, see [Azure CLI documentation](/cli/azure).
logic-apps Workflow Definition Language Functions Reference https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/logic-apps/workflow-definition-language-functions-reference.md
To work with strings, you can use these string functions and also some [collecti
| [formatNumber](../logic-apps/workflow-definition-language-functions-reference.md#formatNumber) | Return a number as a string based on the specified format | | [guid](../logic-apps/workflow-definition-language-functions-reference.md#guid) | Generate a globally unique identifier (GUID) as a string. | | [indexOf](../logic-apps/workflow-definition-language-functions-reference.md#indexof) | Return the starting position for a substring. |
+| [isInt](../logic-apps/workflow-definition-language-functions-reference.md#isInt) | Return a boolean indicating whether the string is an integer. |
| [lastIndexOf](../logic-apps/workflow-definition-language-functions-reference.md#lastindexof) | Return the starting position for the last occurrence of a substring. | | [length](../logic-apps/workflow-definition-language-functions-reference.md#length) | Return the number of items in a string or array. | | [nthIndexOf](../logic-apps/workflow-definition-language-functions-reference.md#nthIndexOf) | Return the starting position or index value where the *n*th occurrence of a substring appears in a string. |
int('10')
And returns this result: `10`
+<a name="isInt"></a>
+
+### isInt
+
+Return a boolean indicating whether the string is an integer.
+
+```
+isInt('<string>')
+```
+
+| Parameter | Required | Type | Description |
+| | -- | - | -- |
+| <*string*> | Yes | String | The string to examine |
+|||||
+
+| Return value | Type | Description |
+| | - | -- |
+| <*boolean-result*> | Boolean | A boolean indicating whether the string is an integer |
+
+*Example*
+
+This example tests a string that represents an integer:
+
+```
+isInt('10')
+```
+
+And returns this result: `true`
+ <a name="item"></a> ### item
Here's the result: `Paris`
## Next steps
-Learn about the [Workflow Definition Language](../logic-apps/logic-apps-workflow-definition-language.md)
+Learn about the [Workflow Definition Language](../logic-apps/logic-apps-workflow-definition-language.md)
managed-grafana Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/managed-grafana/overview.md
Azure Managed Grafana is a data visualization platform built on top of the Grafa
Azure Managed Grafana is optimized for the Azure environment. It works seamlessly with many Azure services. Specifically, for the current preview, it provides with the following integration features:
-* Built-in support for Azure Monitor and Azure Data Explorer
+* Built-in support for [Azure Monitor](/azure/azure-monitor/) and [Azure Data Explorer](/azure/data-explorer/)
* User authentication and access control using Azure Active Directory identities * Direct import of existing charts from Azure portal
postgresql Howto Build Scalable Apps Classify https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/postgresql/hyperscale/howto-build-scalable-apps-classify.md
+
+ Title: Classify application workload - Hyperscale (Citus) - Azure Database for PostgreSQL
+description: Classify workload for scalable application
+++++ Last updated : 04/28/2022++
+# Classify application workload
+
+Here are common characteristics of the workloads that are the best fit for
+Hyperscale (Citus).
+
+## Prerequisites
+
+This article assumes you know the [fundamental concepts for
+scaling](howto-build-scalable-apps-concepts.md). If you haven't read about
+them, take a moment to do so.
+
+## Characteristics of multi-tenant SaaS
+
+* Tenants see their own data; they can't see other tenants' data.
+* Most B2B SaaS apps are multi-tenant. Examples include Salesforce or Shopify.
+* In most B2B SaaS apps, there are hundreds to tens of thousands of tenants, and
+ more tenants keep joining.
+* Multi-tenant SaaS apps are primarily operational/transactional, with single
+ digit millisecond latency requirements for their database queries.
+* These apps have a classic relational data model, and are built using ORMs ΓÇô
+ like RoR, Hibernate, Django etc.
+ <br><br>
+ > [!VIDEO https://www.youtube.com/embed/7gAW08du6kk]
+
+## Characteristics of real-time operational analytics
+
+* These apps have a customer/user facing interactive analytics dashboard, with
+ a subsecond query latency requirement.
+* High concurrency required - at least 20 users.
+* Analyzes data that's fresh, within the last one second to few minutes.
+* Most have time series data such as events, logs, etc.
+* Common data models in these apps include:
+ * Star Schema - few large/fact tables, the rest being small/dimension tables
+ * Mostly fewer than 20 major tables
+ <br><br>
+ > [!VIDEO https://www.youtube.com/embed/xGWVVTva434]
+
+## Characteristics of high-throughput transactional
+
+* Run NoSQL/document style workloads, but require PostgreSQL features such as
+ transactions, foreign/primary keys, triggers, extension like PostGIS, etc.
+* The workload is based on a single key. It has CRUD and lookups based on that
+ key.
+* These apps have high throughput requirements: thousands to hundreds of thousands of
+ TPS.
+* Query latency in single-digit milliseconds, with a high concurrency
+ requirement.
+* Time series data, such as internet of things.
+ <br><br>
+ > [!VIDEO https://www.youtube.com/embed/A9q7w96yO_E]
+
+## Next steps
+
+Choose whichever fits your application the best:
+
+> [!div class="nextstepaction"]
+> [Model multi-tenant SaaS app >](howto-build-scalable-apps-model-multi-tenant.md)
+
+> [!div class="nextstepaction"]
+> [Model real-time analytics app](howto-build-scalable-apps-model-real-time.md)
+
+> [!div class="nextstepaction"]
+> [Model high-throughput app](howto-build-scalable-apps-model-high-throughput.md)
postgresql Howto Build Scalable Apps Concepts https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/postgresql/hyperscale/howto-build-scalable-apps-concepts.md
+
+ Title: Fundamental concepts for scaling - Hyperscale (Citus) - Azure Database for PostgreSQL
+description: Ideas you need to know to build relational apps that scale
+++++ Last updated : 04/28/2022++
+# Fundamental concepts for scaling
+
+Before we investigate the steps of building a new app, it's helpful to see a
+quick overview of the terms and concepts involved.
+
+## Architectural overview
+
+Hyperscale (Citus) gives you the power to distribute tables across multiple
+machines in a server group and transparently query them the same you query
+plain PostgreSQL:
+
+![Diagram of the coordinator node sharding a table onto worker nodes.](../media/howto-hyperscale-build-scalable-apps/architecture.png)
+
+In the Hyperscale (Citus) architecture, there are multiple kinds of nodes:
+
+* The **coordinator** node stores distributed table metadata and is responsible
+ for distributed planning.
+* By contrast, the **worker** nodes store the actual data and do the computation.
+* Both the coordinator and workers are plain PostgreSQL databases, with the
+ `citus` extension loaded.
+
+To distribute a normal PostgreSQL table, like `campaigns` in the diagram above,
+run a command called `create_distributed_table()`. Once you run this
+command, Hyperscale (Citus) transparently creates shards for the table across
+worker nodes. In the diagram, shards are represented as blue boxes.
+
+> [!NOTE]
+>
+> On the basic tier, shards of distributed tables are on the coordinator node,
+> not worker nodes.
+
+Shards are plain (but specially named) PostgreSQL tables that hold slices of
+your data. In our example, because we distributed `campaigns` by `company_id`,
+the shards hold campaigns, where the campaigns of different companies are
+assigned to different shards.
+
+## Distribution column (also known as shard key)
+
+`create_distributed_table()` is the magic function that Hyperscale (Citus)
+provides to distribute tables and use resources across multiple machines.
+
+```postgresql
+SELECT create_distributed_table(
+ 'table_name',
+ 'distribution_column');
+```
+
+The second argument above picks a column from the table as a **distribution
+column**. It can be any column with a native PostgreSQL type (with integer and
+text being most common). The value of the distribution column determines which
+rows go into which shards, which is why the distribution column is also called
+the **shard key**.
+
+Hyperscale (Citus) decides how to run queries based on their use of the shard
+key:
+
+| Query involves | Where it runs |
+|-||
+| just one shard key | on the worker node that holds its shard |
+| multiple shard keys | parallelized across multiple nodes |
+
+The choice of shard key dictates the performance and scalability of your
+applications.
+
+* Uneven data distribution per shard keys (also known as *data skew*) isn't optimal
+ for performance. For example, donΓÇÖt choose a column for which a single value
+ represents 50% of data.
+* Shard keys with low cardinality can affect scalability. You can use only as
+ many shards as there are distinct key values. Choose a key with cardinality
+ in the hundreds to thousands.
+* Joining two large tables with different shard keys can be slow. Choose a
+ common shard key across large tables. Learn more in
+ [colocation](#colocation).
+
+## Colocation
+
+Another concept closely related to shard key is *colocation*. Tables sharded by
+the same distribution column values are colocated - The shards of colocated
+tables are stored together on the same workers.
+
+Below are two tables sharded by the same key, `site_id`. They're colocated.
+
+![Diagram of tables http_request and http_request_1min colocated by site_id.](../media/howto-hyperscale-build-scalable-apps/colocation.png)
+
+Hyperscale (Citus) ensures that rows with a matching `site_id` value in both
+tables are stored on the same worker node. You can see that, for both tables,
+rows with `site_id=1` are stored on worker 1. Similarly for other site IDs.
+
+Colocation helps optimize JOINs across these tables. If you join the two tables
+on `site_id`, Hyperscale (Citus) can perform the join locally on worker nodes
+without shuffling data between nodes.
+
+## Next steps
+
+> [!div class="nextstepaction"]
+> [Classify application workload >](howto-build-scalable-apps-classify.md)
postgresql Howto Build Scalable Apps Model High Throughput https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/postgresql/hyperscale/howto-build-scalable-apps-model-high-throughput.md
+
+ Title: Model high throughput apps - Hyperscale (Citus) - Azure Database for PostgreSQL
+description: Techniques for scalable high-throughput transactional apps
+++++ Last updated : 04/28/2022++
+# Model high-throughput transactional apps
+
+## Common filter as shard key
+
+To pick the shard key for a high-throughput transactional (HTAP) application,
+follow these guidelines:
+
+* Choose a column that is used for point lookups and is present in most
+ create, read, update, and delete operations.
+* Choose a column that is a natural dimension in the data, or a central piece
+ of the application. For example:
+ * In an IOT workload, `device_id` is a good distribution column.
+
+The choice of a good shard key helps optimize network hops, while taking
+advantage of memory and compute to achieve millisecond latency.
+
+## Optimal data model for high-throughput apps
+
+Below is an example of a sample data-model for an IoT app that captures
+telemetry (time series data) from devices. There are two tables for capturing
+telemetry: `devices` and `events`. There could be other tables, but they're not
+covered in this example.
+
+![Diagram of events and devices tables, and partitions of events.](../media/howto-hyperscale-build-scalable-apps/high-throughput-data-model.png)
+
+When building a high-throughput app, keep some optimization in mind.
+
+* Distribute large tables on a common column that is central piece of the app,
+ and the column that your app mostly queries. In the above example of an IOT
+ app, `device_id` is that column, and it co-locates the events and devices
+ tables.
+* The rest of the small tables can be reference tables.
+* As IOT apps have a time dimension, partition your distributed tables based on
+ time. You can use native Hyperscale (Citus) time series capabilities to
+ create and maintain partitions.
+ * Partitioning helps efficiently filter data for queries with time filters.
+ * Expiring old data is also fast, using the DROP vs DELETE command.
+ * The events table in our example is partitioned by month.
+* Use the JSONB datatype to store semi-structured data. Device telemetry
+ data is typically not structured, every device has its own metrics.
+ * In our example, the events table has a `detail` column, which is JSONB.
+* If your IoT app requires geospatial features, you can use the PostGIS
+ extension, which Hyperscale (Citus) supports natively.
+
+## Next steps
+
+We've completed the how-to for building scalable apps.
+
+* You may now want to know how to [scale a server group](howto-scale-grow.md)
+ to give your app more nodes and hardware capacity.
postgresql Howto Build Scalable Apps Model Multi Tenant https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/postgresql/hyperscale/howto-build-scalable-apps-model-multi-tenant.md
+
+ Title: Model multi-tenant apps - Hyperscale (Citus) - Azure Database for PostgreSQL
+description: Techniques for scalable multi-tenant SaaS apps
+++++ Last updated : 04/28/2022++
+# Model multi-tenant SaaS apps
+
+## Tenant ID as the shard key
+
+The tenant ID is the column at the root of the workload, or the top of the
+hierarchy in your data-model. For example, in this SaaS e-commerce schema,
+it would be the store ID:
+
+![Diagram of tables, with the store_id column highlighted.](../media/howto-hyperscale-build-scalable-apps/multi-tenant-id.png)
+
+This data model would be typical for a business such as Shopify. It hosts sites
+for multiple online stores, where each store interacts with its own data.
+
+* This data-model has a bunch of tables: stores, products, orders, line items
+ and countries.
+* The stores table is at the top of the hierarchy. Products, orders and
+ line items are all associated with stores, thus lower in the hierarchy.
+* The countries table isn't related to individual stores, it is amongst across
+ stores.
+
+In this example, `store_id`, which is at the top of the hierarchy, is the
+identifier for tenant. It's the right shard key. Picking `store_id` as the
+shard key enables collocating data across all tables for a single store on a
+single worker.
+
+Colocating tables by store has advantages:
+
+* Provides SQL coverage such as foreign keys, JOINs. Transactions for a single
+ tenant are localized on a single worker node where each tenant exists.
+* Achieves single digit millisecond performance. Queries for a single tenant are
+ routed to a single node instead of getting parallelized, which helps optimize
+ network hops and still scale compute/memory.
+* It scales. As the number of tenants grows, you can add nodes and rebalance
+ the tenants to new nodes, or even isolate large tenants to their own nodes.
+ Tenant isolation allows you to provide dedicated resources.
+
+![Diagram of tables colocated to the same nodes.](../media/howto-hyperscale-build-scalable-apps/multi-tenant-colocation.png)
+
+## Optimal data model for multi-tenant apps
+
+In this example, we should distribute the store-specific tables by store ID,
+and make `countries` a reference table.
+
+![Diagram of tables with store_id more universally highlighted.](../media/howto-hyperscale-build-scalable-apps/multi-tenant-data-model.png)
+
+Notice that tenant-specific tables have the tenant ID and are distributed. In
+our example, stores, products and line\_items are distributed. The rest of the
+tables are reference tables. In our example, the countries table is a reference table.
+
+```sql
+-- Distribute large tables by the tenant ID
+
+SELECT create_distributed_table('stores', 'store_id');
+SELECT create_distributed_table('products', 'store_id', colocate_with => 'stores');
+-- etc for the rest of the tenant tables...
+
+-- Then, make "countries" a reference table, with a synchronized copy of the
+-- table maintained on every worker node
+
+SELECT create_reference_table('countries');
+```
+
+Large tables should all have the tenant ID.
+
+* If you're **migrating an existing** multi-tenant app to Hyperscale (Citus),
+ you may need to denormalize a little and add the tenant ID column to large
+ tables if it's missing, then backfill the missing values of the column.
+* For **new apps** on Hyperscale (Citus), make sure the tenant ID is present
+ on all tenant-specific tables.
+
+Ensure to include the tenant ID on primary, unique, and foreign key constraints
+on distributed tables in the form of a composite key. For example, if a table
+has a primary key of `id`, turn it into the composite key `(tenant_id,id)`.
+There's no need to change keys for reference tables.
+
+## Query considerations for best performance
+
+Distributed queries that filter on the tenant ID run most efficiently in
+multi-tenant apps. Ensure that your queries are always scoped to a single
+tenant.
+
+```sql
+SELECT *
+ FROM orders
+ WHERE order_id = 123
+ AND store_id = 42; -- ← tenant ID filter
+```
+
+It's necessary to add the tenant ID filter even if the original filter
+conditions unambiguously identify the rows you want. The tenant ID filter,
+while seemingly redundant, tells Hyperscale (Citus) how to route the query to a
+single worker node.
+
+Similarly, when you're joining two distributed tables, ensure that both the
+tables are scoped to a single tenant. Scoping can be done by ensuring that join
+conditions include the tenant ID.
+
+```sql
+SELECT sum(l.quantity)
+ FROM line_items l
+ INNER JOIN products p
+ ON l.product_id = p.product_id
+ AND l.store_id = p.store_id -- ← tenant ID in join
+ WHERE p.name='Awesome Wool Pants'
+ AND l.store_id='8c69aa0d-3f13-4440-86ca-443566c1fc75';
+ -- Γåæ tenant ID filter
+```
+
+There are helper libraries for several popular application frameworks that make
+it easy to include a tenant ID in queries. Here are instructions:
+
+* [Ruby on Rails instructions](https://docs.citusdata.com/en/stable/develop/migration_mt_ror.html)
+* [Django instructions](https://docs.citusdata.com/en/stable/develop/migration_mt_django.html)
+* [ASP.NET](https://docs.citusdata.com/en/stable/develop/migration_mt_asp.html)
+* [Java Hibernate](https://www.citusdata.com/blog/2018/02/13/using-hibernate-and-spring-to-build-multitenant-java-apps/)
+
+## Next steps
+
+If you're migrating an existing multi-tenant app to Hyperscale (Citus), see
+this highly detailed guide:
+
+> [!div class="nextstepaction"]
+> [Migrating an existing app (external) >](https://docs.citusdata.com/en/stable/develop/migration.html#transitioning-mt)
postgresql Howto Build Scalable Apps Model Real Time https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/postgresql/hyperscale/howto-build-scalable-apps-model-real-time.md
+
+ Title: Model real-time apps - Hyperscale (Citus) - Azure Database for PostgreSQL
+description: Techniques for scalable real-time analytical apps
+++++ Last updated : 04/28/2022++
+# Model real-time analytics apps
+
+## Colocate large tables with shard key
+
+To pick the shard key for a real-time operational analytics application, follow
+these guidelines:
+
+* Choose a column that is common on large tables
+* Choose a column that is a natural dimension in the data, or a central piece
+ of the application. Some examples:
+ * In the financial world, an application that analyzes security trends would
+ probably use `security_id`.
+ * In a user analytics workload where you want to analyze website usage
+ metrics, `user_id` would be a good distribution column
+
+By colocating large tables, you can push SQL queries down to worker nodes in
+parallel. Pushing down queries avoids shuffling data between nodes over the
+network. Operations such as JOINs, aggregates, rollups, filters, LIMITs can be
+efficiently executed.
+
+To visualize parallel distributed queries on colocated tables, consider this
+diagram:
+
+![Diagram of joins happening within worker nodes.](../media/howto-hyperscale-build-scalable-apps/real-time-join.png)
+
+The `users` and `events` tables are both sharded by `user_id`, so related
+rows for the same user ID are placed together on the same worker node. The
+SQL JOINs can happen without pulling information between workers.
+
+## Optimal data model for real-time apps
+
+Let's continue with the example of an application that analyzes user website
+visits and metrics. There are two "fact" tables--users and events--and other
+smaller "dimension" tables.
+
+![Diagram of users, events, and miscellaneous tables.](../media/howto-hyperscale-build-scalable-apps/real-time-data-model.png)
+
+To apply the super power of distributed tables on Hyperscale (Citus), follow
+the following steps:
+
+* Distribute large fact tables on a common column. In our case, users and
+ events are distributed on `user_id`.
+* Mark the small/dimension tables (`device_types`, `countries`, and
+ `event_types) as Hyperscale (Citus) reference tables.
+* Be sure to include the distribution column in primary, unique, and foreign
+ key constraints on distributed tables. Including the column may require making the keys
+ composite. There's need to update keys for reference tables.
+* When you're joining large distributed tables, be sure to join using the
+ shard key.
+
+```sql
+-- Distribute the fact tables
+
+SELECT create_distributed_table('users', 'user_id');
+SELECT create_distributed_table('products', 'user_id', colocate_with => 'users');
+
+-- Turn dimension tables into reference tables, with synchronized copies
+-- maintained on every worker node
+
+SELECT create_reference_table('countries');
+-- similarly for device_types and event_types...
+```
+
+## Next steps
+
+We've completed the how-to for building scalable apps.
+
+* You may now want to know how to [scale a server group](howto-scale-grow.md)
+ to give your app more nodes and hardware capacity.
postgresql Howto Build Scalable Apps Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/postgresql/hyperscale/howto-build-scalable-apps-overview.md
+
+ Title: Build scalable apps - Hyperscale (Citus) - Azure Database for PostgreSQL
+description: How to build relational apps that scale
+++++ Last updated : 04/28/2022++
+# Build scalable apps
+
+> [!NOTE]
+> This article is for you if:
+>
+> * You are building an app on the [Basic Tier](concepts-server-group.md#tiers)
+> with distributed tables, to be ready for the future. (Later, you can add
+> more nodes and scale out as workload grows.)
+> * You are starting with the [Standard Tier](concepts-server-group.md#tiers)
+> and deploying Hyperscale (Citus) across multiple nodes.
+> * You are already running on Hyperscale (Citus), but aren't using distributed
+> tables.
+
+This series covers how to build scalable relational apps with Hyperscale (Citus).
+
+If you're building an app that a single node database node (8vcore, 32-GB RAM
+and 512-GB storage) can handle for the near future (~6 months), then you can
+start with the Hyperscale (Citus) **Basic Tier**. Later, you can add more
+nodes, rebalance your, data and scale out seamlessly.
+
+If your app needs requires multiple database nodes in the short term, start
+with the Hyperscale (Citus) **Standard Tier**.
+
+> [!TIP]
+>
+> If you choose the Basic Tier, you can treat Hyperscale (Citus) just like
+> standard PostgreSQL, and achieve full feature parity. You donΓÇÖt need any
+> distributed data modeling techniques while building your app. If you decide
+> to go that route, you can skip this section.
+
+## Three steps for building highly scalable apps
+
+There are three steps involved in building scalable apps with Hyperscale
+(Citus):
+
+1. Classify your application workload. There are use-case where Hyperscale
+ (Citus) shines: multi-tenant SaaS, real-time operational analytics, and high
+ throughput OLTP. Determine whether your app falls into one of these categories.
+2. Based on the workload, identify the optimal shard key for the distributed
+ tables. Classify your tables as reference, distributed, or local.
+3. Update the database schema and application queries to make them go fast
+ across nodes.
+
+## Next steps
+
+Before you start building a new app, you must first learn a little about the
+architecture of Hyperscale (Citus).
+
+> [!div class="nextstepaction"]
+> [Fundamental concepts for scaling >](howto-build-scalable-apps-concepts.md)
postgresql Quickstart Run Queries https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/postgresql/hyperscale/quickstart-run-queries.md
Previously updated : 04/20/2022 Last updated : 04/28/2022 # Run queries
The quickstart is now complete. You've successfully created a scalable
Hyperscale (Citus) server group, created tables, sharded them, loaded data, and run distributed queries.
-Here are good resources to deepen your knowledge.
+Now you're ready to learn to build applications with Hyperscale (Citus).
-* See a more detailed [illustration](tutorial-shard.md) of distributed query
- execution.
-* Scale your server group by [adding
- nodes](howto-scale-grow.md#add-worker-nodes) and [rebalancing
- shards](howto-scale-rebalance.md).
+> [!div class="nextstepaction"]
+> [Build a scalable application >](howto-build-scalable-apps-overview.md)
storage Storage How To Mount Container Linux https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/storage/blobs/storage-how-to-mount-container-linux.md
Previously updated : 07/06/2021 Last updated : 04/28/2022
[Blobfuse](https://github.com/Azure/azure-storage-fuse) is a virtual file system driver for Azure Blob storage. Blobfuse allows you to access your existing block blob data in your storage account through the Linux file system. Blobfuse uses the virtual directory scheme with the forward-slash '/' as a delimiter.
-This guide shows you how to use blobfuse, and mount a Blob storage container on Linux and access data. To learn more about blobfuse, read the details in [the blobfuse repository](https://github.com/Azure/azure-storage-fuse).
+This guide shows you how to use blobfuse, and mount a Blob storage container on Linux and access data. To learn more about blobfuse, see the [readme](https://github.com/Azure/azure-storage-fuse) and [wiki](https://github.com/Azure/azure-storage-fuse/wiki).
> [!WARNING] > Blobfuse doesn't guarantee 100% POSIX compliance as it simply translates requests into [Blob REST APIs](/rest/api/storageservices/blob-service-rest-api). For example, rename operations are atomic in POSIX, but not in blobfuse. > For a full list of differences between a native file system and blobfuse, visit [the blobfuse source code repository](https://github.com/azure/azure-storage-fuse).
->
## Install blobfuse on Linux
Blobfuse binaries are available on [the Microsoft software repositories for Linu
Blobfuse is published in the Linux repo for Ubuntu versions: 16.04, 18.04, and 20.04, RHELversions: 7.5, 7.8, 7.9, 8.0, 8.1, 8.2, CentOS versions: 7.0, 8.0, Debian versions: 9.0, 10.0, SUSE version: 15, OracleLinux 8.1 . Run this command to make sure that you have one of those versions deployed:
-```
+```bash
lsb_release -a ```
sudo apt-get install blobfuse
On an Enterprise Linux distribution:
-```bash
+```bash
sudo yum install blobfuse ```
+On a SUSE distribution:
+
+```bash
+sudo zypper install blobfuse
+```
+ ## Prepare for mounting Blobfuse provides native-like performance by requiring a temporary path in the file system to buffer and cache any open files. For this temporary path, choose the most performant disk, or use a ramdisk for best performance.
Blobfuse provides native-like performance by requiring a temporary path in the f
### (Optional) Use a ramdisk for the temporary path
-The following example creates a ramdisk of 16 GB and a directory for blobfuse. Choose the size based on your needs. This ramdisk allows blobfuse to open files up to 16 GB in size.
+The following example creates a ramdisk of 16 GB and a directory for blobfuse. Choose the size based on your needs. This ramdisk allows blobfuse to open files up to 16 GB in size.
```bash sudo mkdir /mnt/ramdisk
sudo mkdir /mnt/resource/blobfusetmp -p
sudo chown <youruser> /mnt/resource/blobfusetmp ```
-### Configure your storage account credentials
+### Authorize access to your storage account
-Blobfuse requires your credentials to be stored in a text file in the following format:
+You can authorize access to your storage account by using the account access key, a shared access signature, a managed identity, or a service principal. Authorization information can be provided on the command line, in a config file, or in environment variables. For details, see [Valid authentication setups](https://github.com/Azure/azure-storage-fuse#valid-authentication-setups) in the blobfuse readme.
-```
+For example, suppose you are authorizing with the account access keys and storing them in a config file. The config file should have the following format:
+
+```bash
accountName myaccount accountKey storageaccesskey containerName mycontainer ```
-The `accountName` is the prefix for your storage account - not the full URL.
+The `accountName` is the name of your storage account, and not the full URL.
Create this file using:
-```
-touch ~/fuse_connection.cfg
+```bash
+touch /path/to/fuse_connection.cfg
``` Once you've created and edited this file, make sure to restrict access so no other users can read it. ```bash
-chmod 600 ~/fuse_connection.cfg
+chmod 600 /path/to/fuse_connection.cfg
``` > [!NOTE]
-> If you have created the configuration file on Windows, make sure to run `dos2unix` to sanitize and convert the file to Unix format.
->
+> If you have created the configuration file on Windows, make sure to run `dos2unix` to sanitize and convert the file to Unix format.
### Create an empty directory for mounting - ```bash mkdir ~/mycontainer ```
mkdir ~/mycontainer
To mount blobfuse, run the following command with your user. This command mounts the container specified in '/path/to/fuse_connection.cfg' onto the location '/mycontainer'. ```bash
-sudo blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120
+blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120
``` > [!NOTE]
mkdir test
echo "hello world" > test/blob.txt ```
+## Persist the mount
+
+To learn how to persist the mount, see [Persisting](https://github.com/Azure/azure-storage-fuse/wiki/2.-Configuring-and-Running#persisting) in the blobfuse wiki.
+ ## Feature support This table shows how this feature is supported in your account and the impact on support when you enable certain capabilities.
storage Partner Overview https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/storage/solution-integration/validated-partners/data-management/partner-overview.md
This article highlights Microsoft partner companies integrated with Azure Storag
| Partner | Description | Website/product link | | - | -- | -- | |![Atempo](./media/atempo-logo.png) |**Atempo**<br>Atempo Miria empowers you to manage complex file workflows including migration, backup, archive, and synchronization in heterogenous environments. Atempo Miria has a compatibility guide allowing to implement efficient data workflows between NAS, parallel FS, object, tape, and optical disk. The association of Azure and Atempo Miria allows customers to deploy any file workflow from on-premises to Azure or from cloud to Azure. |[Partner page](https://www.atempo.com/products/miria-for-archiving-large-file-sets/)|
-|![Cirrus company logo](./media/cirrus-logo.jpg) |**Cirrus Data**<br>Cirrus Data Solutions is a block storage data migration solution for both on-premises and cloud environments. An end-to-end approach allows you to migrate your data from on-premises to the cloud, between storage tiers within the cloud, and seamlessly migrate between public clouds. |[Partner Page](https://www.cirrusdata.com/cloud-migration/)<br>[Azure Marketplace](https://azuremarketplace.microsoft.com/marketplace/apps/cirrusdatasolutionsinc1618222951068.cirrusdata?tab=Overview)|
+|![Cirrus company logo](./media/cirrus-logo.jpg) |**Cirrus Data**<br>Cirrus Data Solutions is a block storage data migration solution for both on-premises and cloud environments. An end-to-end approach allows you to migrate your data from on-premises to the cloud, between storage tiers within the cloud, and seamlessly migrate between public clouds. |[Partner Page](https://www.cirrusdata.com/cloud-migration/)<br>[Azure Marketplace](https://azuremarketplace.microsoft.com/marketplace/apps/cirrusdatasolutionsinc1618222951068.ultra-disk-protect)|
|![Commvault company logo](./media/commvault-logo.jpg) |**Commvault**<br>Optimize, protect, migrate, and index your data using Microsoft infrastructure with Commvault. Take control of your data with Commvault Complete Data Protection, the Microsoft-centric and, Azure-centric data management solution. Commvault provides the tools you need to manage, migrate, access, and recover your data no matter where it resides, while reducing cost and risk.|[Partner Page](https://www.commvault.com/complete-data-protection)<br>[Azure Marketplace](https://azuremarketplace.microsoft.com/marketplace/apps/commvault.commvault)| |![Data Dynamics company logo](./media/datadyn-logo.png) |**Data Dynamics**<br>Data Dynamics provides enterprise solutions to manage unstructured data for hybrid and multi-cloud environments. Their Unified Unstructured Data Management Platform uses analytics and automation to help you intelligently and efficiently move data from heterogenous storage environments (SMB, NFS, or S3 Object) into Azure. The platform provides seamless integration, enterprise scale, and performance that enables the efficient management of data for hybrid and multi-cloud environments. Use cases include: intelligent cloud migration, disaster recovery, archive, backup, and infrastructure optimization and data management. |[Partner page](https://www.datadynamicsinc.com/partners-2/)| ![Datadobi company logo](./media/datadob-logo.png) |**Datadobi**<br> Datadobi can optimize your unstructured storage environments. DobiMigrate is enterprise-class software that gets your file and object data ΓÇô safely, quickly, easily, and cost effectively ΓÇô to Azure. Focus on value-added activities instead of time-consuming migration tasks. Grow your storage footprint without CAPEX investments.|[Partner page](https://datadobi.com/partners/microsoft/)<br>[Azure Marketplace](https://azuremarketplace.microsoft.com/marketplace/apps/datadobi1602192408529.datadobi-dobimigrate?tab=Overview)|
virtual-network Virtual Network Manage Subnet https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-network/virtual-network-manage-subnet.md
The account you sign in to, or connect to Azure with, must be assigned to the [N
| Setting | Description | | | | | **Address range** | If no resources are deployed within the subnet, you can change the address range. If any resources exist in the subnet, you must either move the resources to another subnet, or delete them from the subnet first. The steps you take to move or delete a resource vary depending on the resource. To learn how to move or delete resources that are in subnets, read the documentation for each of those resource types. See the constraints for **Address range** in step 4 of [Add a subnet](#add-a-subnet). |
- | **Users** | You can control access to the subnet by using built-in roles or your own custom roles. To learn more about assigning roles and users to access the subnet, see [Assign Azure roles](../role-based-access-control/role-assignments-portal.md?toc=%2fazure%2fvirtual-network%2ftoc.json). |
+ | **Users** | You can control access to the subnet by using built-in roles or your own custom roles. Access **Mangage Users** by selecting the ellipse (...) to the right of the **Route table** column. To learn more about assigning roles and users to access the subnet, see [Assign Azure roles](../role-based-access-control/role-assignments-portal.md?toc=%2fazure%2fvirtual-network%2ftoc.json). |
| **Network security group** and **Route table** | See step 4 of [Add a subnet](#add-a-subnet). | | **Service endpoints** | <p>See service endpoints in step 4 of [Add a subnet](#add-a-subnet). When enabling a service endpoint for an existing subnet, ensure that no critical tasks are running on any resource in the subnet. Service endpoints switch routes on every network interface in the subnet. The service endpoints go from using the default route with the *0.0.0.0/0* address prefix and next hop type of *Internet*, to using a new route with the address prefixes of the service and a next hop type of *VirtualNetworkServiceEndpoint*.</p><p>During the switch, any open TCP connections may be terminated. The service endpoint isn't enabled until traffic flows to the service for all network interfaces are updated with the new route. To learn more about routing, see [Virtual network traffic routing](virtual-networks-udr-overview.md).</p> | | **Subnet delegation** | See service endpoints in step 4 of [Add a subnet](#add-a-subnet). Subnet delegation can be modified to zero or multiple delegations enabled for it. If a resource for a service is already deployed in the subnet, subnet delegation can't be added or removed until all the resources for the service are removed. To delegate for a different service, select the service you want to delegate to from the **Services** list. |
virtual-wan Upgrade Virtual Wan https://github.com/MicrosoftDocs/azure-docs/commits/main/articles/virtual-wan/upgrade-virtual-wan.md
Title: 'Upgrade virtual WAN from Basic SKU to Standard'
+ Title: 'Upgrade Virtual WAN - Basic SKU type to Standard'
description: You can upgrade your virtual WAN SKU type from Basic to Standard for greater functionality.
# Upgrade a virtual WAN from Basic to Standard
-This article helps you upgrade a virtual WAN that was created using the Basic SKU, to the Standard SKU. When you have a **Basic** virtual WAN type, all hubs within the virtual WAN are configured as Basic SKU hubs. In a Basic SKU hub, you're limited to site-to-site VPN functionality only.
+This article helps you upgrade a virtual WAN that was created using the Basic type (SKU), to Standard. When a virtual WAN type is Basic, all hubs within the virtual WAN are configured as Basic hubs. A Basic hub is limited to site-to-site VPN functionality only.
-When you upgrade to a **Standard** virtual WAN SKU type, it updates all the hubs within the virtual WAN to Standard SKU hubs. When you use Standard hubs, you can enable ExpressRoute, point-to-site (User VPN), a full mesh hub, and VNet-to-VNet transit through the Azure hubs.
+When you upgrade from Basic to Standard, all the hubs within the virtual WAN are upgraded to Standard hubs. Standard hubs support ExpressRoute, point-to-site (User VPN), a full mesh hub, and VNet-to-VNet transit through the Azure hubs.
The following table shows the configurations available for each WAN type: [!INCLUDE [Basic and Standard SKUs](../../includes/virtual-wan-standard-basic-include.md)]
-## <a name = "upgrade"></a>To upgrade the SKU type
+## <a name = "upgrade"></a>To upgrade
1. On the page for your virtual WAN, select **Configuration** to open the Configuration page.
The following table shows the configurations available for each WAN type:
:::image type="content" source="./media/upgrade-virtual-wan/confirm.png" alt-text="Screenshot that shows the upgrade confirmation dialog box." lightbox="./media/upgrade-virtual-wan/confirm.png":::
-1. Once the change has been saved, your virtual WAN and the hubs within it are updated to the Standard SKU type.
+1. Once the change has been saved, your virtual WAN and the hubs within it are updated to Standard.
## Next steps