APPs Management Azure
APPs Management Azure
APPs Management Azure
Azure Active Directory (Azure AD ) simplifies the way you manage your applications by providing a single identity
system for your cloud and on-premises apps. You can add your software as a service (SaaS ) applications, on-
premises applications, and line of business (LOB ) apps to Azure AD. Then users sign in once to securely and
seamlessly access these applications, along with Office 365 and other business applications from Microsoft. You
can reduce administrative costs by automating user provisioning. You can also use multi-factor authentication and
Conditional Access policies to provide secure application access.
Manage costs
By migrating to Azure AD, you can save costs and remove the hassle of managing your on-premises
infrastructure. Azure AD also provides self-service access to applications, which saves time for both administrators
and users. Single sign-on eliminates application-specific passwords. This ability to sign on once saves costs related
to password reset for applications, and lost productivity while retrieving passwords.
Next steps
What is Application Proxy?
Quickstart: Add a gallery application to your Azure AD tenant
Automate user provisioning and deprovisioning to
SaaS applications with Azure Active Directory
7/10/2019 • 13 minutes to read • Edit Online
Azure Active Directory (Azure AD ) lets you automate the creation, maintenance, and removal of user identities in
cloud (SaaS ) applications such as Dropbox, Salesforce, ServiceNow, and more. This is known as automated user
provisioning for SaaS apps.
Figure 2: "Outbound" user provisioning workflow from Azure AD to popular SaaS applications
Figure 3: "Inbound" user provisioning workflow from popular Human Capital Management (HCM ) applications
to Azure Active Directory and Windows Server Active Directory
6. Select the Automatic option for the Provisioning Mode to specify settings for admin credentials,
mappings, starting and stopping, and synchronization.
Expand Admin credentials to enter the credentials required for Azure AD to connect to the
application's user management API. This section also lets you enable email notifications if the
credentials fail, or the provisioning job goes into quarantine.
Expand Mappings to view and edit the user attributes that flow between Azure AD and the target
application when user accounts are provisioned or updated. If the target application supports it,
this section lets you optionally configure provisioning of groups and user accounts. Select a
mapping in the table to open the mapping editor to the right, where you can view and customize
user attributes.
Scoping filters tell the provisioning service which users and groups in the source system should
be provisioned or deprovisioned to the target system. In the Attribute mapping pane, select
Source Object Scope to filter on specific attribute values. For example, you can specify that only
users with a "Department" attribute of "Sales" should be in scope for provisioning. For more
information, see Using scoping filters.
For more information, see Customizing Attribute Mappings.
Settings control the operation of the provisioning service for an application, including whether it's
currently running. The Scope menu lets you specify whether only assigned users and groups
should be in scope for provisioning, or if all users in the Azure AD directory should be provisioned.
For information on "assigning" users and groups, see Assign a user or group to an enterprise app
in Azure Active Directory.
In the app management screen, select Audit logs to view records of every operation run by the Azure AD
provisioning service. For more information, see the provisioning reporting guide.
NOTE
The Azure AD user provisioning service can also be configured and managed using the Microsoft Graph API.
The provisioning service continues running back-to-back incremental syncs indefinitely, at intervals defined in
the tutorial specific to each application, until one of the following events occurs:
The service is manually stopped using the Azure portal, or using the appropriate Graph API command
A new initial sync is triggered using the Clear state and restart option in the Azure portal, or using the
appropriate Graph API command. This action clears any stored watermark and causes all source objects to be
evaluated again.
A new initial sync is triggered because of a change in attribute mappings or scoping filters. This action also
clears any stored watermark and causes all source objects to be evaluated again.
The provisioning process goes into quarantine (see below ) because of a high error rate, and stays in
quarantine for more than four weeks. In this event, the service will be automatically disabled.
Errors and retries
If an individual user can't be added, updated, or deleted in the target system because of an error in the target
system, then the operation is retried in the next sync cycle. If the user continues to fail, then the retries will begin
to occur at a reduced frequency, gradually scaling back to just one attempt per day. To resolve the failure,
administrators must check the audit logs for "process escrow" events to determine the root cause and take the
appropriate action. Common failures can include:
Users not having an attribute populated in the source system that is required in the target system
Users having an attribute value in the source system for which there's a unique constraint in the target
system, and the same value is present in another user record
These failures can be resolved by adjusting the attribute values for the affected user in the source system, or by
adjusting the attribute mappings to not cause conflicts.
Quarantine
If most or all of the calls made against the target system consistently fail because of an error (such as for invalid
admin credentials), then the provisioning job goes into a "quarantine" state. This state is indicated in the
provisioning summary report and via email if email notifications were configured in the Azure portal.
When in quarantine, the frequency of incremental syncs is gradually reduced to once per day.
The provisioning job will be removed from quarantine after all of the offending errors are fixed and the next sync
cycle starts. If the provisioning job stays in quarantine for more than four weeks, the provisioning job is disabled.
What are the best practices for rolling out automatic user
provisioning?
For an example step-by-step deployment plan for outbound user provisioning to an application, see the Identity
Deployment Guide for User Provisioning.
Related articles
List of tutorials on how to integrate SaaS apps
Customizing attribute mappings for user provisioning
Writing expressions for attribute mappings
Scoping filters for user provisioning
Using SCIM to enable automatic provisioning of users and groups from Azure AD to applications
Azure AD synchronization API overview
Using Azure AD Application Proxy to publish on-
premises apps for remote users
6/13/2019 • 18 minutes to read • Edit Online
Azure Active Directory (Azure AD ) offers many capabilities for protecting users, apps, and data in the cloud and
on-premises. In particular, the Azure AD Application Proxy feature can be implemented by IT professionals who
want to publish on-premises web applications externally. Remote users who need access to internal apps can then
access them in a secure manner.
The ability to securely access internal apps from outside your network becomes even more critical in the modern
workplace. With scenarios such as BYOD (Bring Your Own Device) and mobile devices, IT professionals are
challenged to meet two goals:
Empower end users to be productive anytime and anywhere
Protect corporate assets at all times
Many organizations believe they are in control and protected when resources exist within the boundaries of their
corporate networks. But in today's digital workplace, that boundary has expanded with managed mobile devices
and resources and services in the cloud. Now you need to manage the complexity of protecting your users'
identities and data stored on their devices and apps.
Perhaps you're already using Azure AD to manage users in the cloud who need to access Office 365 and other
SaaS applications, as well as web apps hosted on-premises. If you already have Azure AD, you can leverage it as
one control plane to allow seamless and secure access to your on-premises applications. Or, maybe you're still
contemplating a move to the cloud. If so, you can begin your journey to the cloud by implementing Application
Proxy and taking the first step towards building a strong identity foundation.
While not comprehensive, the list below illustrates some of the things you can enable by implementing App Proxy
in a hybrid coexistence scenario:
Publish on-premises web apps externally in a simplified way without a DMZ
Support single sign-on (SSO ) across devices, resources, and apps in the cloud and on-premises
Support multi-factor authentication for apps in the cloud and on-premises
Quickly leverage cloud features with the security of the Microsoft Cloud
Centralize user account management
Centralize control of identity and security
Automatically add or remove user access to applications based on group membership
This article explains how Azure AD and Application Proxy give remote users a single sign-on (SSO ) experience.
Users securely connect to on-premises apps without a VPN or dual-homed servers and firewall rules. This article
helps you understand how Application Proxy brings the capabilities and security advantages of the cloud to your
on-premises web applications. It also describes the architecture and topologies that are possible.
Authentication
There are several ways to configure an application for single sign-on and the method you select depends on the
authentication your application uses. Application Proxy supports the following types of applications:
Web applications
Web APIs that you want to expose to rich applications on different devices
Applications hosted behind a Remote Desktop Gateway
Rich client apps that are integrated with the Active Directory Authentication Library (ADAL )
App Proxy works with apps that use the following native authentication protocol:
Integrated Windows Authentication (IWA ). For IWA, the Application Proxy connectors use Kerberos
Constrained Delegation (KCD ) to authenticate users to the Kerberos application.
App Proxy also supports the following authentication protocols with third-party integration or in specific
configuration scenarios:
Header-based authentication. This sign-on method uses a third-party authentication service called
PingAccess and is used when the application uses headers for authentication. In this scenario, authentication is
handled by PingAccess.
Forms- or password-based authentication. With this authentication method, users sign on to the application
with a username and password the first time they access it. After the first sign-on, Azure AD supplies the
username and password to the application. In this scenario, authentication is handled by Azure AD.
SAML authentication. SAML -based single sign-on is supported for applications that use either SAML 2.0 or
WS -Federation protocols. With SAML single sign-on, Azure AD authenticates to the application by using the
user's Azure AD account.
For more information on supported methods, see Choosing a single sign-on method.
Security benefits
The remote access solution offered by Application Proxy and Azure AD support several security benefits
customers may take advantage of, including:
Authenticated access. Application Proxy is best suited to publish applications with pre-authentication to
ensure that only authenticated connections hit your network. For applications published with pre-
authentication, no traffic is allowed to pass through the App Proxy service to your on-premises
environment, without a valid token. Pre-authentication, by its very nature, blocks a significant number of
targeted attacks, as only authenticated identities can access the backend application.
Conditional Access. Richer policy controls can be applied before connections to your network are
established. With Conditional Access, you can define restrictions on the traffic that you allow to hit your
backend application. You create policies that restrict sign-ins based on location, strength of authentication,
and user risk profile. As Conditional Access evolves, more controls are being added to provide additional
security such as integration with Microsoft Cloud App Security (MCAS ). MCAS integration enables you to
configure an on-premises application for real-time monitoring by leveraging Conditional Access to monitor
and control sessions in real-time based on Conditional Access policies.
Traffic termination. All traffic to the backend application is terminated at the Application Proxy service in
the cloud while the session is re-established with the backend server. This connection strategy means that
your backend servers are not exposed to direct HTTP traffic. They are better protected against targeted DoS
(denial-of-service) attacks because your firewall isn't under attack.
All access is outbound. The Application Proxy connectors only use outbound connections to the
Application Proxy service in the cloud over ports 80 and 443. With no inbound connections, there's no need
to open firewall ports for incoming connections or components in the DMZ. All connections are outbound
and over a secure channel.
Security Analytics and Machine Learning (ML ) based intelligence. Because it's part of Azure Active
Directory, Application Proxy can leverage Azure AD Identity Protection (requires Premium P2 licensing).
Azure AD Identity Protection combines machine-learning security intelligence with data feeds from
Microsoft's Digital Crimes Unit and Microsoft Security Response Center to proactively identify
compromised accounts. Identity Protection offers real-time protection from high-risk sign-ins. It takes into
consideration factors like accesses from infected devices, through anonymizing networks, or from atypical
and unlikely locations to increase the risk profile of a session. This risk profile is used for real-time
protection. Many of these reports and events are already available through an API for integration with your
SIEM systems.
Remote access as a service. You don't have to worry about maintaining and patching on-premises servers
to enable remote access. Application Proxy is an internet scale service that Microsoft owns, so you always
get the latest security patches and upgrades. Unpatched software still accounts for a large number of
attacks. According to the Department of Homeland Security, as many as 85 percent of targeted attacks are
preventable. With this service model, you don't have to carry the heavy burden of managing your edge
servers anymore and scramble to patch them as needed.
Intune integration. With Intune, corporate traffic is routed separately from personal traffic. Application
Proxy ensures that the corporate traffic is authenticated. Application Proxy and the Intune Managed
Browser capability can also be used together to enable remote users to securely access internal websites
from iOS and Android devices.
Roadmap to the cloud
Another major benefit of implementing Application Proxy is extending Azure AD to your on-premises
environment. In fact, implementing App Proxy is a key step in moving your organization and apps to the cloud. By
moving to the cloud and away from on-premises authentication, you reduce your on-premises footprint and use
Azure AD's identity management capabilities as your control plane. With minimal or no updates to existing
applications, you have access to cloud capabilities such as single sign-on, multi-factor authentication, and central
management. Installing the necessary components to App Proxy is a simple process for establishing a remote
access framework. And by moving to the cloud, you have access to the latest Azure AD features, updates, and
functionality, such as high availability and the disaster recovery.
To learn more about migrating your apps to Azure AD, see the Migrating Your Applications to Azure Active
Directory white paper.
Architecture
The following diagram illustrates in general how Azure AD authentication services and Application Proxy work
together to provide single sign-on to on-premises applications to end users.
1. After the user has accessed the application through an endpoint, the user is redirected to the Azure AD sign-in
page. If you've configured Conditional Access policies, specific conditions are checked at this time to ensure
that you comply with your organization's security requirements.
2. After a successful sign-in, Azure AD sends a token to the user's client device.
3. The client sends the token to the Application Proxy service, which retrieves the user principal name (UPN ) and
security principal name (SPN ) from the token.
4. Application Proxy forwards the request, which is picked up by the Application Proxy connector.
5. The connector performs any additional authentication required on behalf of the user (Optional depending on
authentication method), requests the internal endpoint of the application server and sends the request to the
on-premises application.
6. The response from the application server is sent through the connector to the Application Proxy service.
7. The response is sent from the Application Proxy service to the user.
COMPONENT DESCRIPTION
Application Proxy service This Application Proxy service runs in the cloud as part of
Azure AD. It passes the sign-on token from the user to the
Application Proxy Connector. Application Proxy forwards any
accessible headers on the request and sets the headers as per
its protocol, to the client IP address. If the incoming request
to the proxy already has that header, the client IP address is
added to the end of the comma-separated list that is the
value of the header.
Application Proxy connector The connector is a lightweight agent that runs on a Windows
Server inside your network. The connector manages
communication between the Application Proxy service in the
cloud and the on-premises application. The connector only
uses outbound connections, so you don't have to open any
inbound ports or put anything in the DMZ. The connectors
are stateless and pull information from the cloud as necessary.
For more information about connectors, like how they load-
balance and authenticate, see Understand Azure AD
Application Proxy connectors.
Azure AD Application Proxy consists of the cloud-based Application Proxy service and an on-premises connector.
The connector listens for requests from the Application Proxy service and handles connections to the internal
applications. It's important to note that all communications occur over SSL, and always originate at the connector
to the Application Proxy service. That is, communications are outbound only. The connector uses a client certificate
to authenticate to the Application Proxy service for all calls. The only exception to the connection security is the
initial setup step where the client certificate is established. See the Application Proxy Under the hood for more
details.
Application Proxy Connectors
Application Proxy connectors are lightweight agents deployed on-premises that facilitate the outbound connection
to the Application Proxy service in the cloud. The connectors must be installed on a Windows Server that has
access to the backend application. Users connect to the App Proxy cloud service that routes their traffic to the apps
via the connectors as illustrated below.
Setup and registration between a connector and the App Proxy service is accomplished as follows:
1. The IT administrator opens ports 80 and 443 to outbound traffic and allows access to several URLs that are
needed by the connector, the App Proxy service, and Azure AD.
2. The admin signs into the Azure portal and runs an executable to install the connector on an on-premises
Windows server.
3. The connector starts to "listen" to the App Proxy service.
4. The admin adds the on-premises application to Azure AD and configures settings such as the URLs users need
to connect to their apps.
For more information, see Plan an Azure AD Application Proxy deployment.
It's recommended that you always deploy multiple connectors for redundancy and scale. The connectors, in
conjunction with the service, take care of all the high availability tasks and can be added or removed dynamically.
Each time a new request arrives it's routed to one of the connectors that is available. When a connector is running,
it remains active as it connects to the service. If a connector is temporarily unavailable, it doesn't respond to this
traffic. Unused connectors are tagged as inactive and removed after 10 days of inactivity.
Connectors also poll the server to find out if there is a newer version of the connector. Although you can do a
manual update, connectors will update automatically as long as the Application Proxy Connector Updater service
is running. For tenants with multiple connectors, the automatic updates target one connector at a time in each
group to prevent downtime in your environment.
Note: You can monitor the Application Proxy version history page to be notified when updates have been released
by subscribing to its RSS feed.
Each Application Proxy connector is assigned to a connector group. Connectors in the same connector group act
as a single unit for high availability and load balancing. You can create new groups, assign connectors to them in
the Azure portal, then assign specific connectors to serve specific applications. It's recommended to have at least
two connectors in each connector group for high availability.
Connector groups are useful when you need to support the following scenarios:
Geographical app publishing
Application segmentation/isolation
Publishing web apps running in the cloud or on-premises
For more information about choosing where to install your connectors and optimizing your network, see Network
topology considerations when using Azure Active Directory Application Proxy.
Conclusion
The way we work and the tools we use are changing rapidly. With more employees bringing their own devices to
work and the pervasive use of Software-as-a-Service (SaaS ) applications, the way organizations manage and
secure their data must also evolve. Companies no longer operate solely within their own walls, protected by a
moat that surrounds their border. Data travels to more locations than ever before -- across both on-premises and
cloud environments. This evolution has helped increase users' productivity and ability to collaborate, but it also
makes protecting sensitive data more challenging.
Whether you're currently using Azure AD to manage users in a hybrid coexistence scenario or are interested in
starting your journey to the cloud, implementing Azure AD Application Proxy can help reduce the size of your on-
premises footprint by providing remote access as a service.
Organizations should begin taking advantage of App Proxy today to take advantage of the following benefits:
Publish on-premises apps externally without the overhead associated with maintaining traditional VPN or
other on-premises web publishing solutions and DMZ approach
Single sign-on to all applications, be they Office 365 or other SaaS apps and including on-premises
applications
Cloud scale security where Azure AD leverages Office 365 telemetry to prevent unauthorized access
Intune integration to ensure corporate traffic is authenticated
Centralization of user account management
Automatic updates to ensure you have the latest security patches
New features as they are released; the most recent being support for SAML single sign-on and more granular
management of application cookies
Next steps
For information about planning, operating, and managing Azure AD Application Proxy, see Plan an Azure AD
Application Proxy deployment.
To schedule a live demo or get a free 90-day trial for evaluation, see Getting started with Enterprise Mobility +
Security.
Quickstart: Add an application to your Azure Active
Directory tenant
7/24/2019 • 4 minutes to read • Edit Online
Azure Active Directory (Azure AD ) has a gallery that contains thousands of pre-integrated applications. Some of
the applications your organization uses are probably in the gallery. This quickstart uses the Azure portal to add a
gallery application to your Azure Active Directory (Azure AD ) tenant.
After an application is added to your Azure AD tenant, you can:
Manage user access to the application with a Conditional Access policy.
Configure users to single sign-on to the application with their Azure AD accounts.
5. To search for an application, under Add from the gallery, enter the name of the application you want to
add. Select the application from the results and select Add. The following example shows the Add app
form that appears after searching for github.com.
6. In the application-specific form, you can change property information. For example, you can edit the name
of the application to match the needs of your organization. This example uses the name GitHub-test.
7. When you've finished making changes to the properties, select Add.
8. A getting started page appears with the options for configuring the application for your organization.
You've finished adding your application. Feel free to take a break. The next sections show you how to change the
logo and edit other properties for your application.
APPLICATION
PROPERTY ASSIGNED-USER
SETTINGS EXPERIENCE
Enabled for users User assignment Visible to users? Can assigned users Can assigned users
to sign-in? required? sign in? see the
application?*
yes no no yes no
no yes yes no no
no yes no no no
no no yes no no
no no no no no
APPLICATION
PROPERTY UNASSIGNED-USER
SETTINGS EXPERIENCE
Enabled for users User assignment Visible to users? Can unassigned Can unassigned
to sign in? required? users sign in? users see the
application?*
yes yes no no no
yes no no yes no
no yes yes no no
no yes no no no
no no yes no no
no no no no no
*Can the user see the application in the access panel and the Office 365 app launcher?
Next steps
Now that you've added the application to your Azure AD organization, choose a single sign-on method you want
to use and refer to the appropriate article below:
Configure SAML -based single sign-on
Configure password single sign-on
Configure linked sign-on
View your Azure Active Directory tenant applications
7/24/2019 • 2 minutes to read • Edit Online
This quickstart uses the Azure portal to view the applications in your Azure Active Directory (Azure AD ) tenant.
3. Try entering the first few letters of an application name. This example shows all the applications that start
with Sales.
Next steps
In this quickstart, you learned how to view the applications in your Azure AD tenant. You learned how to filter the
list of applications by application type, status, and visibility. You also learned how to search for a particular
application.
Now that you've found the application you were looking for, you can continue to Add more applications to your
tenant. Or, you can select the application to view or edit properties and configuration options. For example, you
could configure single sign-on.
Configure single sign-on
Tutorial: Add an on-premises application for
remote access through Application Proxy in Azure
Active Directory
9/3/2019 • 11 minutes to read • Edit Online
Azure Active Directory (Azure AD ) has an Application Proxy service that enables users to access on-
premises applications by signing in with their Azure AD account. This tutorial prepares your environment
for use with Application Proxy. Once your environment is ready, you'll use the Azure portal to add an on-
premises application to your Azure AD tenant.
This tutorial:
Opens ports for outbound traffic and allows access to specific URLs
Installs the connector on your Windows server, and registers it with Application Proxy
Verifies the connector installed and registered correctly
Adds an on-premises application to your Azure AD tenant
Verifies a test user can sign on to the application by using an Azure AD account
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
IMPORTANT
To provide the best-in-class encryption to our customers, the Application Proxy service limits access to only TLS 1.2
protocols. These changes were gradually rolled out and effective since August 31, 2019. Make sure that all your
client-server and browser-server combinations are updated to use TLS 1.2 to maintain connection to Application
Proxy service. These include clients your users are using to access applications published through Application Proxy.
See Preparing for TLS 1.2 in Office 365 for useful references and resources.
If your firewall enforces traffic according to originating users, also open ports 80 and 443 for traffic from
Windows services that run as a Network Service.
Allow access to URLs
Allow access to the following URLs:
You can allow connections to *.msappproxy.net and *.servicebus.windows.net if your firewall or proxy lets
you configure DNS allow lists. If not, you need to allow access to the Azure IP ranges and Service Tags -
Public Cloud. The IP ranges are updated each week.
For more help with installing a connector, see Problem installing the Application Proxy Connector.
Verify the installation through your Windows server
To confirm the connector installed and registered correctly:
1. Open the Windows Services Manager by clicking the Windows key and entering services.msc.
2. Check to see if the status for the following two services is Running.
Microsoft AAD Application Proxy Connector enables connectivity.
Microsoft AAD Application Proxy Connector Updater is an automated update service.
The updater checks for new versions of the connector and updates the connector as needed.
3. If the status for the services isn't Running, right-click to select each service and choose Start.
Internal URL The URL for accessing the application from inside your
private network. You can provide a specific path on
the backend server to publish, while the rest of the
server is unpublished. In this way, you can publish
different sites on the same server as different apps,
and give each one its own name and access rules.
External URL The address for users to access the app from outside
your network. If you don't want to use the default
Application Proxy domain, read about custom domains
in Azure AD Application Proxy.
6. If necessary, configure Additional settings. For most applications, you should keep these settings in
their default states.
FIELD DESCRIPTION
Backend Application Timeout Set this value to Long only if your application is slow
to authenticate and connect. At default, the backend
application timeout has a length of 85 seconds. When
set to long, the backend timeout is increased to 180
seconds.
Use HTTP-Only Cookie Set this value to Yes to have Application Proxy cookies
include the HTTPOnly flag in the HTTP response
header. If using Remote Desktop Services, set this
value to No.
Use Secure Cookie Set this value to Yes to transmit cookies over a secure
channel such as an encrypted HTTPS request.
Use Persistent Cookie Keep this value set to No. Only use this setting for
applications that can't share cookies between
processes. For more information about cookie settings,
see Cookie settings for accessing on-premises
applications in Azure Active Directory.
Translate URLs in Headers Keep this value as Yes unless your application required
the original host header in the authentication request.
Translate URLs in Application Body Keep this value as No unless you have hardcoded
HTML links to other on-premises applications and
don't use custom domains. For more information, see
Link translation with Application Proxy.
7. Select Add.
Next steps
In this tutorial, you prepared your on-premises environment to work with Application Proxy, and then
installed and registered the Application Proxy connector. Next, you added an application to your Azure AD
tenant. You verified that a user can sign on to the application by using an Azure AD account.
You did these things:
Opened ports for outbound traffic and allowed access to specific URLs
Installed the connector on your Windows server, and registered it with Application Proxy
Verified the connector installed and registered correctly
Added an on-premises application to your Azure AD tenant
Verified a test user can sign on to the application by using an Azure AD account
You're ready to configure the application for single sign-on. Use the following link to choose a single sign-
on method and to find single sign-on tutorials.
Configure single sign-on
Integrating Azure Active Directory with applications
getting started guide
6/13/2019 • 3 minutes to read • Edit Online
This topic summarizes the process for integrating applications with Azure Active Directory (AD ). Each of the
sections below contain a brief summary of a more detailed topic so you can identify which parts of this getting
started guide are relevant to you.
To download in-depth deployment plans, see Next steps.
Take inventory
Before integrating applications with Azure AD, it is important to know where you are and where you want to go.
The following questions are intended to help you think about your Azure AD application integration project.
Application inventory
Where are all of your applications? Who owns them?
What kind of authentication do your applications require?
Who needs access to which applications?
Do you want to deploy a new application?
Will you build it in-house and deploy it on an Azure compute instance?
Will you use one that is available in the Azure Application Gallery?
User and group inventory
Where do your user accounts reside?
On-premises Active Directory
Azure AD
Within a separate application database that you own
In unsanctioned applications
All of the above
What permissions and role assignments do individual users currently have? Do you need to review their access
or are you sure that your user access and role assignments are appropriate now?
Are groups already established in your on-premises Active Directory?
How are your groups organized?
Who are the group members?
What permissions/role assignments do the groups currently have?
Will you need to clean up user/group databases before integrating? (This is a pretty important question.
Garbage in, garbage out.)
Access management inventory
How do you currently manage user access to applications? Does that need to change? Have you considered
other ways to manage access, such as with RBAC for example?
Who needs access to what?
Maybe you don't have the answers to all of these questions up front but that's okay. This guide can help you
answer some of those questions and make some informed decisions.
Find unsanctioned cloud applications with Cloud Discovery
As mentioned above, there may be applications that haven't been managed by your organization until now. As part
of the inventory process, it is possible to find unsanctioned cloud applications. See Set up Cloud Discovery.
Next steps
For in-depth information, you can download Azure Active Directory deployment plans from GitHub. For gallery
applications, you can download deployment plans for single sign-on, Conditional Access, and user provisioning
through the Azure portal.
To download a deployment plan from the Azure portal:
1. Sign in to the Azure portal.
2. Select Enterprise Applications | Pick an App | Deployment Plan.
Please provide feedback on deployment plans by taking the Deployment plan survey.
Plan an Azure Active Directory access panel
deployment
8/18/2019 • 16 minutes to read • Edit Online
The Azure Active Directory access panel is a web-based portal that enables you to lower support costs, increase
productivity and security, and reduce user frustration. The system includes detailed reporting that tracks when
users access the system, and notifies administrators to misuse or abuse.
The Azure Active Directory access panel enables users to:
Discover and access all their company’s Azure Active Directory connected resources, such as applications.
Request access to new apps and groups or manage access to these resources for others.
Manage self-service password resets and multi-factor authentication settings.
Manage their devices.
It also allows administrators to manage:
Terms of service
Organizations
Access reviews
AREA DESCRIPTION
User Experience Users are aware of the access panel capabilities and how to
use them.
User Experience Users can self-manage their access to applications and groups.
Determine the pilot group(s) Identify the Azure AD security group to be used and ensure all
pilot members are a part of the group.
Determine the group or groups to be enabled for production. Identify the Azure AD security group(s), or AD groups synced
to Azure AD, to be used. Ensure all pilot members are a part
of the group.
Allow users to use single sign on to what types of applications Federated SSO, OAuth, Password SSO, App Proxy
Allow users to use self-service group management for what Security groups, O365 groups
types of groups
The same applications will be shown in the Office 365 app launcher when users are using the Office 365 portal.
Plan the order in which you'll add applications to the My Apps launcher, and whether you'll roll them out gradually
or all at once. To do so, create an application inventory listing the type of authentication and any existing single
sign-on (SSO ) integrations for each application.
Add applications to the My Apps panel
Any Azure AD SSO -enabled application can be added to the My Apps launcher. Other applications are added by
using the Linked SSO option. You can configure an application tile that links to the URL of your existing web
application. Linked SSO allows you to start directing users to the My Apps portal without having to migrate all the
applications to Azure Active Directory SSO. You can gradually move to Azure AD SSO -configured applications
without disrupting the users' experience.
Plan whether to use My Apps or an existing portal
Your users may already have an application or portal other than My Apps. If so, decide whether to support both
portals, or if you will only use one.
If an existing portal is already being used as a starting point for users, you can integrate My Apps functionality by
using “user access URLs.” User access URLs function as direct links to the applications available in the My Apps
portal. These URLs can be embedded within any existing website. When a user clicks the link, it launches the
application from the My Apps portal.
You can find the User access URL property in the Properties area of the application in the Azure portal.
Plan self-service application discovery and access
Once a core set of applications are deployed to a user’s My Apps page, we recommend enabling self-service app
management features. Self-service app discovery enables:
Users to find new apps they may add to their My Apps.
Users to add optional apps that you may not know they need during setup.
Approval workflows are available for explicit approval to access applications. Users who are approvers will receive
notifications within the My Apps portal when there are pending request for access to the application.
GOVERNANCE AND
MANAGE RISK INCREASE PRODUCTIVITY COMPLIANCE
Report types Application permissions and Account provisioning activity Review who is accessing the
usage. applications
Potential actions Audit access; revoke Remediate any provisioning Revoke access
permissions errors
Azure AD keeps most auditing data for 30 days. The data is available via Azure Admin Portal or API for you to
download into your analysis systems.
Auditing
Audit logs for application access are available for 30 days. If security auditing within your enterprise requires
longer retention, the logs need to be exported into a Security Information Event and Management (SIEM ) tool
such as Splunk or ArcSight.
For auditing, reporting, and disaster recovery backups, document the required frequency of download, the target
system is, and who is responsible for managing each backup. You may not need separate auditing and reporting
backups. Your disaster recovery backup should be a separate entity.
User signs in into the My Apps portal User can sign in and see their applications
User launches a federated SSO application User is automatically signed into the application
User launches a password SSO application for the first time User needs to install the My Apps extension
User launches a password SSO application a subsequent time User is automatically signed into the application
User launches an app from O365 Portal User is automatically signed into the application
User launches an app from the Managed Browser User is automatically signed into the application
User can manage membership to the application User can add/remove members who have access to the app
User can edit the application User can edit the application’s description and credentials for
password SSO applications
Rollback steps
It’s important to plan what to do in case your deployment doesn’t go as planned. If SSO configuration fails during
deployment, you must understand how to troubleshoot SSO issues and reduce impact to your users. In extreme
circumstances, you may need to rollback SSO.
We recommend using Privileged Identity Management to manage your roles to provide additional auditing,
control, and access review for users with directory permissions.
Troubleshoot access panel issues
Create troubleshooting guides for your support organization with common scenarios and pointing to Microsoft
documentation on their resolutions. You may want to create guides that break support into the tiers used by your
organization.
See the below troubleshooting guides for reference:
Applications not appearing
Unexpected applications appearing
User cannot sign in to the access panel
Problems using self-service application access
Issues with the browser extension
Next steps
Plan a deployment of Azure Active Directory Multi-factor authentication
Develop line-of-business apps for Azure Active
Directory
6/13/2019 • 2 minutes to read • Edit Online
This guide provides an overview of developing line-of-business (LoB ) applications for Azure Active Directory
(AD ).The intended audience is Active Directory/Office 365 global administrators.
Overview
Building applications integrated with Azure AD gives users in your organization single sign-on with Office 365.
Having the application in Azure AD gives you control over the authentication policy for the application. To learn
more about Conditional Access and how to protect apps with multi-factor authentication (MFA) see Configuring
access rules.
Register your application to use Azure Active Directory. Registering the application means that your developers
can use Azure AD to authenticate users and request access to user resources such as email, calendar, and
documents.
Any member of your directory (not guests) can register an application, otherwise known as creating an application
object.
Registering an application allows any user to do the following:
Get an identity for their application that Azure AD recognizes
Get one or more secrets/keys that the application can use to authenticate itself to AD
Brand the application in the Azure portal with a custom name, logo, etc.
Apply Azure AD authorization features to their app, including:
Role-Based Access Control (RBAC )
Azure Active Directory as oAuth authorization server (secure an API exposed by the application)
Declare required permissions necessary for the application to function as expected, including:
App permissions (global administrators only). For example: Role membership in another Azure AD
application or role membership relative to an Azure Resource, Resource Group, or Subscription
Delegated permissions (any user). For example: Azure AD, Sign-in, and Read Profile
NOTE
By default, any member can register an application. To learn how to restrict permissions for registering applications to specific
members, see How applications are added to Azure AD.
Here’s what you, the global administrator, need to do to help developers make their application ready for
production:
Configure access rules (access policy/MFA)
Configure the app to require user assignment and assign users
Suppress the default user consent experience
Configure access rules
Configure per-application access rules to your SaaS apps. For example, you can require MFA or only allow access
to users on trusted networks. The details for this are available in the document Configuring access rules.
Related Articles
Enable secure remote access to on-premises applications with Azure AD Application Proxy
Managing access to apps with Azure AD
Single sign-on to applications in Azure Active
Directory
7/24/2019 • 10 minutes to read • Edit Online
Single sign-on (SSO ) adds security and convenience when users sign-on to applications in Azure Active
Directory (Azure AD ). This article describes the single sign-on methods, and helps you choose the most
appropriate SSO method when configuring your applications.
With single sign-on, users sign in once with one account to access domain-joined devices, company
resources, software as a service (SaaS ) applications, and web applications. After signing in, the user can
launch applications from the Office 365 portal or the Azure AD MyApps access panel. Administrators can
centralize user account management, and automatically add or remove user access to applications based
on group membership.
Without single sign-on, users must remember application-specific passwords and sign in to each
application. IT staff needs to create and update user accounts for each application such as Office 365, Box,
and Salesforce. Users need to remember their passwords, plus spend the time to sign in to each
application.
OpenID Connect and OAuth cloud only Use OpenID Connect and OAuth when
developing a new application. This
protocol simplifies application
configuration, has easy-to-use SDKs,
and enables your application to use
MS Graph.
Integrated Windows Authentication on-premises only Choose IWA single sign-on for
(IWA) applications that use Integrated
Windows Authentication (IWA), or
claims-aware applications. For IWA, the
Application Proxy connectors use
Kerberos Constrained Delegation
(KCD) to authenticate users to the
application.
SAML SSO
With SAML single sign-on, Azure AD authenticates to the application by using the user's Azure AD account.
Azure AD communicates the sign-on information to the application through a connection protocol. With SAML -
based single sign-on, you can map users to specific application roles based on rules you define in your SAML
claims.
Choose SAML -based single sign-on when the application supports it.
SAML -based single sign-on is supported for applications that use any of these protocols:
SAML 2.0
WS -Federation
To configure a SaaS application for SAML -based single sign-on, see Configure SAML -based single sign-on.
Also, many Software as a Service (SaaS ) applications have an application-specific tutorial that step you through
the configuration for SAML -based single sign-on.
To configure an application for WS -Federation, follow the same guidance to configure application for SAML -
based single sign-on, see Configure SAML -based single sign-on. In the step to configure the application to use
Azure AD, you will need to replace the Azure AD login URL for the WS -Federation end-point
https://login.microsoftonline.com/<tenant-ID>/wsfed .
To configure an on-premises application for SAML -based single sign-on, see SAML single-sign-on for on-
premises applications with Application Proxy.
For more information about the SAML protocol, see Single sign-on SAML protocol.
Password-based SSO
With password-based sign-on, users sign on to the application with a username and password the first time
they access it. After the first sign-on, Azure AD supplies the username and password to the application.
Password-based single sign-on uses the existing authentication process provided by the application. When you
enable password single sign-on for an application, Azure AD collects and securely stores user names and
passwords for the application. User credentials are stored in an encrypted state in the directory.
Choose password-based single sign-on when:
An application doesn't support SAML single sign-on protocol.
An application authenticates with a username and password instead of access tokens and headers.
Password-based single sign-on is supported for any cloud-based application that has an HTML -based sign-in
page. The user can use any of the following browsers:
Internet Explorer 11 on Windows 7 or later
NOTE
Internet Explorer is on limited support and no longer receives new software updates. Microsoft Edge is the
recommended browser.
IMPORTANT
The credentials are obfuscated from the user during the automated sign-on process. However, the credentials are
discoverable by using web-debugging tools. Users and administrators need to follow the same security policies as if
credentials were entered directly by the user.
Linked sign-on
Linked sign-on enables Azure AD to provide single sign-on to an application that is already configured for
single sign-on in another service. The linked application can appear to end users in the Office 365 portal or
Azure AD MyApps portal. For example, a user can launch an application that is configured for single sign-on in
Active Directory Federation Services 2.0 (AD FS ) from the Office 365 portal. Additional reporting is also
available for linked applications that are launched from the Office 365 portal or the Azure AD MyApps portal.
To configure an application for linked sign-on, see Configure linked sign-on.
Linked sign-on for application migration
Linked sign-on can provide a consistent user experience while you migrate applications over a period of time. If
you're migrating applications to Azure Active Directory, you can use linked sign-on to quickly publish links to all
the applications you intend to migrate. Users can find all the links in the MyApps portal or the Office 365
application launcher. Users won't know they're accessing a linked application or a migrated application.
Once a user has authenticated with a linked application, an account record needs to be created before the end
user is provided single sign-on access. Provisioning this account record can either occur automatically, or it can
occur manually by an administrator.
Disabled SSO
Disabled mode means single sign-on isn't used for the application. When single sign-on is disabled, users might
need to authenticate twice. First, users authenticate to Azure AD, and then they sign in to the application.
Use disabled single sign-on mode:
If you're not ready to integrate this application with Azure AD single sign-on, or
If you're testing other aspects of the application, or
As a layer of security to an on-premises application that doesn't require users to authenticate. With disabled,
the user needs to authenticate.
1. The user enters the URL to access the on premises application through Application Proxy.
2. Application Proxy redirects the request to Azure AD authentication services to preauthenticate. At this point,
Azure AD applies any applicable authentication and authorization policies, such as multifactor authentication.
If the user is validated, Azure AD creates a token and sends it to the user.
3. The user passes the token to Application Proxy.
4. Application Proxy validates the token and retrieves the User Principal Name (UPN ) from the token. It then
sends the request, the UPN, and the Service Principal Name (SPN ) to the Connector through a dually
authenticated secure channel.
5. The connector uses Kerberos Constrained Delegation (KCD ) negotiation with the on premises AD,
impersonating the user to get a Kerberos token to the application.
6. Active Directory sends the Kerberos token for the application to the connector.
7. The connector sends the original request to the application server, using the Kerberos token it received from
AD.
8. The application sends the response to the connector, which is then returned to the Application Proxy service
and finally to the user.
Header-based SSO
Header-based single sign-on works for applications that use HTTP headers for authentication. This sign-on
method uses a third-party authentication service called PingAccess. A user only needs to authenticate to Azure
AD.
Choose header-based single sign-on when Application Proxy and PingAccess are configured for the application.
To configure header-based authentication, see Header-based authentication for single sign-on with Application
Proxy.
What is PingAccess for Azure AD?
Using PingAccess for Azure AD, users can access and single sign-on to applications that use headers for
authentication. Application Proxy treats these applications like any other, using Azure AD to authenticate access
and then passing traffic through the connector service. After authentication occurs, the PingAccess service
translates the Azure AD access token into a header format that is sent to the application.
Your users won’t notice anything different when they sign in to use your corporate applications. They can still
work from anywhere on any device. The Application Proxy connectors direct remote traffic to all applications,
and they’ll continue to load balance automatically.
How do I get a license for PingAccess?
Since this scenario is offered through a partnership between Azure AD and PingAccess, you need licenses for
both services. However, Azure AD Premium subscriptions include a basic PingAccess license that covers up to
20 applications. If you need to publish more than 20 header-based applications, you can acquire an additional
license from PingAccess.
For more information, see Azure Active Directory editions.
Related articles
Tutorials for integrating SaaS applications with Azure Active Directory
Configuring SAML -based single sign-on
Configuring password-based single sign on
Configuring linked sign-on
Introduction to Managing Access to applications
Download link: Single sign-on deployment plan.
Enable Single Sign-on for your multi-tenant
application
7/10/2019 • 2 minutes to read • Edit Online
When you offer your application for use by other companies through a purchase or subscription, you make your
application available to customers within their own Azure tenants. This is known as creating a multi-tenant
application. For overview of this concept, see Multitenant Applications in Azure and Tenancy in Azure Active
Directory.
To provide access to your multi-tenant application you must create an Azure Active Directory tenant to register the
application and enable the federation of your customer’s identities. See Choosing the right federation protocol for
your multi-tenant application. This tenant will allow you to test your application and the federation in an
environment that is similar to your customers Azure AD environments.
Next Steps
Integrate SSO in your application
Choose the right federation protocol for your multi-
tenant application
8/12/2019 • 3 minutes to read • Edit Online
When you develop your software as a service (SaaS ) application, you must select the federation protocol that best
meets your and your customers’ needs. This decision is based on your development platform, and your desire to
integrate with data available within your customers’ Office 365 and Azure AD ecosystem.
See the complete list of protocols available for SSO integrations with Azure Active Directory. The following table
compares
Open Authentication 2.0 (OAuth 2.0)
Open ID Connect (OIDC )
Security Assertion Markup Language (SAML )
Web Services Federation (WSFed)
Next Steps
Enable SSO for your multi-tenant application
Create documentation for your multi-tenant application
Create and publish single sign-on documentation for
your application
7/8/2019 • 2 minutes to read • Edit Online
Next Steps
List your application in the Azure AD Application Gallery
Plan a single sign-on deployment
8/4/2019 • 18 minutes to read • Edit Online
Single sign-on (SSO ) means accessing all applications and resources a user needs by signing in only once using a
single user account. With SSO, users can access all needed applications without being required to authenticate a
second time.
Benefits of SSO
Single sign-on (SSO ) adds security and convenience when users sign on to applications in Azure Active Directory
(Azure AD ).
Many organizations rely on software as a service (SaaS ) applications, such as Office 365, Box, and Salesforce, for
end user productivity. Historically, IT staff needed to individually create and update user accounts in each SaaS
application, and users needed to remember a password for each.
The Azure Marketplace has over 3000 applications with pre-integrated SSO connections, making it easy to
integrate them in your tenant.
Licensing
Azure AD licensing - SSO for pre-integrated SaaS applications is free. However, the number of objects in
your directory and the features you wish to deploy may require additional licenses. For a full list of license
requirements, see Azure Active Directory Pricing.
Application licensing - You'll need the appropriate licenses for your SaaS applications to meet your business
needs. Work with the application owner to determine whether the users assigned to the application have the
appropriate licenses for their roles within the application. If Azure AD manages the automatic provisioning
based on roles, the roles assigned in Azure AD must align with the number of licenses owned within the
application. Improper number of licenses owned in the application may lead to errors during the
provisioning/updating of a user.
Use to review Application permissions and Potentially compromised Who is accessing the
usage. accounts applications
Potential actions Audit access; revoke Revoke access; force security Revoke access
permissions reset
Azure AD retains most auditing data for 30 days and makes the data available through the Azure admin portal or
through an API for you to download into your analysis systems.
Consider using Microsoft Cloud Application Security
Microsoft Cloud App Security (MCAS ) is a Cloud Access Security Broker (CASB ) solution. It gives you visibility
into your cloud apps and services, provides sophisticated analytics to identify and combat cyberthreats, and
enables you to control how your data travels.
Deploying MCAS enables you to:
Use Cloud Discovery to map and identify your cloud environment and the cloud apps your organization is
using.
Sanctioning and un-sanction apps in your cloud
Use easy-to-deploy app connectors that take advantage of provider APIs, for visibility and governance of apps
that you connect to
Use Conditional Access App Control protection to get real-time visibility and control over access and activities
within your cloud apps
Helps you have continuous control by setting, and then continually fine-tuning, policies.
Microsoft Cloud Application Security (MCAS ) Session control is available for any browser on any major platform
on any operating system. Mobile apps and desktop apps can also be blocked or allowed. By natively integrating
with Azure AD, any apps that are configured with SAML, or Open ID Connect apps with single sign-on in Azure
AD can be supported, including several featured apps.
For information about MCAS, see the Microsoft Cloud App Security overview. MCAS is a user-based subscription
service. You can review licensing details in the MCAS licensing datasheet.
Use Conditional Access
With Conditional Access, you can automate criteria-based access control decisions for your cloud apps.
Conditional Access policies are enforced after the first-factor authentication has been completed. Therefore,
Conditional Access is not intended as a first line defense for scenarios like denial-of-service (DoS ) attacks, but can
use signals from these events to determine access. For example the sign-in risk level, location of the request, and
so on can be used. For more information about Conditional Access, see the overview and the deployment plan.
Implement SSO
Use the following phases to plan for and deploy your solution in your organization:
User configuration for SSO
Identify your test users
Contact to the app owner and ask them to create a minimum of three test users within the application.
Ensure the information that you'll use as the primary identifier is populated correctly and matches an
attribute that is available in Azure AD. In most cases this will map to the “NameID” for SAML -based
applications. For JWT tokens, it's the “preferred_username.”
Create the user in Azure AD either manually as a cloud-based user or sync the user from on-premises using
the Azure AD Connect sync engine. Ensure the information matches the claims being sent to the application.
Configure SSO
From the list of applications, locate and open the SSO tutorial for your application, then follow the tutorial’s
steps on to successfully configure your SaaS application.
If you can’t locate your application, see Custom Application documentation. This will walk you through on
how to add an application that is not located in the Azure AD gallery.
Optionally, you can use claims issued in the SAML token for the enterprise application using Microsoft’s
guidance documentation. Ensure this maps to what you expect to receive in the SAML response for your
application. If you encounter issues during configuration, use our guidance on how to Debug SSO
integration.
Custom application onboarding is an Azure AD Premium P1 or P2 licenses feature.
Provide SSO change communications to end users
Implement your communication plan. Make sure you're letting your end users know that a change is coming, when
it has arrived, what to do now, and how to seek assistance.
Verify end user scenarios for SSO
You can use the following test cases to conduct tests on corporate-owned and personal devices to ensure your
SSO configurations are working as expected. The scenarios below assume that a user is navigating to an
application URL and going through an authentication flow initiated by the service provider (SP -initiated auth flow ).
Login to application with IE while on corpnet. Integrated Windows Authentication (IWA) occurs with no
additional prompts.
Login to application with IE while off corpnet with new login Forms-based prompt at AD FS Server. User successfully logs in
attempt. and browser prompts for MFA.
Login to application with IE while off corpnet with a current User does not receive prompt for first factor. User receives
session and has never performed MFA. prompt for MFA.
Login to application with IE while off corpnet with a current User does not receive prompt for first factor. User does not
session and has already performed MFA in this session. receive MFA. User SSOs into application.
Login to application with Chrome/Firefox/Safari while off User does not receive prompt for first factor. User does not
corpnet with a current session and has already performed receive MFA. User SSO’s into application.
MFA in this session.
Login to into application with Chrome/Firefox/Safari while off Forms-based prompt at AD FS Server. User successfully logs in
corpnet with new login attempt. and browser prompts for MFA.
Login to application with Chrome/Firefox while on corporate User does not receive prompt for first factor. User does not
network with a current session. receive MFA. User SSO’s into application.
Login to application with application mobile app with a new Forms-based prompt at AD FS Server. User successfully logs in
login attempt. and ADAL client prompts for MFA.
Unauthorized user attempts to log into application with login Forms-based prompt at AD FS Server. User fails to login with
URL. first factor.
Authorized user attempts to log in but enters an incorrect User navigates to application URL and receives bad
password. username/password error.
Authorized user clicks on link in an email and is already User clicks on URL and is signed into the application with no
authenticated. additional prompts.
Authorized user clicks on link in an email and is not yet User clicks on URL and is prompt to authenticate with first
authenticated. factor.
Authorized User logs into application with application mobile Forms-based prompt at AD FS Server. User successfully logs in
app (SP-initiated) with a new login attempt. and ADAL client prompts for MFA.
Unauthorized User attempts to log into application with login Forms-based prompt at AD FS Server. User fails to login with
URL (SP-initiated). first factor.
Authorized user attempts to log in but enters an incorrect User navigates to application URL and receives bad
password. username/password error.
SCENARIO EXPECTED RESULT ON SP-INITIATED AUTH FLOW BY USER
Authorized user logs out and then logs in again. If Sign-out URL is configured, user is logged out of all services
and prompt to authenticate.
Authorized user logs out and then logs in again. If Sign-out URL is not configured, user will be automatically
logged back in using existing token from the existing Azure
AD browser session.
Authorized user clicks on link in an email and is already User clicks on URL and is signed into the application with no
authenticated. additional prompts.
Authorized user clicks on link in an email and is not yet User clicks on URL and is prompt to authenticate with first
authenticated. factor.
Manage SSO
This section outlines the requirements and recommendations to successfully manage SSO.
Required administrative roles
Always use the role with the fewest permissions available to accomplish the required task within Azure Active
Directory. Microsoft recommends review the different roles that are available and choose the right one to solve
your needs for each persona for this application. Some roles may need to be applied temporarily and removed
after the deployment has been completed.
We recommend using Privileged Identity Management (PIM ) to manage your roles to provide additional auditing,
control, and access review for users with directory permissions.
SSO certificate lifecycle management
It’s important to identify the right roles and email distribution lists tasked with managing the lifecycle of the
signing certificate between Azure AD and the application that is being configured with single sign-on. Here are
some of the key roles we recommend having in place:
Owner for updating user properties in application
Owner On-Call for application break/fix support
Closely monitored email distribution list for certificate-related change notifications
The maximum lifetime of a certificate is three years. We recommend establishing a process on how you'll handle a
certificate change between Azure AD and your application. This can help prevent or minimize an outage due to a
certificate expiring or force certificate rollover.
Rollback process
After you complete testing based on your test cases, it’s time to move into production with your application.
Moving to production means you will implement your planned and tested configurations in your production
tenant and roll it out to your users. However, it's important to plan what to do in case your deployment doesn’t go
as planned. If the SSO configuration fails during the deployment, you must understand how to mitigate any
outage and reduce impact to your users.
The availability of authentication methods within the application will determine your best strategy. Always ensure
you have detailed documentation for app owners on exactly how to get back to the original login configuration
state in case your deployment runs into issues.
If your app supports multiple identity providers, for example LDAP and AD FS and Ping, do not delete
the existing SSO configuration during rollout. Instead, disable it during migration in case you need to switch
it back later.
If your app does not support multiple IDPs but allows users to log in using forms-based authentication
(username/password), ensure that users can fall back to this approach in case the new SSO configuration
rollout fails.
Access management
We recommend choosing a scaled approach when managing access to resources. Common approaches include
utilizing on-premises groups by syncing via Azure AD Connect, creating Dynamic Groups in Azure AD based on
user attributes, or creating self-service groups in Azure AD managed by a resource owner.
Monitor security
We recommend setting up a regular cadence in which you review the different aspects of SaaS app security and
perform any remedial actions that are required.
Troubleshooting
The following links present troubleshooting scenarios. You may want to create a specific guide for your support
staff that incorporates these scenarios and the steps to fix them.
Consent issues
Unexpected consent error
User consent error
Sign-in issues
Problems signing in from a custom portal
Problems signing in from access panel
Error on application sign-in page
Problem signing into a Microsoft application
SSO issues for applications listed in the Azure Application Gallery
Problem with password SSO for applications listed in the Azure Application Gallery
Problem with federated SSO for applications listed in the Azure Application Gallery
SSO issues for applications NOT listed in the Azure Application Gallery
Problem with password SSO for applications NOT listed in the Azure Application Gallery
Problem with federated SSO for applications NOT listed in the Azure Application Gallery
Next steps
Debug SAML -based SSO
Claim mapping for Apps via PowerShell
Customizing claims issued in SAML token
Single Sign-on SAML protocol
Single Sign-Out SAML protocol
Azure AD B2B (for external users such as partners and vendors)
Azure AD Conditional Access
Azure Identity Protection
SSO access
Application SSO Tutorial
One-click app configuration of single sign-on
7/14/2019 • 2 minutes to read • Edit Online
In this tutorial, you learn how to perform one-click, single sign-on (SSO ) configuration for SAML -supporting,
Azure Active Directory (Azure AD ) applications from the Azure Marketplace.
Prerequisites
An active subscription of the application to configure with SSO. You also need admin credentials.
The My Apps Secure Sign-in extension from Microsoft installed in the browser. For more information, see
Access and use apps on the My Apps portal.
NOTE
If the application has custom claims that you need to configure, handle them before performing one-click SSO.
5. If the one-click SSO feature is available for your Azure Marketplace application, you see following screen.
You might have to install the My Apps Secure Sign-in browser extension by selecting Install the
extension.
6. After you add the extension to the browser, select Setup <Application Name>. After you're redirected to
the application admin portal, sign in as an administrator.
7. The browser extension automatically configures SSO on the application. Confirm by selecting Yes.
NOTE
If SSO configuration for your application requires additional steps, following the prompts to perform the steps.
9. A confirmation window displays to let you know that the SSO settings are successfully configured.
10. After the configuration is successful, you're signed out of the application and returned to the Azure portal.
11. You can select Test to test single sign-on.
Additional resources
List of tutorials on how to integrate SaaS apps with Azure Active Directory
What is the My Apps Secure Sign-in browser extension?
Managing access to apps
7/24/2019 • 4 minutes to read • Edit Online
Ongoing access management, usage evaluation, and reporting continue to be a challenge after an app is
integrated into your organization's identity system. In many cases, IT Administrators or helpdesk have to take an
ongoing active role in managing access to your apps. Sometimes, assignment is performed by a general or
divisional IT team. Often, the assignment decision is intended to be delegated to the business decision maker,
requiring their approval before IT makes the assignment. Other organizations invest in integration with an
existing automated identity and access management system, like Role-Based Access Control (RBAC ) or Attribute-
Based Access Control (ABAC ). Both the integration and rule development tend to be specialized and expensive.
Monitoring or reporting on either management approach is its own separate, costly, and complex investment.
Next steps
Protecting apps with Conditional Access
Self-service group management/SSAA
Advanced certificate signing options in the SAML
token for gallery apps in Azure Active Directory
7/22/2019 • 3 minutes to read • Edit Online
Today Azure Active Directory (Azure AD ) supports thousands of pre-integrated applications in the Azure Active
Directory App Gallery. Over 500 of the applications support single sign-on by using the Security Assertion
Markup Language (SAML ) 2.0 protocol, such as the NetSuite application. When a customer authenticates to an
application through Azure AD by using SAML, Azure AD sends a token to the application (via an HTTP POST).
The application then validates and uses the token to sign in the customer instead of prompting for a username and
password. These SAML tokens are signed with the unique certificate that's generated in Azure AD and by specific
standard algorithms.
Azure AD uses some of the default settings for the gallery applications. The default values are set up based on the
application's requirements.
In Azure AD, you can set up certificate signing options and the certificate signing algorithm.
Next, change the certificate signing options in the SAML token for that application:
1. In the left pane of the application overview page, select Single sign-on.
2. If the Set up Single Sign-On with SAML - Preview page appears, go to step 5.
3. If the Select a single sign-on method page doesn't appear, select Change single sign-on modes to
display that page.
4. In the Select a single sign-on method page, select SAML if available. (If SAML isn't available, the
application doesn't support SAML, and you may ignore the rest of this procedure and article.)
5. In the Set up Single Sign-On with SAML - Preview page, find the SAML Signing Certificate heading
and select the Edit icon (a pencil). The SAML Signing Certificate page appears.
6. In the Signing Option drop-down list, choose Sign SAML response, Sign SAML assertion, or Sign
SAML response and assertion. Descriptions of these options appear earlier in this article in the Certificate
signing options.
7. In the Signing Algorithm drop-down list, choose SHA -1 or SHA -256. Descriptions of these options
appear earlier in this article in the Certificate signing algorithms section.
8. If you're satisfied with your choices, select Save to apply the new SAML signing certificate settings.
Otherwise, select the X to discard the changes.
Next steps
Configure single sign-on to applications that are not in the Azure Active Directory App Gallery
Troubleshoot SAML -based single sign-on
Manage certificates for federated single sign-on in
Azure Active Directory
7/9/2019 • 6 minutes to read • Edit Online
In this article, we cover common questions and information related to certificates that Azure Active Directory
(Azure AD ) creates to establish federated single sign-on (SSO ) to your software as a service (SaaS ) applications.
Add applications from the Azure AD app gallery or by using a non-gallery application template. Configure the
application by using the federated SSO option.
This article is relevant only to apps that are configured to use Azure AD SSO through Security Assertion Markup
Language (SAML ) federation.
You can also download an active or inactive certificate by selecting the SAML Signing Certificate heading's Edit
icon (a pencil), which displays the SAML Signing Certificate page. Select the ellipsis (...) next to the certificate
you want to download, and then choose which certificate format you want. You have the additional option to
download the certificate in privacy-enhanced mail (PEM ) format. This format is identical to Base64 but with a
.pem file name extension, which isn't recognized in Windows as a certificate format.
Customize the expiration date for your federation certificate and roll it
over to a new certificate
By default, Azure configures a certificate to expire after three years when it is created automatically during SAML
single sign-on configuration. Because you can't change the date of a certificate after you save it, you have to:
1. Create a new certificate with the desired date.
2. Save the new certificate.
3. Download the new certificate in the correct format.
4. Upload the new certificate to the application.
5. Make the new certificate active in the Azure Active Directory portal.
The following two sections help you perform these steps.
Create a new certificate
First, create and save new certificate with a different expiration date:
1. Sign in to the Azure Active Directory portal. The Azure Active Directory admin center page appears.
2. In the left pane, select Enterprise applications. A list of the enterprise applications in your account appears.
3. Select the affected application. An overview page for the application appears.
4. In the left pane of the application overview page, select Single sign-on.
5. If the Select a single sign-on method page appears, select SAML.
6. In the Set up Single Sign-On with SAML - Preview page, find the SAML Signing Certificate heading and
select the Edit icon (a pencil). The SAML Signing Certificate page appears, which displays the status (Active
or Inactive), expiration date, and thumbprint (a hash string) of each certificate.
7. Select New Certificate. A new row appears below the certificate list, where the expiration date defaults to
exactly three years after the current date. (Your changes haven't been saved yet, so you can still modify the
expiration date.)
8. In the new certificate row, hover over the expiration date column and select the Select Date icon (a calendar).
A calendar control appears, displaying the days of a month of the new row's current expiration date.
9. Use the calendar control to set a new date. You can set any date between the current date and three years after
the current date.
10. Select Save. The new certificate now appears with a status of Inactive, the expiration date that you chose, and
a thumbprint.
11. Select the X to return to the Set up Single Sign-On with SAML - Preview page.
Upload and activate a certificate
Next, download the new certificate in the correct format, upload it to the application, and make it active in Azure
Active Directory:
1. View the application's additional SAML sign-on configuration instructions by either:
Selecting the configuration guide link to view in a separate browser window or tab, or
Going to the set up heading and selecting View step-by-step instructions to view in a sidebar.
2. In the instructions, note the encoding format required for the certificate upload.
3. Follow the instructions in the Auto-generated certificate for gallery and non-gallery applications section
earlier. This step downloads the certificate in the encoding format required for upload by the application.
4. When you want to roll over to the new certificate, go back to the SAML Signing Certificate page, and in
the newly saved certificate row, select the ellipsis (...) and select Make certificate active. The status of the
new certificate changes to Active, and the previously active certificate changes to a status of Inactive.
5. Continue following the application's SAML sign-on configuration instructions that you displayed earlier, so
that you can upload the SAML signing certificate in the correct encoding format.
Related articles
Tutorials for integrating SaaS applications with Azure Active Directory
Application management with Azure Active Directory
Single sign-on to applications in Azure Active Directory
Debug SAML -based single sign-on to applications in Azure Active Directory
Use tenant restrictions to manage access to SaaS
cloud applications
5/16/2019 • 8 minutes to read • Edit Online
Large organizations that emphasize security want to move to cloud services like Office 365, but need to know that
their users only can access approved resources. Traditionally, companies restrict domain names or IP addresses
when they want to manage access. This approach fails in a world where software as a service (or SaaS ) apps are
hosted in a public cloud, running on shared domain names like outlook.office.com and login.microsoftonline.com.
Blocking these addresses would keep users from accessing Outlook on the web entirely, instead of merely
restricting them to approved identities and resources.
The Azure Active Directory (Azure AD ) solution to this challenge is a feature called tenant restrictions. With tenant
restrictions, organizations can control access to SaaS cloud applications, based on the Azure AD tenant the
applications use for single sign-on. For example, you may want to allow access to your organization’s Office 365
applications, while preventing access to other organizations’ instances of these same applications.
With tenant restrictions, organizations can specify the list of tenants that their users are permitted to access. Azure
AD then only grants access to these permitted tenants.
This article focuses on tenant restrictions for Office 365, but the feature should work with any SaaS cloud app that
uses modern authentication protocols with Azure AD for single sign-on. If you use SaaS apps with a different
Azure AD tenant from the tenant used by Office 365, make sure that all required tenants are permitted. For more
information about SaaS cloud apps, see the Active Directory Marketplace.
How it works
The overall solution comprises the following components:
1. Azure AD: If the Restrict-Access-To-Tenants: <permitted tenant list> is present, Azure AD only issues
security tokens for the permitted tenants.
2. On-premises proxy server infrastructure: This infrastructure is a proxy device capable of Secure Sockets
Layer (SSL ) inspection. You must configure the proxy to insert the header containing the list of permitted
tenants into traffic destined for Azure AD.
3. Client software: To support tenant restrictions, client software must request tokens directly from Azure AD,
so that the proxy infrastructure can intercept traffic. Browser-based Office 365 applications currently
support tenant restrictions, as do Office clients that use modern authentication (like OAuth 2.0).
4. Modern Authentication: Cloud services must use modern authentication to use tenant restrictions and
block access to all non-permitted tenants. You must configure Office 365 cloud services to use modern
authentication protocols by default. For the latest information on Office 365 support for modern
authentication, read Updated Office 365 modern authentication.
The following diagram illustrates the high-level traffic flow. Tenant restrictions requires SSL inspection only on
traffic to Azure AD, not to the Office 365 cloud services. This distinction is important, because the traffic volume for
authentication to Azure AD is typically much lower than traffic volume to SaaS applications like Exchange Online
and SharePoint Online.
Set up tenant restrictions
There are two steps to get started with tenant restrictions. First, make sure that your clients can connect to the right
addresses. Second, configure your proxy infrastructure.
URLs and IP addresses
To use tenant restrictions, your clients must be able to connect to the following Azure AD URLs to authenticate:
login.microsoftonline.com, login.microsoft.com, and login.windows.net. Additionally, to access Office 365, your
clients must also be able to connect to the fully qualified domain names (FQDNs), URLs, and IP addresses defined
in Office 365 URLs and IP address ranges.
Proxy configuration and requirements
The following configuration is required to enable tenant restrictions through your proxy infrastructure. This
guidance is generic, so you should refer to your proxy vendor’s documentation for specific implementation steps.
Prerequisites
The proxy must be able to perform SSL interception, HTTP header insertion, and filter destinations using
FQDNs/URLs.
Clients must trust the certificate chain presented by the proxy for SSL communications. For example, if
certificates from an internal public key infrastructure (PKI) are used, the internal issuing root certificate
authority certificate must be trusted.
This feature is included in Office 365 subscriptions, but if you want to use tenant restrictions to control
access to other SaaS apps, then Azure AD Premium 1 licenses are required.
Configuration
For each incoming request to login.microsoftonline.com, login.microsoft.com, and login.windows.net, insert two
HTTP headers: Restrict-Access-To -Tenants and Restrict-Access-Context.
The headers should include the following elements:
For Restrict-Access-To -Tenants, use a value of <permitted tenant list>, which is a comma-separated list of
tenants you want to allow users to access. Any domain that is registered with a tenant can be used to
identify the tenant in this list. For example, to permit access to both Contoso and Fabrikam tenants, the
name/value pair looks like: Restrict-Access-To-Tenants: contoso.onmicrosoft.com,fabrikam.onmicrosoft.com
For Restrict-Access-Context, use a value of a single directory ID, declaring which tenant is setting the tenant
restrictions. For example, to declare Contoso as the tenant that set the tenant restrictions policy, the
name/value pair looks like: Restrict-Access-Context: 456ff232-35l2-5h23-b3b3-3236w0826f3d
TIP
You can find your directory ID in the Azure Active Directory portal. Sign in as an administrator, select Azure Active
Directory, then select Properties.
To prevent users from inserting their own HTTP header with non-approved tenants, the proxy needs to replace the
Restrict-Access-To -Tenants header if it is already present in the incoming request.
Clients must be forced to use the proxy for all requests to login.microsoftonline.com, login.microsoft.com, and
login.windows.net. For example, if PAC files are used to direct clients to use the proxy, end users shouldn't be able
to edit or disable the PAC files.
Testing
If you want to try out tenant restrictions before implementing it for your whole organization, you have two options:
a host-based approach using a tool like Fiddler, or a staged rollout of proxy settings.
Fiddler for a host-based approach
Fiddler is a free web debugging proxy that can be used to capture and modify HTTP/HTTPS traffic, including
inserting HTTP headers. To configure Fiddler to test tenant restrictions, perform the following steps:
1. Download and install Fiddler.
2. Configure Fiddler to decrypt HTTPS traffic, per Fiddler’s help documentation.
3. Configure Fiddler to insert the Restrict-Access-To -Tenants and Restrict-Access-Context headers using custom
rules:
a. In the Fiddler Web Debugger tool, select the Rules menu and select Customize Rules… to open the
CustomRules file.
b. Add the following lines at the beginning of the OnBeforeRequest function. Replace <tenant domain>
with a domain registered with your tenant (for example, contoso.onmicrosoft.com ). Replace
<directory ID> with your tenant's Azure AD GUID identifier.
if (
oSession.HostnameIs("login.microsoftonline.com") ||
oSession.HostnameIs("login.microsoft.com") ||
oSession.HostnameIs("login.windows.net")
)
{
oSession.oRequest["Restrict-Access-To-Tenants"] = "<tenant domain>";
oSession.oRequest["Restrict-Access-Context"] = "<directory ID>";
}
If you need to allow multiple tenants, use a comma to separate the tenant names. For example:
oSession.oRequest["Restrict-Access-To-Tenants"] =
"contoso.onmicrosoft.com,fabrikam.onmicrosoft.com";
Next steps
Read about Updated Office 365 modern authentication
Review the Office 365 URLs and IP address ranges
How to: Configure Azure AD SAML token encryption
(Preview)
5/16/2019 • 5 minutes to read • Edit Online
NOTE
Token encryption is an Azure Active Directory (Azure AD) premium feature. To learn more about Azure AD editions, features,
and pricing, see Azure AD pricing.
SAML token encryption enables the use of encrypted SAML assertions with an application that supports it. When
configured for an application, Azure AD will encrypt the SAML assertions it emits for that application using the
public key obtained from a certificate stored in Azure AD. The application must use the matching private key to
decrypt the token before it can be used as evidence of authentication for the signed in user.
Encrypting the SAML assertions between Azure AD and the application provides additional assurance that the
content of the token can't be intercepted, and personal or corporate data compromised.
Even without token encryption, Azure AD SAML tokens are never passed on the network in the clear. Azure AD
requires token request/response exchanges to take place over encrypted HTTPS/TLS channels so that
communications between the IDP, browser, and application take place over encrypted links. Consider the value of
token encryption for your situation compared with the overhead of managing additional certificates.
To configure token encryption, you need to upload an X.509 certificate file that contains the public key to the Azure
AD application object that represents the application. To obtain the X.509 certificate, you can download it from the
application itself, or get it from the application vendor in cases where the application vendor provides encryption
keys or in cases where the application expects you to provide a private key, it can be created using cryptography
tools, the private key portion uploaded to the application’s key store and the matching public key certificate
uploaded to Azure AD.
Azure AD uses AES -256 to encrypt the SAML assertion data.
NOTE
The Token encryption option is only available for SAML applications that have been set up from the Enterprise
applications blade in the Azure portal, either from the Application Gallery or a Non-Gallery app. For other
applications, this menu option is disabled. For applications registered through the App registrations experience in
the Azure portal, you can configure encryption for SAML tokens using the application manifest, through Microsoft
Graph or through PowerShell.
4. On the Token encryption page, select Import Certificate to import the .cer file that contains your public
X.509 certificate.
5. Once the certificate is imported, and the private key is configured for use on the application side, activate
encryption by selecting the ... next to the thumbprint status, and then select Activate token encryption
from the options in the dropdown menu.
6. Select Yes to confirm activation of the token encryption certificate.
7. Confirm that the SAML assertions emitted for the application are encrypted.
To deactivate token encryption in the Azure portal
1. In the Azure portal, go to Azure Active Directory > Enterprise applications, and then select the
application that has SAML token encryption enabled.
2. On the application's page, select Token encryption, find the certificate, and then select the ... option to
show the dropdown menu.
3. Select Deactivate token encryption.
You'll need the application's object ID to configure token encryption using Microsoft Graph API or PowerShell. You
can find this value programmatically, or by going to the application's Properties page in the Azure portal and
noting the Object ID value.
When you configure a keyCredential using Graph, PowerShell, or in the application manifest, you should generate
a GUID to use for the keyId.
To configure token encryption using Microsoft Graph
1. Update the application's keyCredentials with an X.509 certificate for encryption. The following example
shows how to do this.
{
"keyCredentials":[
{
"type":"AsymmetricX509Cert","usage":"Encrypt",
"keyId":"fdf8c5d8-f727-43fd-beaf-0f1521cf3d35", (Use a GUID generator to obtain a value for
the keyId)
"key": "MIICADCCAW2gAwIBAgIQ5j9/b+n2Q4pDvQUCcy3…" (Base64Encoded .cer file)
}
]
}
2. Identify the encryption certificate that's active for encrypting tokens. The following example shows how to
do this.
{
"tokenEncryptionKeyId":"fdf8c5d8-f727-43fd-beaf-0f1521cf3d35" (The keyId of the keyCredentials entry
to use)
}
Azure Active Directory (Azure AD ) provides several customizable ways to deploy applications to end users in your
organization:
Azure AD access panel
Office 365 application launcher
Direct sign-on to federated apps
Deep links to federated, password-based, or existing apps
Which method(s) you choose to deploy in your organization is your discretion.
The Access Panel is separate from the Azure portal and does not require users to have an Azure subscription or
Office 365 subscription.
For more information on the Azure AD access panel, see the introduction to the access panel.
For more information about the Office 365 application launcher, see Have your app appear in the Office 365 app
launcher.
Similar to organization-specific URLs for the access panel, you can further customize this URL by adding one of
the active or verified domains for your directory after the myapps.microsoft.com domain. This ensures any
organizational branding is loaded immediately on the sign-in page without the user needing to enter their user ID
first:
https://myapps.microsoft.com/contosobuild.com/signin/Twitter/230848d52c8745d4b05a60d29a40fced
When an authorized user clicks on one of these application-specific links, they first see their organizational sign-in
page (assuming they are not already signed in), and after sign-in are redirected to their app without stopping at
the access panel first. If the user is missing pre-requisites to access the application, such as the password-based
single sign browser extension, then the link will prompt the user to install the missing extension. The link URL also
remains constant if the single sign-on configuration for the application changes.
These links use the same access control mechanisms as the access panel and Office 365, and only those users or
groups who have been assigned to the application in the Azure portal will be able to successfully authenticate.
However, any user who is unauthorized will see a message explaining that they have not been granted access, and
are given a link to load the access panel to view available applications for which they do have access.
Next steps
For deployment plans, see Azure Active Directory deployment plans
Using System for Cross-Domain Identity
Management (SCIM) to automatically provision users
and groups from Azure Active Directory to
applications
8/2/2019 • 31 minutes to read • Edit Online
SCIM is standardized protocol and schema that aims to drive greater consistency in how identities are managed
across systems. When an application supports a SCIM endpoint for user management, the Azure AD user
provisioning service can send requests to create, modify, or delete assigned users and groups to this endpoint.
Many of the applications for which Azure AD supports pre-integrated automatic user provisioning implement
SCIM as the means to receive user change notifications. In addition to these, customers can connect applications
that support a specific profile of the SCIM 2.0 protocol specification using the generic "non-gallery" integration
option in the Azure portal.
The main focus of this article is on the profile of SCIM 2.0 that Azure AD implements as part of its generic SCIM
connector for non-gallery apps. However, successful testing of an application that supports SCIM with the generic
Azure AD connector is a step to getting an app listed in the Azure AD gallery as supporting user provisioning. For
more information on getting your application listed in the Azure AD application gallery, see How to: List your
application in the Azure AD application gallery.
IMPORTANT
The behavior of the Azure AD SCIM implementation was last updated on December 18, 2018. For information on what
changed, see SCIM 2.0 protocol compliance of the Azure AD User Provisioning service.
Figure 1: Provisioning from Azure Active Directory to an application or identity store that implements SCIM
This article is split into four sections:
Provisioning users and groups to third-party applications that support SCIM 2.0 - If your organization
is using a third-party application that implements the profile of SCIM 2.0 that Azure AD supports, you can
start automating both provisioning and de-provisioning of users and groups today.
Understanding the Azure AD SCIM implementation - If you're building an application that supports a
SCIM 2.0 user management API, this section describes in detail how the Azure AD SCIM client is
implemented, and how you should model your SCIM protocol request handling and responses.
Building a SCIM endpoint using Microsoft CLI libraries - Common Language Infrastructure (CLI)
libraries along with code samples show you how to develop a SCIM endpoint and translate SCIM messages.
User and group schema reference - Describes the user and group schema supported by the Azure AD
SCIM implementation for non-gallery apps.
IMPORTANT
The Azure AD SCIM implementation is built on top of the Azure AD user provisioning service, which is designed to
constantly keep users in sync between Azure AD and the target application, and implements a very specific set of standard
operations. It's important to understand these behaviors to understand the behavior of the Azure AD SCIM client. For more
information, see What happens during user provisioning?.
Getting started
Applications that support the SCIM profile described in this article can be connected to Azure Active Directory
using the "non-gallery application" feature in the Azure AD application gallery. Once connected, Azure AD runs a
synchronization process every 40 minutes where it queries the application's SCIM endpoint for assigned users
and groups, and creates or modifies them according to the assignment details.
To connect an application that supports SCIM:
1. Sign in to the Azure Active Directory portal.
2. Select Enterprise applications from the left pane. A list of all configured apps is shown, including apps
that were added from the gallery.
3. Select + New application > All > Non-gallery application.
4. Enter a name for your application, and select Add to create an app object. The new app is added to the list
of enterprise applications and opens to its app management screen.
Figure 2: Azure AD application gallery
5. In the app management screen, select Provisioning in the left panel.
6. In the Provisioning Mode menu, select Automatic.
10. If the attempts to connect to the application succeed, then select Save to save the admin credentials.
11. In the Mappings section, there are two selectable sets of attribute mappings: one for user objects and one
for group objects. Select each one to review the attributes that are synchronized from Azure Active
Directory to your app. The attributes selected as Matching properties are used to match the users and
groups in your app for update operations. Select Save to commit any changes.
NOTE
You can optionally disable syncing of group objects by disabling the "groups" mapping.
12. Under Settings, the Scope field defines which users and groups are synchronized. Select Sync only
assigned users and groups (recommended) to only sync users and groups assigned in the Users and
groups tab.
13. Once your configuration is complete, set the Provisioning Status to On.
14. Select Save to start the Azure AD provisioning service.
15. If syncing only assigned users and groups (recommended), be sure to select the Users and groups tab and
assign the users or groups you want to sync.
Once the initial synchronization has started, you can select Audit logs in the left panel to monitor progress, which
shows all actions done by the provisioning service on your app. For more information on how to read the Azure
AD provisioning logs, see Reporting on automatic user account provisioning.
NOTE
The initial sync takes longer to perform than later syncs, which occur approximately every 40 minutes as long as the service
is running.
IMPORTANT
To understand how and when the Azure AD user provisioning service emits the operations described below, see What
happens during user provisioning?.
User Operations
Create User
Request
Response
Get User
Request
Response
Get User by query
Request
Response
Get User by query - Zero results
Request
Response
Update User [Multi-valued properties]
Request
Response
Update User [Single-valued properties]
Request
Response
Delete User
Request
Response
Group Operations
Create Group
Request
Response
Get Group
Request
Response
Get Group by displayName
Request
Response
Update Group [Non-member attributes]
Request
Response
Update Group [Add Members]
Request
Response
Update Group [Remove Members]
Request
Response
Delete Group
Request
Response
User Operations
Users can be queried by userName or email[type eq "work"] attributes.
Create User
R eq u es t
POST /Users
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
"externalId": "0a21f0f2-8d2a-4f8e-bf98-7363c4aed4ef",
"userName": "Test_User_ab6490ee-1e48-479e-a20b-2d77186b5dd1",
"active": true,
"emails": [{
"primary": true,
"type": "work",
"value": "[email protected]"
}],
"meta": {
"resourceType": "User"
},
"name": {
"formatted": "givenName familyName",
"familyName": "familyName",
"givenName": "givenName"
},
"roles": []
}
R e sp o n se
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "48af03ac28ad4fb88478",
"externalId": "0a21f0f2-8d2a-4f8e-bf98-7363c4aed4ef",
"meta": {
"resourceType": "User",
"created": "2018-03-27T19:59:26.000Z",
"lastModified": "2018-03-27T19:59:26.000Z"
},
"userName": "Test_User_ab6490ee-1e48-479e-a20b-2d77186b5dd1",
"name": {
"formatted": "givenName familyName",
"familyName": "familyName",
"givenName": "givenName",
},
"active": true,
"emails": [{
"value": "[email protected]",
"type": "work",
"primary": true
}]
}
Get User
R eq u es t
GET /Users/5d48a0a8e9f04aa38008
R es p o n s e
HTTP/1.1 200 OK
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "5d48a0a8e9f04aa38008",
"externalId": "58342554-38d6-4ec8-948c-50044d0a33fd",
"meta": {
"resourceType": "User",
"created": "2018-03-27T19:59:26.000Z",
"lastModified": "2018-03-27T19:59:26.000Z"
},
"userName": "Test_User_feed3ace-693c-4e5a-82e2-694be1b39934",
"name": {
"formatted": "givenName familyName",
"familyName": "familyName",
"givenName": "givenName",
},
"active": true,
"emails": [{
"value": "[email protected]",
"type": "work",
"primary": true
}]
}
HTTP/1.1 200 OK
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "2441309d85324e7793ae",
"externalId": "7fce0092-d52e-4f76-b727-3955bd72c939",
"meta": {
"resourceType": "User",
"created": "2018-03-27T19:59:26.000Z",
"lastModified": "2018-03-27T19:59:26.000Z"
},
"userName": "Test_User_dfeef4c5-5681-4387-b016-bdf221e82081",
"name": {
"familyName": "familyName",
"givenName": "givenName"
},
"active": true,
"emails": [{
"value": "[email protected]",
"type": "work",
"primary": true
}]
}],
"startIndex": 1,
"itemsPerPage": 20
}
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 0,
"Resources": [],
"startIndex": 1,
"itemsPerPage": 20
}
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [
{
"op": "Replace",
"path": "emails[type eq \"work\"].value",
"value": "[email protected]"
},
{
"op": "Replace",
"path": "name.familyName",
"value": "updatedFamilyName"
}
]
}
R e sp o n se
HTTP/1.1 200 OK
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "6764549bef60420686bc",
"externalId": "6c75de36-30fa-4d2d-a196-6bdcdb6b6539",
"meta": {
"resourceType": "User",
"created": "2018-03-27T19:59:26.000Z",
"lastModified": "2018-03-27T19:59:26.000Z"
},
"userName": "Test_User_fbb9dda4-fcde-4f98-a68b-6c5599e17c27",
"name": {
"formatted": "givenName updatedFamilyName",
"familyName": "updatedFamilyName",
"givenName": "givenName"
},
"active": true,
"emails": [{
"value": "[email protected]",
"type": "work",
"primary": true
}]
}
R e sp o n se
HTTP/1.1 200 OK
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "5171a35d82074e068ce2",
"externalId": "aa1eca08-7179-4eeb-a0be-a519f7e5cd1a",
"meta": {
"resourceType": "User",
"created": "2018-03-27T19:59:26.000Z",
"lastModified": "2018-03-27T19:59:26.000Z"
},
"userName": "[email protected]",
"name": {
"formatted": "givenName familyName",
"familyName": "familyName",
"givenName": "givenName",
},
"active": true,
"emails": [{
"value": "[email protected]",
"type": "work",
"primary": true
}]
}
Delete User
R e q u e st
R e sp o n se
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "927fa2c08dcb4a7fae9e",
"externalId": "8aa1a0c0-c4c3-4bc0-b4a5-2ef676900159",
"meta": {
"resourceType": "Group",
"created": "2018-03-27T19:59:26.000Z",
"lastModified": "2018-03-27T19:59:26.000Z"
},
"displayName": "displayName",
"members": []
}
Get Group
R e q u e st
HTTP/1.1 200 OK
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "40734ae655284ad3abcc",
"externalId": "60f1bb27-2e1e-402d-bcc4-ec999564a194",
"meta": {
"resourceType": "Group",
"created": "2018-03-27T19:59:26.000Z",
"lastModified": "2018-03-27T19:59:26.000Z"
},
"displayName": "displayName",
}
HTTP/1.1 200 OK
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 1,
"Resources": [{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "8c601452cc934a9ebef9",
"externalId": "0db508eb-91e2-46e4-809c-30dcbda0c685",
"meta": {
"resourceType": "Group",
"created": "2018-03-27T22:02:32.000Z",
"lastModified": "2018-03-27T22:02:32.000Z",
},
"displayName": "displayName",
}],
"startIndex": 1,
"itemsPerPage": 20
}
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{
"op": "Replace",
"path": "displayName",
"value": "1879db59-3bdf-4490-ad68-ab880a269474updatedDisplayName"
}]
}
R e sp o n se
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{
"op": "Add",
"path": "members",
"value": [{
"$ref": null,
"value": "f648f8d5ea4e4cd38e9c"
}]
}]
}
R e sp o n se
R e sp o n se
Update-Package -Reinstall
8. In Windows under Windows Settings > Network & Internet Settings, select the Windows Firewall >
Advanced Settings, and create an Inbound Rule that allows inbound access to port 9000.
9. If the Windows machine is behind a router, the router needs to be configured to run Network Access
Translation between its port 9000 that is exposed to the internet, and port 9000 on the Windows machine.
This configuration is required for Azure AD to access this endpoint in the cloud.
To register the sample SCIM endpoint in Azure AD
1. Sign in to the Azure Active Directory portal.
2. Select Enterprise applications from the left pane. A list of all configured apps is shown, including apps
that were added from the gallery.
3. Select + New application > All > Non-gallery application.
4. Enter a name for your application, and select Add to create an app object. The application object created is
intended to represent the target app you would be provisioning to and implementing single sign-on for,
and not just the SCIM endpoint.
5. In the app management screen, select Provisioning in the left panel.
6. In the Provisioning Mode menu, select Automatic.
7. In the Tenant URL field, enter the URL of the application's SCIM endpoint. Example:
https://api.contoso.com/scim/
8. If the SCIM endpoint requires an OAuth bearer token from an issuer other than Azure AD, then copy the
required OAuth bearer token into the optional Secret Token field. If this field is left blank, Azure AD
includes an OAuth bearer token issued from Azure AD with each request. Apps that use Azure AD as an
identity provider can validate this Azure AD -issued token.
9. Select Test Connection to have Azure Active Directory attempt to connect to the SCIM endpoint. If the
attempt fails, error information is displayed.
NOTE
Test Connection queries the SCIM endpoint for a user that doesn't exist, using a random GUID as the matching
property selected in the Azure AD configuration. The expected correct response is HTTP 200 OK with an empty
SCIM ListResponse message
10. If the attempts to connect to the application succeed, then select Save to save the admin credentials.
11. In the Mappings section, there are two selectable sets of attribute mappings: one for user objects and one
for group objects. Select each one to review the attributes that are synchronized from Azure Active
Directory to your app. The attributes selected as Matching properties are used to match the users and
groups in your app for update operations. Select Save to commit any changes.
12. Under Settings, the Scope field defines which users and or groups are synchronized. Select "Sync only
assigned users and groups (recommended) to only sync users and groups assigned in the Users and
groups tab.
13. Once your configuration is complete, set the Provisioning Status to On.
14. Select Save to start the Azure AD provisioning service.
15. If syncing only assigned users and groups (recommended), be sure to select the Users and groups tab and
assign the users or groups you want to sync.
Once the initial synchronization has started, you can select Audit logs in the left panel to monitor progress, which
shows all actions done by the provisioning service on your app. For more information on how to read the Azure
AD provisioning logs, see Reporting on automatic user account provisioning.
The final step in verifying the sample is to open the TargetFile.csv file in the \AzureAD -BYOA-Provisioning-
Samples\ProvisioningAgent\bin\Debug folder on your Windows machine. Once the provisioning process is run,
this file shows the details of all assigned and provisioned users and groups.
Development libraries
To develop your own web service that conforms to the SCIM specification, first familiarize yourself with the
following libraries provided by Microsoft to help accelerate the development process:
Common Language Infrastructure (CLI) libraries are offered for use with languages based on that
infrastructure, such as C#. One of those libraries,
Microsoft.SystemForCrossDomainIdentityManagement.Service, declares an interface,
Microsoft.SystemForCrossDomainIdentityManagement.IProvider, shown in the following illustration. A
developer using the libraries would implement that interface with a class that may be referred to,
generically, as a provider. The libraries let the developer deploy a web service that conforms to the SCIM
specification. The web service can be either hosted within Internet Information Services, or any executable
CLI assembly. Request is translated into calls to the provider’s methods, which would be programmed by
the developer to operate on some identity store.
Express route handlers are available for parsing node.js request objects representing calls (as defined by
the SCIM specification), made to a node.js web service.
Building a custom SCIM endpoint
Developers using the CLI libraries can host their services within any executable CLI assembly, or within Internet
Information Services. Here is sample code for hosting a service within an executable assembly, at the address
http://localhost:9000:
Microsoft.SystemForCrossDomainIdentityManagement.IMonitor monitor =
new DevelopersMonitor();
Microsoft.SystemForCrossDomainIdentityManagement.IProvider provider =
new DevelopersProvider(arguments[1]);
Microsoft.SystemForCrossDomainIdentityManagement.Service webService = null;
try
{
webService = new WebService(monitor, provider);
webService.Start("http://localhost:9000");
Console.ReadKey(true);
}
finally
{
if (webService != null)
{
webService.Dispose();
webService = null;
}
}
}
public WebService(
Microsoft.SystemForCrossDomainIdentityManagement.IMonitor monitoringBehavior,
Microsoft.SystemForCrossDomainIdentityManagement.IProvider providerBehavior)
{
this.monitor = monitoringBehavior;
this.provider = providerBehavior;
}
set
{
this.monitor = value;
}
}
set
{
this.provider = value;
}
}
}
This service must have an HTTP address and server authentication certificate of which the root certification
authority is one of the following names:
CNNIC
Comodo
CyberTrust
DigiCert
GeoTrust
GlobalSign
Go Daddy
VeriSign
WoSign
A server authentication certificate can be bound to a port on a Windows host using the network shell utility:
Here, the value provided for the certhash argument is the thumbprint of the certificate, while the value provided
for the appid argument is an arbitrary globally unique identifier.
To host the service within Internet Information Services, a developer would build a CLI code library assembly with
a class named Startup in the default namespace of the assembly. Here is a sample of such a class:
public class Startup
{
// Microsoft.SystemForCrossDomainIdentityManagement.IWebApplicationStarter,
// Microsoft.SystemForCrossDomainIdentityManagement.IMonitor and
// Microsoft.SystemForCrossDomainIdentityManagement.Service are all defined in
// Microsoft.SystemForCrossDomainIdentityManagement.Service.dll.
Microsoft.SystemForCrossDomainIdentityManagement.IWebApplicationStarter starter;
public Startup()
{
Microsoft.SystemForCrossDomainIdentityManagement.IMonitor monitor =
new DevelopersMonitor();
Microsoft.SystemForCrossDomainIdentityManagement.IProvider provider =
new DevelopersProvider();
this.starter =
new Microsoft.SystemForCrossDomainIdentityManagement.WebApplicationStarter(
provider,
monitor);
}
2. Add the following code to that method to have any request to any of the service’s endpoints authenticated
as bearing a token issued by Azure Active Directory for a specified tenant, for access to the Azure AD
Graph web service:
// SystemIdentityModel.Tokens.TokenValidationParameters is defined in
// System.IdentityModel.Token.Jwt.dll.
SystemIdentityModel.Tokens.TokenValidationParameters tokenValidationParameters =
new TokenValidationParameters()
{
ValidAudience = "8adf8e6e-67b2-4cf2-a259-e3dc5476c621"
};
// WindowsAzureActiveDirectoryBearerAuthenticationOptions is defined in
// Microsoft.Owin.Security.ActiveDirectory.dll
Microsoft.Owin.Security.ActiveDirectory.
WindowsAzureActiveDirectoryBearerAuthenticationOptions authenticationOptions =
new WindowsAzureActiveDirectoryBearerAuthenticationOptions() {
TokenValidationParameters = tokenValidationParameters,
Tenant = "03F9FCBC-EA7B-46C2-8466-F81917F3C15E" // Substitute the appropriate tenant’s
// identifier for this one.
};
applicationBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(authenticationOptions);
}
NOTE
This is an example only. Not all users will have a mailNickname attribute, and the value a user has may not be unique
in the directory. Also, the attribute used for matching (which in this case is externalId) is configurable in the Azure AD
attribute mappings.
GET https://.../scim/Users?filter=externalId eq jyoung HTTP/1.1
Authorization: Bearer ...
If the service was built using the CLI libraries provided by Microsoft for implementing SCIM services, then
the request is translated into a call to the Query method of the service’s provider. Here is the signature of
that method:
System.Threading.Tasks.Task<Microsoft.SystemForCrossDomainIdentityManagement.Resource[]> Query(
Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters parameters,
string correlationIdentifier);
If the service was built using the Common Language Infrastructure libraries provided by Microsoft for
implementing SCIM services, then the request is translated into a call to the Query method of the service’s
provider. Here is the signature of that method:
System.Threading.Tasks.Task<Microsoft.SystemForCrossDomainIdentityManagement.Resource[]> Query(
Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters parameters,
string correlationIdentifier);
In the following sample of a query for a user with a given value for the externalId attribute, values of the
arguments passed to the Query method are:
parameters.AlternateFilters.Count: 1
parameters.AlternateFilters.ElementAt(0).AttributePath: "externalId"
parameters.AlternateFilters.ElementAt(0).ComparisonOperator: ComparisonOperator.Equals
parameters.AlternateFilter.ElementAt(0).ComparisonValue: "jyoung"
correlationIdentifier: System.Net.Http.HttpRequestMessage.GetOwinEnvironment["owin.RequestId"]
2. If the response to a query to the web service for a user with an externalId attribute value that matches the
mailNickname attribute value of a user doesn't return any users, then Azure Active Directory requests that
the service provision a user corresponding to the one in Azure Active Directory. Here is an example of such
a request:
POST https://.../scim/Users HTTP/1.1
Authorization: Bearer ...
Content-type: application/scim+json
{
"schemas":
[
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0User"],
"externalId":"jyoung",
"userName":"jyoung",
"active":true,
"addresses":null,
"displayName":"Joy Young",
"emails": [
{
"type":"work",
"value":"[email protected]",
"primary":true}],
"meta": {
"resourceType":"User"},
"name":{
"familyName":"Young",
"givenName":"Joy"},
"phoneNumbers":null,
"preferredLanguage":null,
"title":null,
"department":null,
"manager":null}
The CLI libraries provided by Microsoft for implementing SCIM services would translate that request into
a call to the Create method of the service’s provider. The Create method has this signature:
System.Threading.Tasks.Task<Microsoft.SystemForCrossDomainIdentityManagement.Resource> Create(
Microsoft.SystemForCrossDomainIdentityManagement.Resource resource,
string correlationIdentifier);
In a request to provision a user, the value of the resource argument is an instance of the
Microsoft.SystemForCrossDomainIdentityManagement. Core2EnterpriseUser class, defined in the
Microsoft.SystemForCrossDomainIdentityManagement.Schemas library. If the request to provision the
user succeeds, then the implementation of the method is expected to return an instance of the
Microsoft.SystemForCrossDomainIdentityManagement. Core2EnterpriseUser class, with the value of the
Identifier property set to the unique identifier of the newly provisioned user.
3. To update a user known to exist in an identity store fronted by an SCIM, Azure Active Directory proceeds
by requesting the current state of that user from the service with a request such as:
In a service built using the CLI libraries provided by Microsoft for implementing SCIM services, the
request is translated into a call to the Retrieve method of the service’s provider. Here is the signature of the
Retrieve method:
// System.Threading.Tasks.Tasks is defined in mscorlib.dll.
// Microsoft.SystemForCrossDomainIdentityManagement.Resource and
// Microsoft.SystemForCrossDomainIdentityManagement.IResourceRetrievalParameters
// are defined in Microsoft.SystemForCrossDomainIdentityManagement.Schemas.
System.Threading.Tasks.Task<Microsoft.SystemForCrossDomainIdentityManagement.Resource>
Retrieve(
Microsoft.SystemForCrossDomainIdentityManagement.IResourceRetrievalParameters
parameters,
string correlationIdentifier);
public interface
Microsoft.SystemForCrossDomainIdentityManagement.IResourceRetrievalParameters:
IRetrievalParameters
{
Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier
ResourceIdentifier
{ get; }
}
public interface Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier
{
string Identifier
{ get; set; }
string Microsoft.SystemForCrossDomainIdentityManagement.SchemaIdentifier
{ get; set; }
}
In the example of a request to retrieve the current state of a user, the values of the properties of the object
provided as the value of the parameters argument are as follows:
Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
4. If a reference attribute is to be updated, then Azure Active Directory queries the service to determine
whether the current value of the reference attribute in the identity store fronted by the service already
matches the value of that attribute in Azure Active Directory. For users, the only attribute of which the
current value is queried in this way is the manager attribute. Here is an example of a request to determine
whether the manager attribute of a particular user object currently has a certain value:
If the service was built using the CLI libraries provided by Microsoft for implementing SCIM services, then
the request is translated into a call to the Query method of the service’s provider. The value of the
properties of the object provided as the value of the parameters argument are as follows:
parameters.AlternateFilters.Count: 2
parameters.AlternateFilters.ElementAt(x).AttributePath: "ID"
parameters.AlternateFilters.ElementAt(x).ComparisonOperator: ComparisonOperator.Equals
parameters.AlternateFilter.ElementAt(x).ComparisonValue: "54D382A4-2050-4C03-94D1-
E769F1D15682"
parameters.AlternateFilters.ElementAt(y).AttributePath: "manager"
parameters.AlternateFilters.ElementAt(y).ComparisonOperator: ComparisonOperator.Equals
parameters.AlternateFilter.ElementAt(y).ComparisonValue: "2819c223-7f76-453a-919d-
413861904646"
parameters.RequestedAttributePaths.ElementAt(0): "ID"
parameters.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
Here, the value of the index x can be 0 and the value of the index y can be 1, or the value of x can be 1 and
the value of y can be 0, depending on the order of the expressions of the filter query parameter.
5. Here is an example of a request from Azure Active Directory to an SCIM service to update a user:
PATCH ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 HTTP/1.1
Authorization: Bearer ...
Content-type: application/scim+json
{
"schemas":
[
"urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations":
[
{
"op":"Add",
"path":"manager",
"value":
[
{
"$ref":"http://.../scim/Users/2819c223-7f76-453a-919d-413861904646",
"value":"2819c223-7f76-453a-919d-413861904646"}]}]}
The Microsoft CLI libraries for implementing SCIM services would translate the request into a call to the
Update method of the service’s provider. Here is the signature of the Update method:
// System.Threading.Tasks.Tasks and
// System.Collections.Generic.IReadOnlyCollection<T>
// are defined in mscorlib.dll.
// Microsoft.SystemForCrossDomainIdentityManagement.IPatch,
// Microsoft.SystemForCrossDomainIdentityManagement.PatchRequestBase,
// Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier,
// Microsoft.SystemForCrossDomainIdentityManagement.PatchOperation,
// Microsoft.SystemForCrossDomainIdentityManagement.OperationName,
// Microsoft.SystemForCrossDomainIdentityManagement.IPath and
// Microsoft.SystemForCrossDomainIdentityManagement.OperationValue
// are all defined in Microsoft.SystemForCrossDomainIdentityManagement.Protocol.
System.Threading.Tasks.Task Update(
Microsoft.SystemForCrossDomainIdentityManagement.IPatch patch,
string correlationIdentifier);
If the service was built using the Common Language Infrastructure libraries provided by Microsoft for
implementing SCIM services, then the request is translated into a call to the Query method of the service’s
provider. The value of the properties of the object provided as the value of the parameters argument are as
follows:
parameters.AlternateFilters.Count: 2
parameters.AlternateFilters.ElementAt(x).AttributePath: "ID"
parameters.AlternateFilters.ElementAt(x).ComparisonOperator: ComparisonOperator.Equals
parameters.AlternateFilter.ElementAt(x).ComparisonValue: "54D382A4-2050-4C03-94D1-
E769F1D15682"
parameters.AlternateFilters.ElementAt(y).AttributePath: "manager"
parameters.AlternateFilters.ElementAt(y).ComparisonOperator: ComparisonOperator.Equals
parameters.AlternateFilter.ElementAt(y).ComparisonValue: "2819c223-7f76-453a-919d-413861904646"
parameters.RequestedAttributePaths.ElementAt(0): "ID"
parameters.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
Here, the value of the index x can be 0 and the value of the index y can be 1, or the value of x can be 1 and
the value of y can be 0, depending on the order of the expressions of the filter query parameter.
1. Here is an example of a request from Azure Active Directory to an SCIM service to update a user:
The Microsoft Common Language Infrastructure libraries for implementing SCIM services would translate
the request into a call to the Update method of the service’s provider. Here is the signature of the Update
method:
// System.Threading.Tasks.Tasks and
// System.Collections.Generic.IReadOnlyCollection<T>
// are defined in mscorlib.dll.
// Microsoft.SystemForCrossDomainIdentityManagement.IPatch,
// Microsoft.SystemForCrossDomainIdentityManagement.PatchRequestBase,
// Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier,
// Microsoft.SystemForCrossDomainIdentityManagement.PatchOperation,
// Microsoft.SystemForCrossDomainIdentityManagement.OperationName,
// Microsoft.SystemForCrossDomainIdentityManagement.IPath and
// Microsoft.SystemForCrossDomainIdentityManagement.OperationValue
// are all defined in Microsoft.SystemForCrossDomainIdentityManagement.Protocol.
System.Threading.Tasks.Task Update(
Microsoft.SystemForCrossDomainIdentityManagement.IPatch patch,
string correlationIdentifier);
public Microsoft.SystemForCrossDomainIdentityManagement.IPath
Path
{ get; set; }
public System.Collections.Generic.IReadOnlyCollection
<Microsoft.SystemForCrossDomainIdentityManagement.OperationValue> Value
{ get; }
In the example of a request to update a user, the object provided as the value of the patch argument has
these property values:
ResourceIdentifier.Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
ResourceIdentifier.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
(PatchRequest as PatchRequest2).Operations.Count: 1
(PatchRequest as PatchRequest2).Operations.ElementAt(0).OperationName: OperationName.Add
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Path.AttributePath: "manager"
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.Count: 1
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Reference:
http://.../scim/Users/2819c223-7f76-453a-919d-413861904646
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Value: 2819c223-7f76-
453a-919d-413861904646
2. To de-provision a user from an identity store fronted by an SCIM service, Azure AD sends a request such
as:
If the service was built using the Common Language Infrastructure libraries provided by Microsoft for
implementing SCIM services, then the request is translated into a call to the Delete method of the service’s
provider. That method has this signature:
The object provided as the value of the resourceIdentifier argument has these property values in the
example of a request to de-provision a user:
3. To de-provision a user from an identity store fronted by an SCIM service, Azure AD sends a request such
as:
If the service was built using the CLI libraries provided by Microsoft for implementing SCIM services, then
the request is translated into a call to the Delete method of the service’s provider. That method has this
signature:
The object provided as the value of the resourceIdentifier argument has these property values in the
example of a request to de-provision a user:
ResourceIdentifier.Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
ResourceIdentifier.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
IsSoftDeleted active
displayName displayName
givenName name.givenName
jobTitle title
mailNickname externalId
manager manager
objectId ID
surname name.familyName
user-PrincipalName userName
displayName externalId
AZURE ACTIVE DIRECTORY GROUP URN:IETF:PARAMS:SCIM:SCHEMAS:CORE:2.0:GROUP
mailNickname displayName
members members
objectId ID
Related articles
Automate User Provisioning/Deprovisioning to SaaS Apps
Customizing Attribute Mappings for User Provisioning
Writing Expressions for Attribute Mappings
Scoping Filters for User Provisioning
Account Provisioning Notifications
List of Tutorials on How to Integrate SaaS Apps
Remote access to on-premises applications through
Azure Active Directory's Application Proxy
6/13/2019 • 4 minutes to read • Edit Online
Azure Active Directory's Application Proxy provides secure remote access to on-premises web applications. After
a single sign-on to Azure AD, users can access both cloud and on-premises applications through an external URL
or an internal application portal. For example, Application Proxy can provide remote access and single sign-on to
Remote Desktop, SharePoint, Teams, Tableau, Qlik, and line of business (LOB ) applications.
Azure AD Application Proxy is:
Simple to use. Users can access your on-premises applications the same way they access O365 and
other SaaS apps integrated with Azure AD. You don't need to change or update your applications to work
with Application Proxy.
Secure. On-premises applications can use Azure's authorization controls and security analytics. For
example, on-premises applications can use Conditional Access and two-step verification. Application
Proxy doesn't require you to open inbound connections through your firewall.
Cost-effective. On-premises solutions typically require you to set up and maintain demilitarized zones
(DMZs), edge servers, or other complex infrastructures. Application Proxy runs in the cloud, which makes
it easy to use. To use Application Proxy, you don't need to change the network infrastructure or install
additional appliances in your on-premises environment.
1. After the user has accessed the application through an endpoint, the user is directed to the Azure AD sign-in
page.
2. After a successful sign-in, Azure AD sends a token to the user's client device.
3. The client sends the token to the Application Proxy service, which retrieves the user principal name (UPN )
and security principal name (SPN ) from the token. Application Proxy then sends the request to the
Application Proxy connector.
4. If you have configured single sign-on, the connector performs any additional authentication required on
behalf of the user.
5. The connector sends the request to the on-premises application.
6. The response is sent through the connector and Application Proxy service to the user.
COMPONENT DESCRIPTION
Application Proxy service This Application Proxy service runs in the cloud as part of
Azure AD. It passes the sign-on token from the user to the
Application Proxy Connector. Application Proxy forwards any
accessible headers on the request and sets the headers as
per its protocol, to the client IP address. If the incoming
request to the proxy already has that header, the client IP
address is added to the end of the comma separated list that
is the value of the header.
Application Proxy Connector The connector is a lightweight agent that runs on a Windows
Server inside your network. The connector manages
communication between the Application Proxy service in the
cloud and the on-premises application. The connector only
uses outbound connections, so you don't have to open any
inbound ports or put anything in the DMZ. The connectors
are stateless and pull information from the cloud as
necessary. For more information about connectors, like how
they load-balance and authenticate, see Understand Azure
AD Application Proxy connectors.
COMPONENT DESCRIPTION
Next steps
To start using Application Proxy, see Tutorial: Add an on-premises application for remote access through
Application Proxy.
For the latest news and updates, see the Application Proxy blog
Plan an Azure AD Application Proxy deployment
9/9/2019 • 20 minutes to read • Edit Online
Azure Active Directory (Azure AD ) Application Proxy is a secure and cost-effective remote access solution for on-
premises applications. It provides an immediate transition path for “Cloud First” organizations to manage access
to legacy on-premises applications that aren’t yet capable of using modern protocols. For additional introductory
information, see What is Application Proxy.
Application Proxy is recommended for giving remote users access to internal resources. Application Proxy
replaces the need for a VPN or reverse proxy for these remote access use cases. It is not intended for users who
are on the corporate network. These users who use Application Proxy for intranet access may experience
undesirable performance issues.
This article includes the resources you need to plan, operate, and manage Azure AD Application Proxy.
Service Type For example: SharePoint, SAP, CRM, Custom Web Application,
API
Application platform For example: Windows IIS, Apache on Linux, Tomcat, NGINX
Application location Where the web server or farm is located in your infrastructure
Internal access The exact URL used when accessing the application internally.
If a farm, what type of load balancing is in use?
Whether the application draws content from sources other
than itself.
Determine if the application operates over WebSockets.
External access The vendor solution that the application is already exposed to
externally.
The URL you want to use for external access. If SharePoint,
ensure Alternate Access Mappings are configured per this
guidance. If not, you will need to define external URLs.
Connector group name The logical name for the group of connectors that will be
designated to provide the conduit and SSO to this backend
application.
Users/Groups access The users or user groups that will be granted external access
to the application.
You can download this application inventory spreadsheet to inventory your apps.
Define organizational requirements
The following are areas for which you should define your organization’s business requirements. Each area
contains examples of requirements
Access
Remote users with domain joined or Azure AD joined devices users can access published applications
securely with seamless single sign-on (SSO ).
Remote users with approved personal devices can securely access published applications provided they are
enrolled in MFA and have registered the Microsoft Authenticator app on their mobile phone as an
authentication method.
Governance
Administrators can define and monitor the lifecycle of user assignments to applications published through
Application Proxy.
Security
Only users assigned to applications via group membership or individually can access those applications.
Performance
There is no degradation of application performance compared to accessing application from the internal
network.
User Experience
Users are aware of how to access their applications by using familiar company URLs on any device platform.
Auditing
Administrators are able to audit user access activity.
Best practices for a pilot
Determine the amount of time and effort needed to fully commission a single application for remote access with
Single sign-on (SSO ). Do so by running a pilot that considers its initial discovery, publishing, and general testing.
Using a simple IIS -based web application that is already preconfigured for Integrated Windows Authentication
(IWA) would help establish a baseline, as this setup requires minimal effort to successfully pilot remote access and
SSO.
The following design elements should increase the success of your pilot implementation directly in a production
tenant.
Connector management:
Connectors play a key role in providing the on-premises conduit to your applications. Using the Default
connector group is adequate for initial pilot testing of published applications before commissioning them into
production. Successfully tested applications can then be moved to production connector groups.
Application management:
Your workforce is most likely to remember an external URL is familiar and relevant. Avoid publishing your
application using our pre-defined msappproxy.net or onmicrosoft.com suffixes. Instead, provide a familiar
top-level verified domain, prefixed with a logical hostname such as intranet.<customers_domain>.com.
Restrict visibility of the pilot application’s icon to a pilot group by hiding its launch icon form the Azure
MyApps portal. When ready for production you can scope the app to its respective targeted audience,
either in the same pre-production tenant, or by also publishing the application in your production tenant.
Single sign-on settings: Some SSO settings have specific dependencies that can take time to set up, so avoid
change control delays by ensuring dependencies are addressed ahead of time. This includes domain joining
connector hosts to perform SSO using Kerberos Constrained Delegation (KCD ) and taking care of other time-
consuming activities. For example, Setting up a PING Access instance, if needing header-based SSO.
SSL Between Connector Host and Target Application: Security is paramount, so TLS between the connector
host and target applications should always be used. Particularly if the web application is configured for forms-
based authentication (FBA), as user credentials are then effectively transmitted in clear text.
Implement incrementally and test each step. Conduct basic functional testing after publishing an application
to ensure that all user and business requirements are met by following the directions below:
1. Test and validate general access to the web application with pre-authentication disabled.
2. If successful enable pre-authentication and assign users and groups. Test and validate access.
3. Then add the SSO method for your application and test again to validate access.
4. Apply Conditional Access and MFA policies as required. Test and validate access.
Troubleshooting Tools: When troubleshooting, always start by validating access to the published application
from the browser on the connector host, and confirm that the application functions as expected. The simpler your
setup, the easier to determine root cause, so consider trying to reproduce issues with a minimal configuration such
as using only a single connector and no SSO. In some cases, web debugging tools such as Telerik’s Fiddler can
prove indispensable to troubleshoot access or content issues in applications accessed through a proxy. Fiddler can
also act as a proxy to help trace and debug traffic for mobile platforms such as iOS and Android, and virtually
anything that can be configured to route via a proxy. See the troubleshooting guide for more information.
You can also allow users to self-service access to your application by assigning a group that they aren't currently a
member of and configuring the self-serve options.
If enabled, users will then be able to log into the MyApps portal and request access, and either be auto approved
and added to the already permitted self-service group, or need approval from a designated approver.
Guest users can also be invited to access internal applications published via Application Proxy through Azure AD
B2B.
For on premises applications that are normally accessible anonymously, requiring no authentication, you may
prefer to disable the option located in the application’s Properties.
Leaving this option set to No allows users to access the on-premises application via Azure AD App Proxy without
permissions, so use with caution.
Once your application is published, it should be accessible by typing its external URL in a browser or by its icon at
https://myapps.microsoft.com.
Enable pre -authentication
Verify that your application is accessible through Application Proxy accessing it via the external URL.
1. Navigate to Azure Active Directory > Enterprise applications > All applications and choose the app
you want to manage.
2. Select Application Proxy.
3. In the Pre-Authentication field, use the dropdown list to select Azure Active Directory, and select Save.
With pre-authentication enabled, Azure AD will challenge users first for authentication and if single sign-on is
configued then the back-end application will also verify the user before access to the application is granted.
Changing the pre-authentication mode from Passthrough to Azure AD also configures the external URL with
HTTPS, so any application initially configured for HTTP will now be secured with HTTPS.
Enable Single Sign-On
SSO provides the best possible user experience and security because users only need to sign in once when
accessing Azure AD. Once a user has pre-authenticated, SSO is performed by the Application Proxy connector
authenticating to the on-premises application, on behalf of the user. The backend application processes the login
as if it were the user themselves.
Choosing the Passthrough option allows users to access the published application without ever having to
authenticate to Azure AD.
Performing SSO is only possible if Azure AD can identify the user requesting access to a resource, so your
application must be configured to pre-authenticate users with Azure AD upon access for SSO to function,
otherwise the SSO options will be disabled.
Read Single sign-on to applications in Azure AD to help you choose the most appropriate SSO method when
configuring your applications.
Working with other types of applications
Azure AD Application Proxy can also support applications that have been developed to use our Azure AD
Authentication Library (ADAL ) or Microsoft Authentication Library (MSAL ). It supports native client apps by
consuming Azure AD issued tokens received in the header information of client request to perform pre-
authentication on behalf of the users.
Read publishing native and mobile client apps and claims-based applications to learn about available
configurations of Application Proxy.
Use Conditional Access to strengthen security
Application security requires an advanced set of security capabilities that can protect from and respond to complex
threats on-premises and in the cloud. Attackers most often gain corporate network access through weak, default,
or stolen user credentials. Microsoft identity-driven security reduces use of stolen credentials by managing and
protecting both privileged and non-privileged identities.
The following capabilities can be used to support Azure AD Application Proxy:
User and location-based Conditional Access: Keep sensitive data protected by limiting user access based on
geo-location or an IP address with location-based Conditional Access policies.
Device-based Conditional Access: Ensure only enrolled, approved, and compliant devices can access
corporate data with device-based Conditional Access.
Application-based Conditional Access: Work doesn't have to stop when a user isn't on the corporate
network. Secure access to corporate cloud and on-premises apps and maintain control with Conditional
Access.
Risk-based Conditional Access: Protect your data from malicious hackers with a risk-based Conditional
Access policy that can be applied to all apps and all users, whether on-premises or in the cloud.
Azure AD Access Panel: With your Application Proxy service deployed, and applications securely published,
offer your users a simple hub to discover and access all their applications. Increase productivity with self-
service capabilities, such as the ability to request access to new apps and groups or manage access to these
resources on behalf of others, through the Access Panel.
Help desk admin Typically limited to qualifying end user Helpdesk Administrator
reported issues and performing limited
tasks such as changing users’
passwords, invalidating refresh tokens,
and monitoring service health.
Minimizing the number of people who have access to secure information or resources will help in reducing the
chance of a malicious actor obtaining unauthorized access, or an authorized user inadvertently impacting a
sensitive resource.
However, users still need to carry out day to day privileged operations, so enforcing just-in-time (JIT) based
Privileged Identity Management policies to provide on-demand privileged access to Azure resources and Azure
AD is our recommended approach towards effectively managing administrative access and auditing.
Reporting and monitoring
Azure AD provides additional insights into your organization’s application usage and operational health through
audit logs and reports. Application Proxy also makes it very easy to monitor connectors from the Azure AD portal
and Windows Event Logs.
Application audit logs
These logs provide detailed information about logins to applications configured with Application Proxy and the
device and the user accessing the application. Audit logs are located in the Azure portal and in Audit API for
export. Additionally, usage and insights reports are also available for your application.
Application Proxy Connector monitoring
The connectors and the service take care of all the high availability tasks. You can monitor the status of your
connectors from the Application Proxy page in the Azure AD Portal. For more information about connector
maintainence see Understand Azure AD Application Proxy Connectors.
Connectors are what make Azure AD Application Proxy possible. They're simple, easy to deploy and maintain,
and super powerful. This article discusses what connectors are, how they work, and some suggestions for how
to optimize your deployment.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
Maintenance
The connectors and the service take care of all the high availability tasks. They can be added or removed
dynamically. Each time a new request arrives it is routed to one of the connectors that is currently available. If a
connector is temporarily not available, it doesn't respond to this traffic.
The connectors are stateless and have no configuration data on the machine. The only data they store is the
settings for connecting the service and its authentication certificate. When they connect to the service, they pull
all the required configuration data and refresh it every couple of minutes.
Connectors also poll the server to find out whether there is a newer version of the connector. If one is found,
the connectors update themselves.
You can monitor your connectors from the machine they are running on, using either the event log and
performance counters. Or you can view their status from the Application Proxy page of the Azure portal:
You don't have to manually delete connectors that are unused. When a connector is running, it remains active
as it connects to the service. Unused connectors are tagged as inactive and are removed after 10 days of
inactivity. If you do want to uninstall a connector, though, uninstall both the Connector service and the Updater
service from the server. Restart your computer to fully remove the service.
Automatic updates
Azure AD provides automatic updates for all the connectors that you deploy. As long as the Application Proxy
Connector Updater service is running, your connectors update automatically. If you don’t see the Connector
Updater service on your server, you need to reinstall your connector to get any updates.
If you don't want to wait for an automatic update to come to your connector, you can do a manual upgrade. Go
to the connector download page on the server where your connector is located and select Download. This
process kicks off an upgrade for the local connector.
For tenants with multiple connectors, the automatic updates target one connector at a time in each group to
prevent downtime in your environment.
You may experience downtime when your connector updates if:
You only have one connector we recommend you install a second connector and create a connector group.
This will avoid downtime and provide higher availability.
A connector was in the middle of a transaction when the update began. Although the initial transaction is
lost, your browser should automatically retry the operation or you can refresh your page. When the request
is resent, the traffic is routed to a backup connector.
To see information about previously released versions and what changes they include, see Application Proxy-
Version Release History.
Capacity planning
It is important to make sure you have planned enough capacity between connectors to handle the expected
traffic volume. We recommend that each connector group has at least two connectors to provide high
availability and scale. Having three connectors is optimal in case you may need to service a machine at any
point.
In general, the more users you have, the larger a machine you'll need. Below is a table giving an outline of the
volume and expected latency different machines can handle. Note it is all based on expected Transactions Per
Second (TPS ) rather than by user since usage patterns vary and can't be used to predict load. There will also be
some differences based on the size of the responses and the backend application response time - larger
response sizes and slower response times will result in a lower Max TPS. We also recommend having
additional machines so that the distributed load across the machines always provides ample buffer. The extra
capacity will ensure that you have high availability and resiliency.
2 8 325 586
4 16 320 1150
8 32 270 1190
16 64 245 1200*
* This machine used a custom setting to raise some of the default connection limits beyond .NET
recommended settings. We recommend running a test with the default settings before contacting support to
get this limit changed for your tenant.
NOTE
There is not much difference in the maximum TPS between 4, 8, and 16 core machines. The main difference between
those is in the expected latency.
Domain joining
Connectors can run on a machine that is not domain-joined. However, if you want single sign-on (SSO ) to
applications that use Integrated Windows Authentication (IWA), you need a domain-joined machine. In this
case, the connector machines must be joined to a domain that can perform Kerberos Constrained Delegation
on behalf of the users for the published applications.
Connectors can also be joined to domains or forests that have a partial trust, or to read-only domain
controllers.
Connector authentication
To provide a secure service, connectors have to authenticate toward the service, and the service has to
authenticate toward the connector. This authentication is done using client and server certificates when the
connectors initiate the connection. This way the administrator’s username and password are not stored on the
connector machine.
The certificates used are specific to the Application Proxy service. They get created during the initial registration
and are automatically renewed by the connectors every couple of months.
If a connector is not connected to the service for several months, its certificates may be outdated. In this case,
uninstall and reinstall the connector to trigger registration. You can run the following PowerShell commands:
Import-module AppProxyPSModule
Register-AppProxyConnector
Next steps
Publish applications on separate networks and locations using connector groups
Work with existing on-premises proxy servers
Troubleshoot Application Proxy and connector errors
How to silently install the Azure AD Application Proxy Connector
Publish applications on separate networks and
locations using connector groups
7/22/2019 • 6 minutes to read • Edit Online
Customers utilize Azure AD's Application Proxy for more and more scenarios and applications. So we've made
App Proxy even more flexible by enabling more topologies. You can create Application Proxy connector groups
so that you can assign specific connectors to serve specific applications. This capability gives you more control
and ways to optimize your Application Proxy deployment.
Each Application Proxy connector is assigned to a connector group. All the connectors that belong to the same
connector group act as a separate unit for high-availability and load balancing. All connectors belong to a
connector group. If you don't create groups, then all your connectors are in a default group. Your admin can
create new groups and assign connectors to them in the Azure portal.
All applications are assigned to a connector group. If you don't create groups, then all your applications are
assigned to a default group. But if you organize your connectors into groups, you can set each application to
work with a specific connector group. In this case, only the connectors in that group serve the application upon
request. This feature is useful if your applications are hosted in different locations. You can create connector
groups based on location, so that applications are always served by connectors that are physically close to them.
TIP
If you have a large Application Proxy deployment, don't assign any applications to the default connector group. That way,
new connectors don't receive any live traffic until you assign them to an active connector group. This configuration also
enables you to put connectors in an idle mode by moving them back to the default group, so that you can perform
maintenance without impacting your users.
Prerequisites
To group your connectors, you have to make sure you installed multiple connectors. When you install a new
connector, it automatically joins the Default connector group.
4. Give your new connector group a name, then use the dropdown menu to select which connectors belong
in this group.
5. Select Save.
Sample configurations
Some examples that you can implement, include the following connector groups.
Default configuration – no use for connector groups
If you don’t use connector groups, your configuration would look like this:
This configuration is sufficient for small deployments and tests. It will also work well if your organization has a
flat network topology.
Default configuration and an isolated network
This configuration is an evolution of the default one, in which there is a specific app that runs in an isolated
network such as IaaS virtual network:
Recommended configuration – several specific groups and a default group for idle
The recommended configuration for large and complex organizations is to have the default connector group as a
group that doesn’t serve any applications and is used for idle or newly installed connectors. All applications are
served using customized connector groups. This enables all the complexity of the scenarios described above.
In the example below, the company has two datacenters, A and B, with two connectors that serve each site. Each
site has different applications that run on it.
Next steps
Understand Azure AD Application Proxy connectors
Enable single-sign on
Security considerations for accessing apps remotely
with Azure AD Application Proxy
6/13/2019 • 8 minutes to read • Edit Online
This article explains the components that work to keep your users and applications safe when you use Azure Active
Directory Application Proxy.
The following diagram shows how Azure AD enables secure remote access to your on-premises applications.
Security benefits
Azure AD Application Proxy offers the following security benefits:
Authenticated access
If you choose to use Azure Active Directory preauthentication, then only authenticated connections can access your
network.
Azure AD Application Proxy relies on the Azure AD security token service (STS ) for all authentication.
Preauthentication, by its very nature, blocks a significant number of anonymous attacks, because only
authenticated identities can access the back-end application.
If you choose Passthrough as your preauthentication method, you don't get this benefit.
Conditional Access
Apply richer policy controls before connections to your network are established.
With Conditional Access, you can define restrictions on what traffic is allowed to access your back-end
applications. You can create policies that restrict sign-ins based on location, strength of authentication, and user
risk profile.
You can also use Conditional Access to configure Multi-Factor Authentication policies, adding another layer of
security to your user authentications. Additionally, your applications can also be routed to Microsoft Cloud App
Security via Azure AD Conditional Access to provide real-time monitoring and controls, via access and session
policies
Traffic termination
All traffic is terminated in the cloud.
Because Azure AD Application Proxy is a reverse-proxy, all traffic to back-end applications is terminated at the
service. The session can get reestablished only with the back-end server, which means that your back-end servers
are not exposed to direct HTTP traffic. This configuration means that you are better protected from targeted
attacks.
All access is outbound
You don't need to open inbound connections to the corporate network.
Application Proxy connectors only use outbound connections to the Azure AD Application Proxy service, which
means that there is no need to open firewall ports for incoming connections. Traditional proxies required a
perimeter network (also known as DMZ, demilitarized zone, or screened subnet) and allowed access to
unauthenticated connections at the network edge. This scenario required investments in web application firewall
products to analyze traffic and protect the environment. With Application Proxy, you don't need a perimeter
network because all connections are outbound and take place over a secure channel.
For more information about connectors, see Understand Azure AD Application Proxy connectors.
Cloud-scale analytics and machine learning
Get cutting-edge security protection.
Because it's part of Azure Active Directory, Application Proxy can leverage Azure AD Identity Protection, with data
from the Microsoft Security Response Center and Digital Crimes Unit. Together we proactively identify
compromised accounts and offer protection from high-risk sign-ins. We take into account numerous factors to
determine which sign-in attempts are high risk. These factors include flagging infected devices, anonymizing
networks, and atypical or unlikely locations.
Many of these reports and events are already available through an API for integration with your security
information and event management (SIEM ) systems.
Remote access as a service
You don’t have to worry about maintaining and patching on-premises servers.
Unpatched software still accounts for a large number of attacks. Azure AD Application Proxy is an Internet-scale
service that Microsoft owns, so you always get the latest security patches and upgrades.
To improve the security of applications published by Azure AD Application Proxy, we block web crawler robots
from indexing and archiving your applications. Each time a web crawler robot tries to retrieve the robot's settings
for a published app, Application Proxy replies with a robots.txt file that includes User-agent: * Disallow: / .
DDOS prevention
Applications published through Application Proxy are protected against Distributed Denial of Service (DDOS )
attacks.
The Application Proxy service monitors the amount of traffic attempting to reach your applications and network. If
the number of devices requesting remote access to your applications spikes, Microsoft throttles access to your
network.
Microsoft watches traffic patterns for individual applications and for your subscription as a whole. If one
application receives higher than normal requests, then requests to access that application are denied for a short
period of time. If you receive higher than normal requests across your whole subscription, then requests to access
any of your apps are denied. This preventative measure keeps your application servers from being overloaded by
remote access requests, so that your on-premises users can keep accessing their apps.
NOTE
All communications occur over SSL, and they always originate at the connector to the Application Proxy service. The service is
outbound only.
The connector uses a client certificate to authenticate to the Application Proxy service for nearly all calls. The only
exception to this process is the initial setup step, where the client certificate is established.
Installing the connector
When the connector is first set up, the following flow events take place:
1. The connector registration to the service happens as part of the installation of the connector. Users are
prompted to enter their Azure AD admin credentials. The token acquired from this authentication is then
presented to the Azure AD Application Proxy service.
2. The Application Proxy service evaluates the token. It checks whether the user is a company administrator in the
tenant. If the user is not an administrator, the process is terminated.
3. The connector generates a client certificate request and passes it, along with the token, to the Application Proxy
service. The service in turn verifies the token and signs the client certificate request.
4. The connector uses the client certificate for future communication with the Application Proxy service.
5. The connector performs an initial pull of the system configuration data from the service using its client
certificate, and it is now ready to take requests.
Updating the configuration settings
Whenever the Application Proxy service updates the configuration settings, the following flow events take place:
1. The connector connects to the configuration endpoint within the Application Proxy service by using its client
certificate.
2. After the client certificate is validated, the Application Proxy service returns configuration data to the connector
(for example, the connector group that the connector should be part of).
3. If the current certificate is more than 180 days old, the connector generates a new certificate request, which
effectively updates the client certificate every 180 days.
Accessing published applications
When users access a published application, the following events take place between the Application Proxy service
and the Application Proxy connector:
1. The service authenticates the user for the app
2. The service places a request in the connector queue
3. A connector processes the request from the queue
4. The connector waits for a response
5. The service streams data to the user
To learn more about what takes place in each of these steps, keep reading.
1. The service authenticates the user for the app
If you configured the app to use Passthrough as its preauthentication method, the steps in this section are skipped.
If you configured the app to preauthenticate with Azure AD, users are redirected to the Azure AD STS to
authenticate, and the following steps take place:
1. Application Proxy checks for any Conditional Access policy requirements for the specific application. This
step ensures that the user has been assigned to the application. If two-step verification is required, the
authentication sequence prompts the user for a second authentication method.
2. After all checks have passed, the Azure AD STS issues a signed token for the application and redirects the
user back to the Application Proxy service.
3. Application Proxy verifies that the token was issued to the correct application. It performs other checks also,
such as ensuring that the token was signed by Azure AD, and that it is still within the valid window.
4. Application Proxy sets an encrypted authentication cookie to indicate that authentication to the application
has occurred. The cookie includes an expiration timestamp that's based on the token from Azure AD and
other data, such as the user name that the authentication is based on. The cookie is encrypted with a private
key known only to the Application Proxy service.
5. Application Proxy redirects the user back to the originally requested URL.
If any part of the preauthentication steps fails, the user’s request is denied, and the user is shown a message
indicating the source of the problem.
2. The service places a request in the connector queue
Connectors keep an outbound connection open to the Application Proxy service. When a request comes in, the
service queues up the request on one of the open connections for the connector to pick up.
The request includes items from the application, such as the request headers, data from the encrypted cookie, the
user making the request, and the request ID. Although data from the encrypted cookie is sent with the request, the
authentication cookie itself is not.
3. The connector processes the request from the queue.
Based on the request, Application Proxy performs one of the following actions:
If the request is a simple operation (for example, there is no data within the body as is with a RESTful GET
request), the connector makes a connection to the target internal resource and then waits for a response.
If the request has data associated with it in the body (for example, a RESTful POST operation), the connector
makes an outbound connection by using the client certificate to the Application Proxy instance. It makes this
connection to request the data and open a connection to the internal resource. After it receives the request
from the connector, the Application Proxy service begins accepting content from the user and forwards data
to the connector. The connector, in turn, forwards the data to the internal resource.
4. The connector waits for a response.
After the request and transmission of all content to the back end is complete, the connector waits for a response.
After it receives a response, the connector makes an outbound connection to the Application Proxy service, to
return the header details and begin streaming the return data.
5. The service streams data to the user.
Some processing of the application may occur here. If you configured Application Proxy to translate headers or
URLs in your application, that processing happens as needed during this step.
Next steps
Network topology considerations when using Azure AD Application Proxy
Understand Azure AD Application Proxy connectors
Network topology considerations when using Azure
Active Directory Application Proxy
7/22/2019 • 7 minutes to read • Edit Online
This article explains network topology considerations when using Azure Active Directory (Azure AD ) Application
Proxy for publishing and accessing your applications remotely.
Traffic flow
When an application is published through Azure AD Application Proxy, traffic from the users to the applications
flows through three connections:
1. The user connects to the Azure AD Application Proxy service public endpoint on Azure
2. The Application Proxy service connects to the Application Proxy connector
3. The Application Proxy connector connects to the target application
Use case 3
Scenario: The app is in an organization's network in the US. ExpressRoute with Microsoft peering exists between
Azure and the corporate network.
Recommendation: Follow patterns 1 and 2, explained in the previous section.
First, place the connector as close as possible to the app. Then, the system automatically uses ExpressRoute for
hop 2.
If the ExpressRoute link is using Microsoft peering, the traffic between the proxy and the connector flows over
that link. Hop 2 has optimized latency.
Use case 4
Scenario: The app is in an organization's network in the US. ExpressRoute with private peering exists between
Azure and the corporate network.
Recommendation: Follow pattern 3, explained in the previous section.
Place the connector in the Azure datacenter that is connected to the corporate network through ExpressRoute
private peering.
The connector can be placed in the Azure datacenter. Since the connector still has a line of sight to the application
and the datacenter through the private network, hop 3 remains optimized. In addition, hop 2 is optimized further.
Use case 5
Scenario: The app is in an organization's network in the EU, with the Application Proxy instance and most users
in the US.
Recommendation: Place the connector near the app. Because US users are accessing an Application Proxy
instance that happens to be in the same region, hop 1 is not too expensive. Hop 3 is optimized. Consider using
ExpressRoute to optimize hop 2.
You can also consider using one other variant in this situation. If most users in the organization are in the US,
then chances are that your network extends to the US as well. Place the connector in the US, and use the
dedicated internal corporate network line to the application in the EU. This way hops 2 and 3 are optimized.
Next steps
Enable Application Proxy
Enable single-sign on
Enable Conditional Access
Troubleshoot issues you're having with Application Proxy
High availability and load balancing of your
Application Proxy connectors and applications
7/30/2019 • 6 minutes to read • Edit Online
This article explains how traffic distribution works with your Application Proxy deployment. We'll discuss:
How traffic is distributed among users and connectors, along with tips for optimizing connector
performance
How traffic flows between connectors and back-end app servers, with recommendations for load balancing
among multiple back-end servers
1. A user on a client device tries to access an on-premises application published through Application Proxy.
2. The request goes through an Azure Load Balancer to determine which Application Proxy service instance
should take the request. Per region, there are tens of instances available to accept the request. This method
helps to evenly distribute the traffic across the service instances.
3. The request is sent to Service Bus.
4. Service Bus checks if the connection previously used an existing connector in the connector group. If so, it
reuses the connection. If no connector is paired with the connection yet, it chooses an available connector at
random to signal to. The connector then picks up the request from Service Bus.
In step 2, requests go to different Application Proxy service instances, so connections are more likely
to be made with different connectors. As a result, connectors are almost evenly used within the group.
A connection is only reestablished if the connection is broken or an idle period of 10 minutes occurs.
For example, the connection may be broken when a machine or connector service restarts or there's a
network disruption.
5. The connector passes the request to the application’s back-end server. Then the application sends the
response back to the connector.
6. The connector completes the response by opening an outbound connection to the service instance from
where the request came. Then this connection is immediately closed. By default, each connector is limited to
200 concurrent outbound connections.
7. The response is then passed back to the client from the service instance.
8. Subsequent requests from the same connection repeat the steps above until this connection is broken or is
idle for 10 minutes.
An application often has many resources and opens multiple connections when it's loaded. Each connection goes
through the steps above to become allocated to a service instance, select a new available connector if the
connection has not yet previously paired with a connector.
Next steps
Enable Application Proxy
Enable single-sign on
Enable Conditional Access
Troubleshoot issues you're having with Application Proxy
Compare remote access solutions
6/13/2019 • 2 minutes to read • Edit Online
Azure Active Directory Application Proxy is one of two remote access solutions that Microsoft offers. The other is
Web Application Proxy, the on-premises version. These two solutions replace earlier products that Microsoft
offered: Microsoft Forefront Threat Management Gateway (TMG ) and Unified Access Gateway (UAG ). Use this
article to understand how these four solutions compare to each other. For those of you still using the deprecated
TMG or UAG solutions, use this article to help plan your migration to one of the Application Proxy.
Feature comparison
Use this table to understand how Threat Management Gateway (TMG ), Unified Access Gateway (UAG ), Web
Application Proxy (WAP ), and Azure AD Application Proxy (AP ) compare to each other.
Rich protocol support - Yes Yes, if running over Yes, if running over
HTTP HTTP or through
Remote Desktop
Gateway
No components in - - - Yes
the demilitarized zone
(DMZ)
No inbound - - - Yes
connections
For most scenarios, we recommend Azure AD Application Proxy as the modern solution. Web Application Proxy is
only preferred in scenarios that require a proxy server for AD FS, and you can't use custom domains in Azure
Active Directory.
Azure AD Application Proxy offers unique benefits when compared to similar products, including:
Extending Azure AD to on-premises resources
Cloud-scale security and protection
Features like Conditional Access and Multi-Factor Authentication are easy to enable
No components in the demilitarized zone
No inbound connections required
One access panel that your users can go to for all their applications, including O365, Azure AD integrated SaaS
apps, and your on-premises web apps.
Next steps
Use Azure AD Application to provide secure remote access to on-premises applications
Add a gallery app to your Azure AD organization
7/24/2019 • 2 minutes to read • Edit Online
Azure Active Directory (Azure AD ) has a gallery that contains thousands of pre-integrated applications that are
enabled with Enterprise single sign-on. This article describes the general steps for adding an app from the gallery
to your Azure AD organization.
IMPORTANT
First, check for your app in the List of tutorials on how to integrate SaaS apps with Azure Active Directory. You'll likely find
step-by-step guidance for adding and configuring the gallery app you want to add.
APPLICATION
PROPERTY ASSIGNED-USER
SETTINGS EXPERIENCE
Enabled for users User assignment Visible to users? Can assigned users Can assigned users
to sign-in? required? sign in? see the
application?*
yes no no yes no
no yes yes no no
no yes no no no
no no yes no no
no no no no no
APPLICATION
PROPERTY UNASSIGNED-USER
SETTINGS EXPERIENCE
Enabled for users User assignment Visible to users? Can unassigned Can unassigned
to sign in? required? users sign in? users see the
application?*
yes yes no no no
yes no no yes no
no yes yes no no
no yes no no no
no no yes no no
no no no no no
*Can the user see the application in the access panel and the Office 365 app launcher?
3. To use a custom logo, create a logo that is 215 by 215 pixels, and save it in PNG format. Then browse to
your logo and upload it.
4. When you're finished, select Save.
Next steps
Now that you've added the application to your Azure AD organization, choose a single sign-on method you want
to use and refer to the appropriate article below:
Configure SAML -based single sign-on
Configure password single sign-on
Configure linked sign-on
Add an unlisted (non-gallery) application to your
Azure AD organization
7/24/2019 • 3 minutes to read • Edit Online
In addition to the choices in the Azure AD application gallery, you have the option to add a non-gallery
application. You can add any application that already exists in your organization, or any third-party application
from a vendor who is not already part of the Azure AD gallery. Depending on your license agreement, the
following capabilities are available:
Self-service integration of any application that supports Security Assertion Markup Language (SAML ) 2.0
identity providers (SP -initiated or IdP -initiated)
Self-service integration of any web application that has an HTML -based sign-in page using password-based
SSO
Self-service connection of applications that use the System for Cross-Domain Identity Management (SCIM )
protocol for user provisioning
Ability to add links to any application in the Office 365 app launcher or the Azure AD access panel
This article describes how to add a non-gallery application to Enterprise Applications in the Azure portal
without writing code. If instead you're looking for developer guidance on how to integrate custom apps with Azure
AD, see Authentication Scenarios for Azure AD. When you develop an app that uses a modern protocol like
OpenId Connect/OAuth to authenticate users, you can register it with the Microsoft identity platform by using the
App registrations experience in the Azure portal.
2. Set the following options to determine how users who are assigned or unassigned to the application can
sign into the application and if a user can see the application in the access panel.
Enabled for users to sign-in determines whether users assigned to the application can sign in.
User assignment required determines whether users who aren't assigned to the application can
sign in.
Visible to user determines whether users assigned to an app can see it in the access panel and
O365 launcher.
Behavior for assigned users:
APPLICATION
PROPERTY ASSIGNED-USER
SETTINGS EXPERIENCE
Enabled for users User assignment Visible to users? Can assigned users Can assigned users
to sign-in? required? sign in? see the
application?*
yes no no yes no
no yes yes no no
no yes no no no
no no yes no no
no no no no no
APPLICATION
PROPERTY UNASSIGNED-USER
SETTINGS EXPERIENCE
Enabled for users User assignment Visible to users? Can unassigned Can unassigned
to sign in? required? users sign in? users see the
application?*
yes yes no no no
yes no no yes no
no yes yes no no
no yes no no no
no no yes no no
no no no no no
*Can the user see the application in the access panel and the Office 365 app launcher?
3. To use a custom logo, create a logo that is 215 by 215 pixels, and save it in PNG format. Then browse to
your logo and upload it.
4. When you're finished, select Save.
Next steps
Now that you've added the application to your Azure AD organization, choose a single sign-on method you want
to use and refer to the appropriate article below:
Configure SAML -based single sign-on
Configure password single sign-on
Configure linked sign-on
Change the name or logo of an enterprise
application in Azure Active Directory
5/16/2019 • 2 minutes to read • Edit Online
It's easy to change the name or logo for a custom enterprise application in Azure Active Directory (Azure AD ). You
must have the appropriate permissions to make these changes, and you must be the creator of the custom
application.
NOTE
Azure requires the logo image to be a PNG file, and it applies limits on width, height, and file size.
8. Select Save. If you chose a new logo, the Logo field's image changes to reflect the new logo file.
Next steps
Quickstart: View your organization's groups and members in Azure Active Directory
Assign a user or group to an enterprise app
Remove a user or group assignment from an enterprise app
Disable user sign-ins for an enterprise app
Configure SAML-based single sign-on to non-
gallery applications
7/23/2019 • 8 minutes to read • Edit Online
When you add a gallery app or a non-gallery web app to your Azure AD Enterprise Applications, one of the
single sign-on options available to you is SAML -based single sign-on. Choose SAML whenever possible for
applications that authenticate using one of the SAML protocols. With SAML single sign-on, Azure AD
authenticates to the application by using the user's Azure AD account. Azure AD communicates the sign-on
information to the application through a connection protocol. You can map users to specific application roles
based on rules you define in your SAML claims. This article describes how to configure SAML -based single
sign-on for a non-gallery app.
NOTE
Adding a gallery app? Find step-by-step setup instructions in the list of SaaS app tutorials
To configure SAML single sign-on for a non-gallery application without writing code, you need to have a
subscription or Azure AD Premium and the application must support SAML 2.0. For more information about
Azure AD versions, visit Azure AD pricing.
BASIC SAML
CONFIGURATION SETTING SP-INITIATED IDP-INITIATED DESCRIPTION
Identifier (Entity ID) Required for some apps Required for some apps Uniquely identifies the
application. Azure AD
sends the identifier to the
application as the
Audience parameter of
the SAML token. The
application is expected to
validate it. This value also
appears as the Entity ID in
any SAML metadata
provided by the
application. You can find
this value as the Issuer
element in the
AuthnRequest (SAML
request ) sent by the
application.
2. Verify the Name Identifier Value. The default value is user.principalname. The user identifier uniquely
identifies each user within the application. For example, if the email address is both the username and the
unique identifier, set the value to user.mail.
3. To modify the Name Identifier Value, select the Edit icon (a pencil) for the Name Identifier Value
field. Make the appropriate changes to the identifier format and source, as needed. For details, see Editing
NameId. Save the changes when you're done.
4. To configure group claims, select the Edit icon for the Groups returned in claim field. For details, see
Configure group claims.
5. To add a claim, select Add new claim at the top of the page. Enter the Name and select the appropriate
source. If you select the Attribute source, you'll need to choose the Source attribute you want to use. If
you select the Translation source, you'll need to choose the Transformation and Parameter 1 you want
to use. For details, see Adding application-specific claims. Save the changes when you're done.
6. Select Save. The new claim appears in the table.
NOTE
For additional ways to customize the SAML token from Azure AD to your application, see the following resources.
To create custom roles via the Azure portal, see Configure role claims.
To customize the claims via PowerShell, see Customize claims - PowerShell.
To modify the application manifest to configure optional claims for your application, see Configure optional
claims.
To set token lifetime policies for refresh tokens, access tokens, session tokens, and ID tokens, see Configure
token lifetimes. Or, to restrict authentication sessions via Azure AD Conditional Access, see authentication
session management capabilities.
Next steps
Assign users or groups to the application
Configure automatic user account provisioning
Configure password single sign-on
7/23/2019 • 3 minutes to read • Edit Online
When you add a gallery app or a non-gallery web app to your Azure AD Enterprise Applications, one of the single
sign-on options available to you is password-based single sign-on. This option is available for any web with an
HTML sign-in page. Password-based SSO, also referred to as password vaulting, enables you to manage user
access and passwords to web applications that don't support identity federation. It's also useful for scenarios
where several users need to share a single account, such as to your organization's social media app accounts.
Password-based SSO is a great way to get started integrating applications into Azure AD quickly, and allows you
to:
Enable Single Sign-on for your users by securely storing and replaying usernames and passwords for
the application you’ve integrated with Azure AD
Support applications that require multiple sign-in fields for applications that require more than just
username and password fields to sign in
Customize the labels of the username and password input fields your users see on the Application
Access Panel when they enter their credentials
Allow your users to provide their own usernames and passwords for any existing application accounts they
are typing in manually on the Application Access Panel
Allow a member of the business group to specify the usernames and passwords assigned to a user by
using the Self-Service Application Access feature
Allow an administrator to specify a username and password to be used by individuals or groups when
signing in to the application by using the Update Credentials feature
NOTE
Your next step is to Assign users or groups to the application. After you've assigned users and groups, you can provide
credentials to be used on behalf of a user when they sign in to the application. Select Users and groups, select the
checkbox for the user's or group's row, and then click Update Credentials. Then, enter the username and password to be
used on behalf of the user or group. Otherwise, users will be prompted to enter the credentials themselves upon launch.
Manual configuration
If Azure AD's parsing attempt fails, you can configure sign-on manually.
1. Under <application name> Configuration, select Configure <application name> Password Single
Sign-on Settings to display the Configure sign-on page.
2. Select Manually detect sign-in fields. Additional instructions describing the manual detection of sign-in
fields appear.
3. Select Capture sign-in fields. A capture status page opens in a new tab, showing the message metadata
capture is currently in progress.
4. If the Access Panel Extension Required box appears in a new tab, select Install Now to install the My
Apps Secure Sign-in Extension browser extension. (The browser extension requires Microsoft Edge,
Chrome, or Firefox.) Then install, launch, and enable the extension, and refresh the capture status page.
The browser extension then opens another tab that displays the entered URL.
5. In the tab with the entered URL, go through the sign-in process. Fill in the username and password fields,
and try to sign in. (You don't have to provide the correct password.)
A prompt asks you to save the captured sign-in fields.
6. Select OK. The browser extension updates the capture status page with the message Metadata has been
updated for the application. The browser tab closes.
7. In the Azure AD Configure sign-on page, select Ok, I was able to sign-in to the app successfully.
8. Select OK.
After the capture of the sign-in page, you may assign users and groups, and you can set up credential policies just
like regular password SSO applications.
NOTE
You can upload a tile logo for the application using the Upload Logo button on the Configure tab for the application.
Next steps
Assign users or groups to the application
Configure automatic user account provisioning
Configure linked sign-on
8/6/2019 • 2 minutes to read • Edit Online
When you add a gallery or non-gallery web application, one of the single sign-on options available to you is
linked sign-on. Select this option to add a link to the application in your organization's Azure AD Access Panel or
Office 365 portal. You can use this method to add links to custom web applications that currently use Active
Directory Federation Services (or other federation service) instead of Azure AD for authentication. Or, you can
add deep links to specific SharePoint pages or other web pages that you just want to appear on your user's Access
Panels.
Next steps
Assign users or groups to the application
Configure automatic user account provisioning
Configure the way end-users consent to an
application in Azure Active Directory
6/28/2019 • 2 minutes to read • Edit Online
Learn how to configure the way users consent to application permissions. You can simplify the user experience by
granting admin consent. This article gives the different ways you can configure user consent. The methods apply
to all end users in your Azure Active Directory (Azure AD ) tenant.
For more information on consenting to applications, see Azure Active Directory consent framework.
Prerequisites
Granting admin consent requires you to sign in as global administrator, an application administrator, or a cloud
application administrator.
To restrict access to applications, you need to require user assignment and then assign users or groups to the
application. For more information, see Methods for assigning users and groups.
Next steps
Consent and Integrating Apps to AzureAD
Consent and Permissioning for AzureAD v2.0 converged Apps
AzureAD StackOverflow
Assign users and groups to an application in Azure
Active Directory
8/12/2019 • 7 minutes to read • Edit Online
This article shows you how to assign users or groups to an application in Azure Active Directory (Azure AD ).
Users must first be assigned to an application before an administrator can grant them access to do the following:
Access an application by navigating to the application’s URL directly (also known as SP -initiated
sign-on).
Access an application by using the User Access URL on an application’s Properties page (also known as
IDP -initiated sign on).
See an application appear on their Application Access Panel or mobile application.
See an application appear on their Office 365 Application Launcher.
The availability of group-based assignment is determined by your license agreement. Group-based assignment is
supported for Security groups only. Nested group memberships and O365 groups are not currently supported.
Prerequisites
Before you can assign users and groups to an application, you must require user assignment. To require user
assignment:
1. Log in to the Azure portal with an administrator account.
2. Click on the All services item in the main menu.
3. Choose the directory you are using for the application.
4. Click on the Enterprise applications tab.
5. Select the application from the list of applications associated with this directory.
6. Click the Properties tab.
7. Change the User assignment required? toggle to Yes.
8. Click the Save button at the top of the screen.
Assign users
To assign one or more users to an application directly, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to assign a user to from the list.
7. Once the application loads, click Users and Groups from the application’s left hand navigation menu.
8. Click the Add button on top of the Users and Groups list to open the Add Assignment pane.
9. click the Users and groups selector from the Add Assignment pane.
10. Type in the full name or email address of the user you are interested in assigning into the Search by
name or email address search box.
11. Hover over the user in the list to reveal a checkbox. Click the checkbox next to the user’s profile photo or
logo to add your user to the Selected list.
12. Optional: If you would like to add more than one user, type in another full name or email address
into the Search by name or email address search box, and click the checkbox to add this user to the
Selected list.
13. When you are finished selecting users, click the Select button to add them to the list of users and groups
to be assigned to the application.
14. Optional: click the Select Role selector in the Add Assignment pane to select a role to assign to the
users you have selected.
15. Click the Assign button to assign the application to the selected users.
After a short period of time, the users you have selected will be able to launch these applications using the
methods described in the solution description section.
Assign groups
To assign one or more groups to an application directly, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to assign a user to from the list.
7. Once the application loads, click Users and Groups from the application’s left hand navigation menu.
8. Click the Add button on top of the Users and Groups list to open the Add Assignment pane.
9. click the Users and groups selector from the Add Assignment pane.
10. Type in the full group name of the group you are interested in assigning into the Search by name or
email address search box.
11. Hover over the group in the list to reveal a checkbox. Click the checkbox next to the group’s profile photo
or logo to add your user to the Selected list.
12. Optional: If you would like to add more than one group, type in another full group name into the
Search by name or email address search box, and click the checkbox to add this group to the Selected
list.
13. When you are finished selecting groups, click the Select button to add them to the list of users and groups
to be assigned to the application.
14. Optional: click the Select Role selector in the Add Assignment pane to select a role to assign to the
groups you have selected.
15. Click the Assign button to assign the application to the selected groups.
After a short period of time, the users within the groups you have selected will be able to launch these
applications using the methods described in the solution description section. If these are dynamic groups, there
may be some additional processing delay in these assignments appearing for users within these assigned groups.
NOTE
Groups are not supported.
13. Optional: For applications which expose roles, if you wish to assign self-service approved users to a
role, click the selector next to the To which role should users be assigned in this application? to select
the role to which these users should be assigned.
14. Click the Save button at the top of the pane to finish.
Once you complete Self-service application configuration, users can navigate to their Application Access Panel
and click the +Add button to find the apps to which you have enabled Self-service access. Business approvers
also see a notification in their Application Access Panel. You can enable an email notifying them when a user has
requested access to an application that requires their approval.
These approvals support single approval workflows only, meaning that if you specify multiple approvers, any
single approver may approve access to the application.
Next steps
Provide single sign-on to your apps with Application Proxy
Assign a user or group to an enterprise app in Azure
Active Directory
8/7/2019 • 4 minutes to read • Edit Online
To assign a user or group to an enterprise app, you must have the appropriate permissions to manage the
enterprise app, and you must be global admin for the directory. For Microsoft Applications (such as Office 365
apps), use PowerShell to assign users to an enterprise app.
NOTE
For licensing requirements for the features discussed in this article, see the Azure Active Directory pricing page.
NOTE
You need to install the AzureAD module (use the command Install-Module -Name AzureAD ). If prompted to
install a NuGet module or the new Azure Active Directory V2 PowerShell module, type Y and press ENTER.
# Get the user to assign, and the service principal for the app to assign to
$user = Get-AzureADUser -ObjectId "$username"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
$appRole = $sp.AppRoles | Where-Object { $_.DisplayName -eq $app_role_name }
For more information about how to assign a user to an application role visit the documentation for New -
AzureADUserAppRoleAssignment
To assign a group to an enterprise app, you need to replace Get-AzureADUser with Get-AzureADGroup .
Example
This example assigns the user Britta Simon to the Microsoft Workplace Analytics application using PowerShell.
1. In PowerShell, assign the corresponding values to the variables $username, $app_name and
$app_role_name.
2. In this example, we don't know what is the exact name of the application role we want to assign to Britta
Simon. Run the following commands to get the user ($user) and the service principal ($sp) using the user
UPN and the service principal display names.
# Get the user to assign, and the service principal for the app to assign to
$user = Get-AzureADUser -ObjectId "$username"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
3. Run the command $sp.AppRoles to display the roles available for the Workplace Analytics application. In
this example, we want to assign Britta Simon the Analyst (Limited access) Role.
4. Assign the role name to the $app_role_name variable.
5. Run the following command to assign the user to the app role:
Next steps
See all of my groups
Remove a user or group assignment from an enterprise app
Disable user sign-ins for an enterprise app
Change the name or logo of an enterprise app
How to use self-service application access
5/16/2019 • 3 minutes to read • Edit Online
Before your users can self-discover applications from their access panel, you need to enable Self-service
application access to any applications that you wish to allow users to self-discover and request access to.
This feature is a great way for you to save time and money as an IT group, and is highly recommended as part of a
modern applications deployment with Azure Active Directory.
Using this feature, you can:
Let users self-discover applications from the Application Access Panel without bothering the IT group.
Add those users to a pre-configured group so you can see who has requested access, remove access, and
manage the roles assigned to them.
Optionally allow a business approver to approve application access requests so the IT group doesn’t have to.
Optionally configure up to 10 individuals who may approve access to this application.
Optionally allow a business approver to set the passwords those users can use to sign in to the application,
right from the business approver’s Application Access Panel.
Optionally automatically assign self-service assigned users to an application role directly.
Next steps
Setting up Azure Active Directory for self-service group management
How to remove a user's access to an application
5/16/2019 • 2 minutes to read • Edit Online
This article helps you to understand how to remove a user's access to an application.
Next steps
Managing access to apps
Remove a user or group assignment from an
enterprise app in Azure Active Directory
7/22/2019 • 2 minutes to read • Edit Online
It's easy to remove a user or a group from assigned access to one of your enterprise applications in Azure Active
Directory (Azure AD ). You need the appropriate permissions to manage the enterprise app. And, you must be
global admin for the directory.
NOTE
For Microsoft Applications (such as Office 365 apps), use PowerShell to remove users to an enterprise app.
NOTE
You need to install the AzureAD module (use the command Install-Module -Name AzureAD ). If prompted to
install a NuGet module or the new Azure Active Directory V2 PowerShell module, type Y and press ENTER.
#if you run the following, it will show you what is assigned what
$assignments | Select *
#To remove the App role assignment run the following command.
Remove-AzureADServiceAppRoleAssignment -ObjectId $spo.ObjectId -AppRoleAssignmentId
$assignments[assignment #].ObjectId
Next steps
See all of my groups
Assign a user or group to an enterprise app
Disable user sign-ins for an enterprise app
Change the name or logo of an enterprise app
Hide applications from end-users in Azure Active
Directory
5/16/2019 • 2 minutes to read • Edit Online
Instructions for how to hide applications from end-users' MyApps panel or Office 365 launcher. When an
application is hidden, users still have permissions to the application.
Prerequisites
Application administrator privileges are required to hide an application from the MyApps panel and Office 365
launcher.
Global administrator privileges are required to hide all Office 365 applications.
Next steps
See all my groups
Assign a user or group to an enterprise app
Remove a user or group assignment from an enterprise app
Change the name or logo of an enterprise app
Disable user sign-ins for an enterprise app in Azure
Active Directory
7/11/2019 • 2 minutes to read • Edit Online
It's easy to disable an enterprise application so no users can sign in to it in Azure Active Directory (Azure AD ). You
need the appropriate permissions to manage the enterprise app. And, you must be global admin for the directory.
Next steps
See all my groups
Assign a user or group to an enterprise app
Remove a user or group assignment from an enterprise app
Change the name or logo of an enterprise app
How to configure self-service application assignment
5/16/2019 • 3 minutes to read • Edit Online
Before your users can self-discover applications from their access panel, you need to enable Self-service
application access to any applications that you wish to allow users to self-discover and request access to.
This feature is a great way for you to save time and money as an IT group, and is highly recommended as part of a
modern applications deployment with Azure Active Directory.
Using this feature, you can:
Let users self-discover applications from the Application Access Panel without bothering the IT group.
Add those users to a pre-configured group so you can see who has requested access, remove access, and
manage the roles assigned to them.
Optionally allow a business approver to approve application access requests so the IT group doesn’t have to.
Optionally configure up to 10 individuals who may approve access to this application.
Optionally allow a business approver to set the passwords those users can use to sign in to the application,
right from the business approver’s Application Access Panel.
Optionally automatically assign self-service assigned users to an application role directly.
10. Optional: If you wish to require a business approval before users are allowed access, set the Require
approval before granting access to this application? toggle to Yes.
11. Optional: For applications using password single-sign on only, if you wish to allow those business
approvers to specify the passwords that are sent to this application for approved users, set the Allow
approvers to set user’s passwords for this application? toggle to Yes.
12. Optional: To specify the business approvers who are allowed to approve access to this application, click the
selector next to the label Who is allowed to approve access to this application? to select up to 10
individual business approvers.
NOTE
Groups are not supported.
13. Optional: For applications which expose roles, if you wish to assign self-service approved users to a
role, click the selector next to the To which role should users be assigned in this application? to select
the role to which these users should be assigned.
14. Click the Save button at the top of the blade to finish.
Once you complete Self-service application configuration, users can navigate to their Application Access Panel and
click the +Add button to find the apps to which you have enabled Self-service access. Business approvers also see
a notification in their Application Access Panel. You can enable an email notifying them when a user has requested
access to an application that requires their approval.
These approvals support single approval workflows only, meaning that if you specify multiple approvers, any single
approver may approver access to the application.
Next steps
Setting up Azure Active Directory for self-service group management
Configure Azure Active Directory sign in behavior for
an application by using a Home Realm Discovery
policy
7/24/2019 • 10 minutes to read • Edit Online
This article provides an introduction to configuring Azure Active Directory authentication behavior for federated
users. It covers configuration of auto-acceleration and authentication restrictions for users in federated domains.
Auto-acceleration
Some organizations configure domains in their Azure Active Directory tenant to federate with another IdP, such as
AD FS for user authentication.
When a user signs into an application, they are first presented with an Azure AD sign-in page. After they have
typed their UPN, if they are in a federated domain they are then taken to the sign-in page of the IdP serving that
domain. Under certain circumstances, administrators might want to direct users to the sign-in page when they're
signing in to specific applications.
As a result users can skip the initial Azure Active Directory page. This process is referred to as “sign-in auto-
acceleration.”
In cases where the tenant is federated to another IdP for sign-in, auto-acceleration makes user sign-in more
streamlined. You can configure auto-acceleration for individual applications.
NOTE
If you configure an application for auto-acceleration, guest users cannot sign in. If you take a user straight to a federated IdP
for authentication, there is no way to for them to get back to the Azure Active Directory sign-in page. Guest users, who
might need to be directed to other tenants or an external IdP such as a Microsoft account, can't sign in to that application
because they're skipping the Home Realm Discovery step.
NOTE
If a domain hint is included in an authentication request, its presence overrides auto-acceleration that is set for the
application in HRD policy.
IMPORTANT
Only enable direct authentication if you have Password Hash Sync turned on and you know it's okay to authenticate this
application without any policies implemented by your on-premises IdP. If you turn off Password Hash Sync, or turn off
Directory Synchronization with AD Connect for any reason, you should remove this policy to prevent the possibility of direct
authentication using a stale password hash.
{
"HomeRealmDiscoveryPolicy":
{
"AccelerateToFederatedDomain":true,
"PreferredDomain":"federated.example.edu",
"AllowCloudPasswordValidation":true
}
}
Connect-AzureAD -Confirm
3. Run the following command to see all the policies in your organization:
Get-AzureADPolicy
The following policy auto-accelerates users to an AD FS sign-in screen there is more than one federated domain in
your tenant. If you have more than one federated domain that authenticates users for applications, you need
specify the domain to auto-accelerate.
New-AzureADPolicy -Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AccelerateToFederatedDomain`":true,
`"PreferredDomain`":`"federated.example.edu`"}}") -DisplayName MultiDomainAutoAccelerationPolicy -Type
HomeRealmDiscoveryPolicy
To create a policy to enable username/password authentication for federated users directly with Azure Active
Directory for specific applications, run the following command:
To see your new policy and get its ObjectID, run the following command:
Get-AzureADPolicy
To apply the HRD policy after you have created it, you can assign it to multiple application service principals.
Step 2: Locate the service principal to which to assign the policy
You need the ObjectID of the service principals to which you want to assign the policy. There are several ways to
find the ObjectID of service principals.
You can use the portal, or you can query Microsoft Graph. You can also go to the Graph Explorer Tool and sign in
to your Azure AD account to see all your organization's service principals.
Because you are using PowerShell, you can use the following cmdlet to list the service principals and their IDs.
Get-AzureADServicePrincipal
Add-AzureADServicePrincipalPolicy -Id <ObjectID of the Service Principal> -RefObjectId <ObjectId of the Policy>
You can repeat this command for each service principal to which you want to add the policy.
In the case where an application already has a HomeRealmDiscovery policy assigned, you won’t be able to add a
second one. In that case, change the definition of the Home Realm Discovery policy that is assigned to the
application to add additional parameters.
Step 4: Check which application service principals your HRD policy is assigned to
To check which applications have HRD policy configured, use the Get-AzureADPolicyAppliedObject cmdlet.
Pass it the ObjectID of the policy that you want to check on.
Note the ObjectID of the policy that you want to list assignments for.
Step 2: List the service principals to which the policy is assigned
Remove-AzureADApplicationPolicy -id <ObjectId of the Service Principal> -PolicyId <ObjectId of the policy>
Step 3: Check removal by listing the service principals to which the policy is assigned
Next steps
For more information about how authentication works in Azure AD, see Authentication scenarios for Azure AD.
For more information about user single sign-on, see Single sign-on to applications in Azure Active Directory.
Visit the Active Directory developer's guide for an overview of all developer-related content.
Resources for migrating applications to Azure Active
Directory
6/13/2019 • 2 minutes to read • Edit Online
Resources to help you migrate application access and authentication to Azure Active Directory (Azure AD ). Take
this short survey (https://aka.ms/AppsMigrationFeedback) to provide feedback on your experience migrating apps
to Azure AD (including blockers to migration, need for tooling / guidance, or reasons for retaining your on-
premises IDP ).
RESOURCE DESCRIPTION
Migrating your apps to Azure AD This white paper presents the benefits of migration, and
describes how to plan for migration in four clearly-outlined
phases: discovery, classification, migration, and ongoing
management. You’ll be guided through how to think about
the process and break down your project into easy-to-
consume pieces. Throughout the document are links to
important resources that will help you along the way.
Solution guide: Migrating apps from Active Directory This solution guide walks you through the same four phases
Federation Services (AD FS) to Azure AD of planning and executing an application migration project
described at a higher level in the migration whitepaper. In this
guide, you’ll learn how to apply those phases to the specific
goal of moving an application from Azure Directory Federated
Services (AD FS) to Azure AD.
Tool: Active Directory Federation Services Migration Readiness This is a script you can run on your on-premises Active
Script Directory Federation Services (AD FS) server to determine the
readiness of apps for migration to Azure AD.
Deployment plan: Migrating from AD FS to password hash With password hash synchronization, hashes of user
sync passwords are synchronized from on-premises Active
Directory to Azure AD. This allows Azure AD to authenticate
users without interacting with the on-premises Active
Directory.
Deployment plan: Migrating from AD FS to pass-through Azure AD pass-through authentication helps users sign in to
authentication both on-premises and cloud-based applications by using the
same password. This feature provides your users with a better
experience since they have one less password to remember. It
also reduces IT helpdesk costs because users are less likely to
forget how to sign in when they only need to remember one
password. When people sign in using Azure AD, this feature
validates users' passwords directly against your on-premises
Active Directory.
Deployment plan: Enabling Single Sign-on to a SaaS app with Single sign-on (SSO) helps you access all the apps and
Azure AD resources you need to do business, while signing in only once,
using a single user account. For example, after a user has
signed in, the user can move from Microsoft Office, to
SalesForce, to Box without authenticating (for example, typing
a password) a second time.
RESOURCE DESCRIPTION
Deployment plan: Extending apps to Azure AD with Providing access from employee laptops and other devices to
Application Proxy on-premises applications has traditionally involved virtual
private networks (VPNs) or demilitarized zones (DMZs). Not
only are these solutions complex and hard to make secure, but
they are costly to set up and manage. Azure AD Application
Proxy makes it easier to access on-premises applications.
Deployment plans Find more deployment plans for deploying features such as
multi-Factor authentication, Conditional Access, user
provisioning, seamless SSO, self-service password reset, and
more!
Move applications from AD FS to Azure AD
7/10/2019 • 16 minutes to read • Edit Online
This article helps you understand how to move applications from AD FS to Azure Active Directory (Azure AD ). It focuses
on federated SaaS applications.
This article does not provide step-by-step guidance. It provides conceptual guidance to help you achieve the migration by
understanding how on-premises configurations translate to Azure AD. It also covers common scenarios.
Introduction
If you have an on-premises directory that contains user accounts, chances are you have at least one or two apps. And
these apps are configured for users to access by signing on with those identities.
And if you’re like most organizations, you’re probably somewhere along the road to adopting cloud applications and
identities. Perhaps you’re up and running with Office 365 and Azure AD Connect. Maybe you’ve set up cloud-based SaaS
applications for some key workloads but not all.
Many organizations have SaaS or custom line-of-business (LOB ) apps federated directly to an on-premises sign-on
service such as Active Directory Federation Services (AD FS ), alongside Office 365 and Azure AD-based apps. This guide
describes why and how to move your applications to Azure AD.
NOTE
This guide provides detailed information on SaaS app configuration and migration, with high-level information about custom LOB
apps. More detailed guidance for custom LOB apps is planned for the future.
Reasons for moving apps to Azure AD
For an organization that already uses AD FS, Ping, or another on-premises authentication provider, moving apps to Azure
AD enables the following benefits:
More secure access
Configure granular per-application access controls, including Azure Multi-Factor Authentication, by using Azure
AD Conditional Access. The policies can be applied to SaaS and custom apps in the same way that you might be
doing today for Office 365.
To detect threats and help protect sign-on based on machine learning and heuristics that identify risky traffic,
take advantage of Azure AD Identity Protection.
Azure AD B2B collaboration
After sign-on to SaaS apps is based on Azure AD, you can give partners access to cloud resources with Azure AD
B2B collaboration.
Easier admin experience and additional capabilities of Azure AD
Azure AD, as an identity provider for SaaS apps, supports additional capabilities such as:
Token signing certificates per application.
Configurable certificate expiration dates.
Automated provisioning of user accounts (in key Azure Marketplace apps) based on Azure AD identities.
Keeping the benefits of an on-premises identity provider
While you're gaining the Azure AD benefits, you can keep using your on-premises solution for authentication. That
way, benefits like on-premises Multi-Factor Authentication solutions, logging, and auditing stay in place.
Helping with retirement of the on-premises identity provider
For organizations that want to retire the on-premises authentication product, moving apps to Azure AD enables an
easier transition by getting some of the work out of the way.
CORRESPONDING
APP CONFIGURATION LOCATION IN AD FS LOCATION IN AZURE AD
ELEMENT DESCRIPTION CONFIGURATION CONFIGURATION SAML TOKEN ELEMENT
App sign-on URL URL of the sign-in page N/A In Azure AD, the sign- N/A
of this application. This on URL is configured
is where the user goes within the Azure portal
to sign in to the app in in the application’s
an SP-initiated SAML Single sign-on
flow. properties as the sign-
on URL.
(You might have to
select Show advanced
URL settings to see the
sign-on URL.)
CORRESPONDING
APP CONFIGURATION LOCATION IN AD FS LOCATION IN AZURE AD
ELEMENT DESCRIPTION CONFIGURATION CONFIGURATION SAML TOKEN ELEMENT
App reply URL URL of the app from Find it in the AD FS In Azure AD, the reply Maps to the
the identity provider's relying party trust for URL is configured Destination element in
(IdP’s) perspective. This the app. Right-click the within the Azure portal the SAML token.
is where the user and relying party, select in the application’s Example value:
token are sent after the Properties, and then Single sign-on https://contoso.my.salesforce.com
user has signed on at select the Endpoints properties as the reply
the IdP. tab. URL.
This is sometimes called (You might have to
the “SAML assertion select Show advanced
consumer endpoint.” URL settings to see the
reply URL.)
App sign-out URL URL to which “sign-out Find it in AD FS N/A. Azure AD does not N/A
cleanup” requests are Management under support “single logout,”
sent when a user signs Relying Party Trusts. meaning sign-out of all
out from an app, to Right-click the relying apps. It simply signs
sign out all other apps party, select out the user from Azure
to which the IdP has Properties, and then AD itself.
signed on the user. select the Endpoints
tab.
App identifier Identifier of the app In AD FS, this is the In Azure AD, the Corresponds to the
from the IdP’s relying party ID. Right- identifier is configured Audience element in
perspective. The sign- click the relying party within the Azure portal the SAML token.
on URL value is often trust, select Properties, in the application’s
used for the identifier and then select the Single sign-on
(but not always). Identifiers tab. properties as the
Sometimes the app identifier under
calls this the “entity ID." Domain and URLs.
(You might need to
select the Show
advanced URL
settings check box.)
App federation Location of the app’s Find the app’s N/A. Azure AD does not N/A
metadata federation metadata. federation metadata support consuming
The IdP uses it to URL in the AD FS application federation
automatically update relying party trust for metadata directly.
specific configuration the app. Right-click the
settings, such as trust, select Properties,
endpoints or and then select the
encryption certificates. Monitoring tab.
User identifier/NameID Attribute that is used In AD FS, you can find In Azure AD, you can Communicated from
to uniquely indicate the this as a claim rule on find the user identifier the IdP to the app as
user identity from the relying party. In within the Azure portal the NameID element in
Azure AD or AD FS to most cases, the claim in the application’s the SAML token.
your app. rule issues a claim with Single sign-on
This attribute is a type that ends with properties under the
typically either the UPN “nameidentifier.” header User
or the email address of Attributes.
the user. By default, the UPN is
used.
CORRESPONDING
APP CONFIGURATION LOCATION IN AD FS LOCATION IN AZURE AD
ELEMENT DESCRIPTION CONFIGURATION CONFIGURATION SAML TOKEN ELEMENT
Other claims to be sent In addition to the user In AD FS, you can find In Azure AD, you can N/A
to the app identifier/NameID, this as other claim rules find it within the Azure
other claim information on the relying party. portal in the
is commonly sent from application’s Single
the IdP to the app. sign-on properties
Examples include first under the header User
name, last name, email Attributes. Select View
address, and groups and edit all other user
that the user is a attributes.
member of.
IdP Sign-on URL of the IdP from The AD FS sign-on URL is the The corresponding value for
sign-on the app’s perspective (where AD FS federation service name Azure AD follows the pattern
URL the user is redirected for login). followed by “/adfs/ls/.” For where {tenant-id} is replaced
example: with your tenant ID. Find it in
https://fs.contoso.com/adfs/ls/ the Azure portal under Azure
Active Directory >
Properties as Directory ID.
For apps that use the SAML-P
protocol:
https://login.microsoftonline.co
m/{tenant-id}/saml2
IdP Sign-out URL of the IdP from For AD FS, the sign-out URL is The corresponding value for
sign-out the app’s perspective (where either the same as the sign-on Azure AD depends on whether
URL the user is redirected when URL, or the same URL with the app supports SAML 2.0
they choose to sign out of the “wa=wsignout1.0” appended. sign-out.
app). For example: If the app supports SAML
https://fs.contoso.com/adfs/ls/ sign-out, the value follows the
?wa=wsignout1.0 pattern where the value for
{tenant-id} is replaced with the
tenant ID. Find it in the Azure
portal under Azure Active
Directory > Properties as
Directory ID:
https://login.microsoftonline.co
m/{tenant-id}/saml2
Token Certificate whose private key Find the AD FS token signing In Azure AD, you can find the
signing the IdP uses to sign issued certificate in AD FS token signing certificate within
certificate tokens. It verifies that the Management under the Azure portal in the
token came from the same IdP Certificates. application’s Single sign-on
that the app is configured to properties under the header
trust. SAML Signing Certificate.
There, you can download the
certificate for upload to the
app.
If the application has more
than one certificate, you can
find all certificates in the
federation metadata XML file.
Identifier/ Identifier of the IdP from the The identifier for AD FS is The corresponding value for
“issuer” app’s perspective (sometimes usually the federation service Azure AD follows the pattern
called the “issuer ID”). identifier in AD FS where the value for {tenant-id}
In the SAML token, the value Management under Service > is replaced with the tenant ID.
appears as the Issuer element. Edit Federation Service Find it in the Azure portal
Properties. For example: under Azure Active
http://fs.contoso.com/adfs/serv Directory > Properties as
ices/trust Directory ID:
https://sts.windows.net/{tenant
-id}/
IdP Location of the IdP’s publicly Find the AD FS federation The corresponding value for
federation available federation metadata. metadata URL in AD FS Azure AD follows the pattern
metadata (Some apps use federation Management under Service > https://login.microsoftonline.co
metadata as an alternative to Endpoints > Metadata > m/{TenantDomainName}/Feder
the administrator configuring Type: Federation Metadata. ationMetadata/2007-
URLs, identifier, and token For example: 06/FederationMetadata.xml.
signing certificate individually.) https://fs.contoso.com/Federati The value for
onMetadata/2007- {TenantDomainName} is
06/FederationMetadata.xml replaced with your tenant’s
name in the format
“contoso.onmicrosoft.com.”
For more information, see
Federation metadata.
NOTE
Azure AD is constantly evolving to add capabilities in this area. We update this article on a regular basis.
Configure Azure AD
Configure single sign-on (SSO) settings for the SaaS app
In Azure AD, you configure SAML sign-on (as required by your app) in the Single sign-on properties of the app, under
User Attributes.
Select View and edit all other user attributes to see the attributes to send as claims in the security token.
Select a specific attribute row to edit, or select Add attribute to add a new attribute.
Next steps
Managing applications with Azure Active Directory
Manage access to apps
Azure AD Connect federation
Problem adding an Azure AD Gallery application
5/16/2019 • 4 minutes to read • Edit Online
This article helps you understand the common problems people face when adding Azure AD Gallery applications
and what you can do to resolve them.
NOTE
You cannot click notifications in a Successful or In Progress state.
3. Use the information under Notification Details to understand more details about the problem.
4. If you still need help, you can also share this information with a support engineer or the product group to
get help with your problem.
5. Click the copy icon to the right of the Copy error textbox to copy all the notification details to share with a
support or product group engineer.
This article helps you understand the common problems people face when adding custom non-gallery
applications and what you can do to resolve them.
NOTE
You cannot click notifications in a Successful or In Progress state.
3. Use the information under Notification Details to understand more details about the problem.
4. If you still need help, you can also share this information with a support engineer or the product group to
get help with your problem.
5. Click the copy icon to the right of the Copy error textbox to copy all the notification details to share with a
support or product group engineer.
Many applications that integrate with Azure Active Directory require permissions to various resources in order to
run. When these resources are also integrated with Azure Active Directory, permissions to access them is
requested using the Azure AD consent framework.
This results in a consent prompt being shown the first time an application is used, which is often a one-time
operation.
Next steps
Apps, permissions, and consent in Azure Active Directory (v1.0 endpoint)
Scopes, permissions, and consent in the Azure Active Directory (v2.0 endpoint)
Unexpected error when performing consent to an
application
5/16/2019 • 3 minutes to read • Edit Online
This article discusses errors that can occur during the process of consenting to an application. If you are
troubleshooting unexpected consent prompts that do not contain any error messages, see Authentication
Scenarios for Azure AD.
Many applications that integrate with Azure Active Directory require permissions to access other resources in
order to function. When these resources are also integrated with Azure Active Directory, permissions to access
them is often requested using the common consent framework. A consent prompt is displayed, which generally
occurs the first time an application is used but can also occur on a subsequent use of the application.
Certain conditions must be true for a user to consent to the permissions an application requires. If these conditions
are not met, the following errors can occur.
Next steps
Apps, permissions, and consent in Azure Active Directory (v1 endpoint)
Scopes, permissions, and consent in the Azure Active Directory (v2.0 endpoint)
Problems signing in to an application using a deeplink
5/16/2019 • 9 minutes to read • Edit Online
The Access Panel is a web-based portal which enables a user with a work or school account in Azure Active
Directory (Azure AD ) to view and start cloud-based applications that the Azure AD administrator has granted them
access to.
These applications are configured on behalf of the user in the Azure AD portal. The application must be configured
properly and assigned to the user or a group the user is a member of to see the application in the Access Panel.
Deep links or User access URLs are links your users may use to access their password-SSO applications directly
from their browsers URL bars. By navigating to this link, users be automatically signed into the application without
having to go to the Access Panel first. This is the same link that users use to access these applications from the
Office 365 application launcher.
Next steps
Provide single sign-on to your apps with Application Proxy
Problems signing in to an application from the access
panel
5/16/2019 • 18 minutes to read • Edit Online
The Access Panel is a web-based portal which enables a user with a work or school account in Azure Active
Directory (Azure AD ) to view and start cloud-based applications that the Azure AD administrator has granted them
access to.
These applications are configured on behalf of the user in the Azure AD portal. The application must be configured
properly and assigned to the user or a group the user is a member of to see the application in the Access Panel.
The type of apps a user may be seeing fall in the following categories:
Office 365 Applications
Microsoft and third-party applications configured with federation-based SSO
Password-based SSO applications
Applications with existing SSO solutions
NOTE
Azure AD select the format for the NameID attribute (User Identifier) based on the value selected or the format
requested by the application in the SAML AuthRequest. For more information visit the article Single Sign-On SAML
protocol under the section NameIDPolicy.
9. To add user attributes, click View and edit all other user attributes to edit the attributes to be sent to the
application in the SAML token when users sign in.
To add an attribute:
a. click Add attribute. Enter the Name and the select the Value from the dropdown.
b. Click Save. You see the new attribute in the table.
Download the Azure AD metadata or certificate
To download the application metadata or certificate from Azure AD, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you have configured single sign-on.
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Go to SAML Signing Certificate section, then click Download column value. Depending on what the
application requires configuring single sign-on, you see either the option to download the Metadata XML or
the Certificate.
Azure AD doesn’t provide a URL to get the metadata. The metadata can only be retrieved as an XML file.
How to configure federated single sign-on for a non-gallery application
To configure a non-gallery application, you need to have Azure AD premium and the application supports SAML
2.0. For more information about Azure AD versions, visit Azure AD pricing.
Configure the application’s metadata values in Azure AD (Sign on URL, Identifier, Reply URL )
Select User Identifier and add user attributes to be sent to the application
Retrieve Azure AD metadata and certificate
Configure Azure AD metadata values in the application (Sign on URL, Issuer, Logout URL and certificate)
Configure the application’s metadata values in Azure AD (Sign on URL, Identifier, Reply URL )
To configure single sign-on for an application that is not in the Azure AD gallery, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click the Add button at the top-right corner on the Enterprise Applications pane.
6. click Non-gallery application in the Add your own app section.
7. Enter the name of the application in the Name textbox.
8. Click Add button, to add the application.
9. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
10. Select SAML -based Sign-on in the Mode dropdown
11. Enter the required values in Domain and URLs. You should get these values from the application vendor.
a. To configure the application as IdP -initiated SSO, enter the Reply URL and the Identifier.
b. Optional: To configure the application as SP -initiated SSO, the Sign-on URL is a required value.
12. In the User attributes, select the unique identifier for your users in the User Identifier dropdown.
13. Optional: click View and edit all other user attributes to edit the attributes to be sent to the application
in the SAML token when users sign in.
To add an attribute:
a. click Add attribute. Enter the Name and the select the Value from the dropdown.
b. Click Save. You see the new attribute in the table.
14. click Configure <application name> to access documentation on how to configure single sign-on in the
application. Also, you have Azure AD URLs and certificate required for the application.
Select User Identifier and add user attributes to be sent to the application
To select the User Identifier or add user attributes, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you have configured single sign-on.
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Under the User attributes section, select the unique identifier for your users in the User Identifier
dropdown. The selected option needs to match the expected value in the application to authenticate the user.
NOTE
Azure AD select the format for the NameID attribute (User Identifier) based on the value selected or the format
requested by the application in the SAML AuthRequest. For more information visit the article Single Sign-On SAML
protocol under the section NameIDPolicy.
9. To add user attributes, click View and edit all other user attributes to edit the attributes to be sent to the
application in the SAML token when users sign in.
To add an attribute:
1.click Add attribute. Enter the Name and the select the Value from the dropdown.
2 Click Save. You see the new attribute in the table.
Download the Azure AD metadata or certificate
To download the application metadata or certificate from Azure AD, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you have configured single sign-on.
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Go to SAML Signing Certificate section, then click Download column value. Depending on what the
application requires configuring single sign-on, you see either the option to download the Metadata XML or
the Certificate.
Azure AD doesn’t provide a URL to get the metadata. The metadata can only be retrieved as an XML file.
Next steps
Provide single sign-on to your apps with Application Proxy
An app page shows an error message after the user
signs in
7/7/2019 • 5 minutes to read • Edit Online
In this scenario, Azure Active Directory (Azure AD ) signs the user in. But the application displays an error message
and doesn't let the user finish the sign-in flow. The problem is that the app didn't accept the response that Azure
AD issued.
There are several possible reasons why the app didn't accept the response from Azure AD. If the error message
doesn't clearly identify what's missing from the response, try the following:
If the app is the Azure AD gallery, verify that you followed the steps in How to debug SAML -based single
sign-on to applications in Azure AD.
Use a tool like Fiddler to capture the SAML request, response, and token.
Send the SAML response to the app vendor and ask them what's missing.
NOTE
If you don't see the app that you want, use the Filter control at the top of the All Applications List. Set the Show
option to "All Applications."
6. Select the application that you want to configure for single sign-on.
7. After the app loads, select Single sign-on in the navigation pane.
8. In the User Attributes section, select View and edit all other user attributes. Here you can change which
attributes to send to the app in the SAML token when users sign in.
To add an attribute:
a. Select Add attribute. Enter the Name, and select the Value from the drop-down list.
b. Select Save. You'll see the new attribute in the table.
9. Save the configuration.
The next time that the user signs in to the app, Azure AD will send the new attribute in the SAML response.
The app doesn't identify the user
Signing in to the app fails because the SAML response is missing an attribute such as a role. Or it fails because the
app expects a different format or value for the NameID (User Identifier) attribute.
If you're using Azure AD automated user provisioning to create, maintain, and remove users in the app, verify that
the user has been provisioned to the SaaS app. For more information, see No users are being provisioned to an
Azure AD Gallery application.
NOTE
If you don't see the app that you want, use the Filter control at the top of the All Applications List. Set the Show
option to "All Applications."
The app expects a different signature method for the SAML response
To change which parts of the SAML token are digitally signed by Azure AD, follow these steps:
1. Open the Azure portal and sign in as a global administrator or co-admin.
2. Select All services at the top of the navigation pane on the left side to open the Azure AD extension.
3. Type Azure Active Directory in the filter search box, and then select Azure Active Directory.
4. Select Enterprise Applications in the Azure AD navigation pane.
5. Select All Applications to view a list of your apps.
NOTE
If you don't see the application that you want, use the Filter control at the top of the All Applications List. Set the
Show option to "All Applications."
6. Select the application that you want to configure for single sign-on.
7. After the application loads, select Single sign-on in the navigation pane.
8. Under SAML Signing Certificate, select Show advanced certificate signing settings.
9. Select the Signing Option that the app expects from among these options:
Sign SAML response
Sign SAML response and assertion
Sign SAML assertion
The next time that the user signs in to the app, Azure AD will sign the part of the SAML response that you
selected.
NOTE
If you don't see the application that you want, use the Filter control at the top of the All Applications List. Set the
Show option to "All Applications."
6. Select the app that you want to configure for single sign-on.
7. After the app loads, select Single sign-on from the navigation pane on the left side of the app.
8. Under SAML Signing Certificate, select Show advanced certificate signing settings.
9. Select SHA -1 as the Signing Algorithm.
The next time that the user signs in to the app, Azure AD will sign the SAML token by using the SHA-1
algorithm.
Next steps
How to debug SAML -based single sign-on to applications in Azure AD.
Problems signing in to an Azure AD Gallery
application configured for password single sign-on
7/22/2019 • 6 minutes to read • Edit Online
The Access Panel is a web-based portal which enables a user who has a work or school account in Azure Active
Directory (Azure AD ) to view and launch cloud-based applications that the Azure AD administrator has granted
them access to. A user who has Azure AD editions can also use self-service group and app management
capabilities through the Access Panel. The Access Panel is separate from the Azure portal and does not require
users to have an Azure subscription.
To use password-based single sign-on (SSO ) in the Access Panel, the Access Panel extension must be installed in
the user’s browser. This extension is downloaded automatically when a user selects an application that is
configured for password-based SSO.
NOTE
The password-based SSO extension become available for Microsoft Edge in Windows 10 when browser extensions become
supported for Microsoft Edge.
Next steps
Provide single sign-on to your apps with Application Proxy
Sign-in problems with an Azure AD gallery app
configured for SSO
7/22/2019 • 5 minutes to read • Edit Online
Access Panel is a web-based portal. It enables users who have Azure Active Directory (Azure AD ) work or school
accounts to access cloud-based apps that they have permissions for. Users who have Azure AD editions can also
use self-service group and app-management capabilities through Access Panel.
Access Panel is separate from the Azure portal. Users don't need an Azure subscription to use Access Panel.
To use password-based single sign-on (SSO ) in Access Panel, the Access Panel extension must be installed in your
browser. The extension downloads automatically when you select an app that's configured for password-based
SSO.
NOTE
The password-based SSO extension become available for Microsoft Edge in Windows 10 when support for browser
extensions was added to Microsoft Edge.
NOTE
If you don't see the app that you want, use the Filter control at the top of the All Applications List. Set the Show
option to "All Applications."
NOTE
If you don't see the app that you want, use the Filter control at the top of the All Applications List. Set the Show
option to "All Applications."
6. From the list, select the app that you want to assign a user to.
7. After the application loads, select Users and Groups from the app’s navigation pane on the left side.
8. Select Add at the top of the Users and Groups list to open the Add Assignment pane.
9. Select Users and groups in the Add Assignment pane.
10. In the Search by name or email address box, type the full name or email address of the user that you
want to assign.
11. Hover over the user in the list. Select the check box next to the user’s profile photo or logo to add that user
to the Selected list.
12. Optional: To add another user, type another name or email address in the Search by name or email
address box, and then select the check box to add that user to the Selected list.
13. When you're finished selecting users, click Select to add them to the list of users and groups who are
assigned to the app.
14. Optional: Click Select Role in the Add Assignment pane to select a role to assign to the users that you
selected.
15. Select Assign to assign the app to the selected users.
After a brief delay, the users will be able to access those apps from Access Panel.
Request support
If you get an error message when you set up SSO and assign users, open a support ticket. Include as much of the
following information as possible:
Correlation error ID
UPN (user email address)
TenantID
Browser type
Time zone and time/time frame when the error occurred
Fiddler traces
Next steps
Provide single sign-on to your apps with Application Proxy
Problems signing in to a Microsoft application
6/13/2019 • 16 minutes to read • Edit Online
Microsoft Applications (like Office 365 Exchange, SharePoint, Yammer, etc.) are assigned and managed a bit
differently than 3rd party SaaS applications or other applications you integrate with Azure AD for single sign on.
There are three main ways that a user can get access to a Microsoft-published application.
For applications in the Office 365 or other paid suites, users are granted access through license
assignment either directly to their user account, or through a group using our group-based license
assignment capability.
For applications that Microsoft or a Third Party publishes freely for anyone to use, users may be granted
access through user consent. This means that they sign in to the application with their Azure AD Work or
School account and allow it to have access to some limited set of data on their account.
For applications that Microsoft or a 3rd party publishes freely for anyone to use, users may also be granted
access through administrator consent. This means that an administrator has determined the application
may be used by everyone in the organization, so they sign in to the application with a Global Administrator
account and grant access to everyone in the organization.
To troubleshoot your issue, start with the General Problem Areas with Application Access to consider and then
read the Walkthrough: Steps to troubleshoot Microsoft Application access to get into the details.
NOTE
To do this faster, consider temporarily assigning a license to the user directly. Assign a user a license.
NOTE
To do this faster, consider temporarily assigning a license to the user directly. Assign a user a license.
Problems with Conditional Access policies
Check a specific Conditional Access policy
To check or validate a single Conditional Access policy:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise applications in the navigation menu.
5. click the Conditional Access navigation item.
6. click the policy you are interested in inspecting.
7. Review that there are no specific conditions, assignments, or other settings that may be blocking user access.
NOTE
You may wish to temporarily disable this policy to ensure it is not affecting sign ins. To do this, set the Enable policy
toggle to No and click the Save button.
NOTE
If you don’t see the application you are looking for, click the Filter button and expand the scope of the list to All
applications. If you want to see more columns, click the Columns button to add additional details for your
applications.
Next steps
Using the admin consent endpoint
Problems signing in to a non-gallery application
configured for federated single sign-on
7/22/2019 • 10 minutes to read • Edit Online
To troubleshoot the sign-in issues below, we recommend you follow these suggestion to get better diagnosis and
automate the resolution steps:
Install the My Apps Secure Browser Extension to help Azure Active Directory (Azure AD ) to provide better
diagnosis and resolutions when using the testing experience in the Azure portal.
Reproduce the error using the testing experience in the app configuration page in the Azure portal. Learn more
on Debug SAML -based single sign-on applications
The reply address does not match the reply addresses configured for
the application.
Error AADSTS50011: The reply address https://contoso.com does not match the reply addresses configured for
the application
Possible cause
The AssertionConsumerServiceURL value in the SAML request doesn't match the Reply URL value or pattern
configured in Azure AD. The AssertionConsumerServiceURL value in the SAML request is the URL you see in the
error.
Resolution
Ensure that the Issuer attribute in the SAML request matches the Identifier value configured in Azure AD. If you
use the testing experience in the Azure portal with the My Apps Secure Browser Extension, you don't need to
manually follow these steps.
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to configure single sign-on
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Once the application loads, open Basic SAML configuration. Verify or update the value in the Reply URL
textbox to match the AssertionConsumerServiceURL value in the SAML request.
After you've updated the Reply URL value in Azure AD, and it matches the value sent by the application in the
SAML request, you should be able to sign in to the application.
Misconfigured application
Error AADSTS650056: Misconfigured application. This could be due to one of the following: The client has not
listed any permissions for 'AAD Graph' in the requested permissions in the client's application registration. Or, The
admin has not consented in the tenant. Or, Check the application identifier in the request to ensure it matches the
configured client application identifier. Please contact your admin to fix the configuration or consent on behalf of
the tenant..
Possible cause
The Issuer attribute sent from the application to Azure AD in the SAML request doesn’t match the Identifier
value configured for the application in Azure AD.
Resolution
Ensure that the Issuer attribute in the SAML request matches the Identifier value configured in Azure AD. If you
use the testing experience in the Azure portal with the My Apps Secure Browser Extension, you don't need to
manually follow these steps:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by selecting All services at the top of the main left-hand
navigation menu.
3. Type “Azure Active Directory" in the filter search box and select the Azure Active Directory item.
4. Select Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. Select All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to configure for single sign-on.
7. Once the application loads, open Basic SAML configuration. Verify that the value in the Identifier textbox
matches the value for the identifier value displayed in the error.
Next steps
Azure AD Single Sign-on SAML protocol requirements
Problems signing in to a gallery application
configured for federated single sign-on
7/22/2019 • 10 minutes to read • Edit Online
To troubleshoot the sign-in issues below, we recommend you follow these suggestion to get better diagnosis and
automate the resolution steps:
Install the My Apps Secure Browser Extension to help Azure Active Directory (Azure AD ) to provide better
diagnosis and resolutions when using the testing experience in the Azure portal.
Reproduce the error using the testing experience in the app configuration page in the Azure portal. Learn more
on Debug SAML -based single sign-on applications
The reply address does not match the reply addresses configured for
the application
Error AADSTS50011: The reply address 'https://contoso.com' does not match the reply addresses configured for
the application
Possible cause
The AssertionConsumerServiceURL value in the SAML request doesn't match the Reply URL value or pattern
configured in Azure AD. The AssertionConsumerServiceURL value in the SAML request is the URL you see in the
error.
Resolution
Ensure that the AssertionConsumerServiceURL value in the SAML request matches the Reply URL value configured
in Azure AD. If you use the testing experience in the Azure portal with the My Apps Secure Browser Extension, you
don't need to manually follow these steps.
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by selecting All services at the top of the main left-hand
navigation menu.
3. Type “Azure Active Directory" in the filter search box and select the Azure Active Directory item.
4. Select Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. Select All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to configure for single sign-on.
7. Once the application loads, open Basic SAML configuration. Verify or update the value in the Reply URL
textbox to match the AssertionConsumerServiceURL value in the SAML request.
After you've updated the Reply URL value in Azure AD, and it matches the value sent by the application in the
SAML request, you should be able to sign in to the application.
Misconfigured application
Error AADSTS650056: Misconfigured application. This could be due to one of the following: The client has not
listed any permissions for 'AAD Graph' in the requested permissions in the client's application registration. Or, The
admin has not consented in the tenant. Or, Check the application identifier in the request to ensure it matches the
configured client application identifier. Please contact your admin to fix the configuration or consent on behalf of
the tenant..
Possible cause
The Issuer attribute sent from the application to Azure AD in the SAML request doesn’t match the Identifier
value configured for the application in Azure AD.
Resolution
Ensure that the Issuer attribute in the SAML request matches the Identifier value configured in Azure AD. If you
use the testing experience in the Azure portal with the My Apps Secure Browser Extension, you don't need to
manually follow these steps:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by selecting All services at the top of the main left-hand
navigation menu.
3. Type “Azure Active Directory" in the filter search box and select the Azure Active Directory item.
4. Select Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. Select All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to configure for single sign-on.
7. Once the application loads, open Basic SAML configuration. Verify that the value in the Identifier textbox
matches the value for the identifier value displayed in the error.
Next steps
How to debug SAML -based single sign-on to applications in Azure AD
Problems signing in to a custom-developed
application
5/16/2019 • 2 minutes to read • Edit Online
There are several errors that could be causing you to not be able to sign into an app. The biggest reason people
encounter this problem is misconfigured apps.
Next steps
Azure AD Developer Guide
Consent and Integrating Apps to Azure AD
Consent and Permissioning for Azure AD v2.0 converged Apps
Azure AD StackOverflow
Problem configuring federated single sign-on for an
Azure AD Gallery application
7/22/2019 • 4 minutes to read • Edit Online
If you encounter a problem when configuring an application. Verify you have followed all the steps in the tutorial
for the application. In the application’s configuration, you have inline documentation on how to configure the
application. Also, you can access the List of tutorials on how to integrate SaaS apps with Azure Active Directory for
a detail step-by-step guidance.
Next steps
Managing Applications with Azure Active Directory
Problem configuring federated single sign-on for a
non-gallery application
7/23/2019 • 2 minutes to read • Edit Online
If you encounter a problem when configuring an application. Verify you have followed all the steps in the article
Configuring single sign-on to applications that are not in the Azure Active Directory application gallery.
Next steps
Managing Applications with Azure Active Directory
Problem configuring password single sign-on for an
Azure AD Gallery application
7/22/2019 • 5 minutes to read • Edit Online
This article helps you understand the common problems people face when configuring Password Single Sign-on
with an Azure AD Gallery application.
Credentials are filled in, but the extension does not submit them
This problem typically happens if the application vendor has changed their sign-in page recently to add a field,
changed an identifier used for detecting the username and password fields, or modified how the sign-in experience
works for their application. Fortunately, in many instances, Microsoft can work with application vendors to rapidly
resolve these issues.
While Microsoft has technologies to automatically detect when integrations break, it might not be possible to find
the issues right away, or the issues take some time to fix. In the case when one of these integrations does not work
correctly, open a support case so it can be fixed as quickly as possible.
If you are in contact with this application’s vendor, send them our way so Microsoft can work with them to
natively integrate their application with Azure Active Directory. You can send the vendor to the Listing your
application in the Azure Active Directory application gallery to get them started.
Credentials are filled in and submitted, but the page indicates the
credentials are incorrect
To resolve this issue, first try these things:
Have the user first try to sign in to the application website directly with the credentials stored for them.
If sign-in works, then have the user click the Update credentials button on the Application Tile in
the Apps section of the Application Access Panel to update them to the latest known working
username and password.
If you, or another administrator assigned the credentials for this user, find the user or group’s
application assignment by navigating to the Users & Groups tab of the application, selecting the
assignment and clicking the Update Credentials button.
If the user assigned their own credentials, have the user check to be sure that their password has not
expired in the application and if so, update their expired password by signing in to the application
directly.
After the password has been updated in the application, request the user to click the Update
credentials button on the Application Tile in the Apps section of the Application Access Panel to
update them to the latest known working username and password.
If you, or another administrator assigned the credentials for this user, find the user or group’s
application assignment by navigating to the Users & Groups tab of the application, selecting the
assignment and clicking the Update Credentials button.
Have the user update the access panel browser extension by following the steps below in the How to install
the Access Panel Browser extension section.
Ensure that the access panel browser extension is running and enabled in your user’s browser.
Ensure that your users are not trying to sign in to the application from the access panel while in incognito,
inPrivate, or Private mode. The access panel extension is not supported in these modes.
In case the previous suggestions do not work, it could be the case that a change has occurred on the application
side that has temporarily broken the application’s integration with Azure AD. For example, this can occur when the
application vendor introduces a script on their page which behaves differently for manual vs automated input,
which causes automated integration, like our own, to break. Fortunately, in many instances, Microsoft can work
with application vendors to rapidly resolve these issues.
While Microsoft has technologies to automatically detect when application integrations break, it might not be
possible to find the issues right away, or the issues might take some time to fix. When an integration does not work
correctly, you can open a support case to get it fixed as quickly as possible.
In addition to this, if you are in contact with this application’s vendor, send them our way so we can work
with them to natively integrate their application with Azure Active Directory. You can send the vendor to the Listing
your application in the Azure Active Directory application gallery to get them started.
Next steps
Provide single sign-on to your apps with Application Proxy
Problems configuring password single sign-on for a
non-gallery application
6/27/2019 • 7 minutes to read • Edit Online
This article describes common problems that can occur when you configure password single sign-on (SSO ) for a
non-gallery app.
NOTE
If you don't see the app that you want, use the Filter control at the top of the All Applications list. Set the Show
option to "All Applications."
NOTE
If you don't see the app that you want, use the Filter control at the top of the All Applications list. Set the Show
option to "All Applications."
Troubleshoot problems
I get a “We couldn’t find any sign-in fields at that URL” error
You get this error message when automatic detection of sign-in fields fails. To resolve the issue, try manual sign-in
field detection. See the Manually capture sign-in fields for an application section of this article.
I get an “Unable to save single sign-on configuration” error
Rarely, updating the SSO configuration fails. To resolve this problem, try saving the configuration again.
If you keep getting the error, open a support case. Include the information that's described in the View portal
notification details and Send notification details to a support engineer to get help sections of this article.
I can't manually detect sign-in fields for my app
You might observe the following behaviors when manual detection isn't working:
The manual capture process appeared to work, but the captured fields aren't correct.
The correct fields don’t get highlighted when the capture process runs.
The capture process takes you to the app’s sign-in page as expected, but nothing happens.
Manual capture appears to work, but SSO doesn’t happen when users navigate to the app from Access
Panel.
If you experience any of these problems, do the following things:
Make sure that you have the latest version of the Access Panel browser extension installed and enabled. See
the Install the Access Panel browser extension section of this article.
Make sure that your browser isn't in incognito, inPrivate, or Private mode during the capture process. The
Access Panel extension isn't supported in these modes.
Make sure that your users aren't trying to sign in to the app from Access Panel while in incognito, inPrivate,
or Private mode.
Try the manual capture process again. Make sure that the red markers are over the correct fields.
If the manual capture process seems to stop responding or the sign-in page doesn’t respond, try the manual
capture process again. But this time, after completing the process, press the F12 key to open your browser’s
developer console. Select the console tab. Type window.location="<the sign -in URL that you specified
when configuring the app>", and then press Enter. This forces a page redirect that ends the capture
process and stores the fields that were captured.
Contact support
If you still have problems, open a case with Microsoft Support. Describe what you tried. Include the details that are
described in the View portal notification details and Send notification details to a support engineer to get help
sections of this article (if applicable).
NOTE
You can't select notifications that are in the Successful or In Progress state.
3. The Notification Details pane opens. Read the information to learn about the problem.
4. If you still need help, share the information with a support engineer or the product group. Select the copy
icon to the right of the Copy error box to copy the notification details to share.
Next steps
Provide single sign-on to your apps with Application Proxy
Unexpected application in my applications list
5/16/2019 • 4 minutes to read • Edit Online
This article help you to understand how applications appear in your All Applications list under Enterprise
Applications.
Next steps
Managing Applications with Azure Active Directory
How to assign users to applications
5/16/2019 • 2 minutes to read • Edit Online
This article help you to understand how users get assigned to an application in your tenant.
Next steps
Managing Applications with Azure Active Directory
Troubleshoot the Access Panel Extension for Internet
Explorer
7/10/2019 • 2 minutes to read • Edit Online
4. Review the diagnostic results that appear and select Yes to fix the issues. The Check Results dialog box
appears with information about what to do if the extension doesn't work.
5. Read the message and select OK.
Check that the Access Panel Extension is enabled
To verify that you've enabled the Access Panel Extension in Internet Explorer:
1. In Internet Explorer, select the Gear icon on the upper-right corner of the window and select Internet options.
2. Go to the Programs tab and select Manage add-ons.
3. Select Access Panel Extension in the Microsoft Corporation section and select Enable.
4. To save the changes, close all of the Internet Explorer browser windows you have open. The change takes effect
the next time you open Internet Explorer.
3. From the list, select Access Panel Extension and select Uninstall.
4. You can then try to install the extension again to see if the problem has been resolved.
If you run into issues uninstalling the extension, you can also remove it using the Microsoft Fix It tool.
Related articles
Application access and single sign-on with Azure Active Directory
How to deploy the Access Panel Extension for Internet Explorer using Group Policy
An assigned application is not appearing on the
access panel
6/19/2019 • 23 minutes to read • Edit Online
The Access Panel is a web-based portal, which enables a user with a work or school account in Azure Active
Directory (Azure AD ) to view and start cloud-based applications that the Azure AD administrator has granted them
access to. These applications are configured on behalf of the user in the Azure AD portal. The application must be
configured properly and assigned to the user or a group the user is a member of to see the application in the
Access Panel.
The type of apps a user may be seeing fall in the following categories:
Office 365 Applications
Microsoft and third-party applications configured with federation-based SSO
Password-based SSO applications
Applications with existing SSO solutions
NOTE
Azure AD selects the format for the NameID attribute (User Identifier) based on the value selected or the format
requested by the application in the SAML AuthRequest. For more information visit the article Single Sign-On SAML
protocol under the section NameIDPolicy.
9. To add user attributes, click View and edit all other user attributes to edit the attributes to be sent to the
application in the SAML token when users sign in.
To add an attribute:
a. click Add attribute. Enter the Name and the select the Value from the dropdown.
b. click Save. You will see the new attribute in the table.
Download the Azure AD metadata or certificate
To download the application metadata or certificate from Azure AD, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you have configured single sign-on.
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Go to SAML Signing Certificate section, then click Download column value. Depending on what the
application requires configuring single sign-on, you see either the option to download the Metadata XML or
the Certificate.
Azure AD doesn’t provide a URL to get the metadata. The metadata can only be retrieved as an XML file.
How to configure federated single sign-on for a non-gallery application
To configure a non-gallery application, you need to have Azure AD premium and the application supports SAML
2.0. For more information about Azure AD versions, visit Azure AD pricing.
Configure the application’s metadata values in Azure AD (Sign on URL, Identifier, Reply URL )
Select User Identifier and add user attributes to be sent to the application
Retrieve Azure AD metadata and certificate
Configure Azure AD metadata values in the application (Sign on URL, Issuer, Logout URL and certificate)
Configure the application’s metadata values in Azure AD (Sign on URL, Identifier, Reply URL)
To configure single sign-on for an application that is not in the Azure AD gallery, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click the Add button at the top-right corner on the Enterprise Applications pane.
6. click Non-gallery application in the Add your own app section.
7. Enter the name of the application in the Name textbox.
8. Click Add button, to add the application.
9. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
10. Select SAML -based Sign-on in the Mode dropdown.
11. Enter the required values in Domain and URLs. You should get these values from the application vendor.
a. To configure the application as IdP -initiated SSO, enter the Reply URL and the Identifier.
b. Optional: To configure the application as SP -initiated SSO, the Sign on URL it’s a required value.
12. In the User attributes, select the unique identifier for your users in the User Identifier dropdown.
13. Optional: click View and edit all other user attributes to edit the attributes to be sent to the application
in the SAML token when users sign in.
To add an attribute:
a. click Add attribute. Enter the Name and the select the Value from the dropdown.
b. Click Save. You see the new attribute in the table.
14. click Configure <application name> to access documentation on how to configure single sign-on in the
application. Also, you have Azure AD URLs and certificates required for the application.
Select User Identifier and add user attributes to be sent to the application
To select the User Identifier or add user attributes, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you have configured single sign-on.
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Under the User attributes section, select the unique identifier for your users in the User Identifier
dropdown. The selected option needs to match the expected value in the application to authenticate the user.
NOTE
Azure AD selects the format for the NameID attribute (User Identifier) based on the value selected or the format
requested by the application in the SAML AuthRequest. For more information visit the article Single Sign-On SAML
protocol under the section NameIDPolicy.
9. To add user attributes, click View and edit all other user attributes to edit the attributes to be sent to the
application in the SAML token when users sign in.
To add an attribute:
a. click Add attribute. Enter the Name and the select the Value from the dropdown.
b. Click Save. You see the new attribute in the table.
Download the Azure AD metadata or certificate
To download the application metadata or certificate from Azure AD, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you have configured single sign-on.
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Go to SAML Signing Certificate section, then click Download column value. Depending on what the
application requires configuring single sign-on, you see either the option to download the Metadata XML or
the Certificate.
Azure AD doesn’t provide a URL to get the metadata. The metadata can only be retrieved as an XML file.
How to configure password single sign-on for an Azure AD gallery application
To configure an application from the Azure AD gallery you need to:
Add an application from the Azure AD gallery
Configure the application for password single sign-on
Add an application from the Azure AD gallery
To add an application from the Azure AD Gallery, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click the Add button at the top-right corner on the Enterprise Applications pane.
6. In the Enter a name textbox from the Add from the gallery section, type the name of the application.
7. Select the application you want to configure for single sign-on.
8. Before adding the application, you can change its name from the Name textbox.
9. Click Add button, to add the application.
After a short period, you can see the application’s configuration pane.
Configure the application for password single sign-on
To configure single sign-on for an application, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to configure single sign-on.
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Select the mode Password-based Sign-on.
9. Assign users to the application.
10. Additionally, you can also provide credentials on behalf of the user by selecting the rows of the users and
clicking on Update Credentials and entering the username and password on behalf of the users.
Otherwise, users be prompted to enter the credentials themselves upon launch.
How to configure password single sign-on for a non-gallery application
To configure an application from the Azure AD gallery you need to:
Add a non-gallery application
Configure the application for password single sign-on
Add a non-gallery application
To add an application from the Azure AD Gallery, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click the Add button at the top-right corner on the Enterprise Applications pane.
6. click Non-gallery application.
7. Enter the name of your application in the Name textbox. Select Add.
After a short period, you be able to see the application’s configuration pane.
Configure the application for password single sign-on
To configure single sign-on for an application, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator or Co-admin.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
a. If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to configure single sign-on.
7. Once the application loads, click the Single sign-on from the application’s left-hand navigation menu.
8. Select the mode Password-based Sign-on.
9. Enter the Sign-on URL. This is the URL where users enter their username and password to sign in to.
Ensure the sign-in fields are visible at the URL.
10. Assign users to the application.
11. Additionally, you can also provide credentials on behalf of the user by selecting the rows of the users and
clicking on Update Credentials and entering the username and password on behalf of the users.
Otherwise, users be prompted to enter the credentials themselves upon launch.
Problems related to assigning applications to users
A user may not be seeing an application on their Access Panel because they are not assigned to the application.
Below are some ways to check:
Check if a user is assigned to the application
How to assign a user to an application directly
Check if a user is assigned to a license related to the application
How to assign a license to a user
Check if a user is assigned to the application
To check if a user is assigned to the application, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
6. Search for the name of the application in question.
7. click Users and groups.
8. Check to see if your user is assigned to the application.
If not follow the steps in “How to assign a user to an application directly” to do so.
How to assign a user to an application directly
To assign one or more users to an application directly, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to assign a user to from the list.
7. Once the application loads, click Users and Groups from the application’s left-hand navigation menu.
8. Click the Add button on top of the Users and Groups list to open the Add Assignment pane.
9. click the Users and groups selector from the Add Assignment pane.
10. Type in the full name or email address of the user you are interested in assigning into the Search by
name or email address search box.
11. Hover over the user in the list to reveal a checkbox. Click the checkbox next to the user’s profile photo or
logo to add your user to the Selected list.
12. Optional: If you would like to add more than one user, type in another full name or email address into
the Search by name or email address search box, and click the checkbox to add this user to the Selected
list.
13. When you are finished selecting users, click the Select button to add them to the list of users and groups to
be assigned to the application.
14. Optional: click the Select Role selector in the Add Assignment pane to select a role to assign to the users
you have selected.
15. Click the Assign button to assign the application to the selected users.
After a short period, the users you have selected be able to launch these applications in the Access Panel.
Check if a user is under a license related to the application
To check a user’s assigned licenses, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All users.
6. Search for the user you are interested in and click the row to select.
7. click Licenses to see which licenses the user currently has assigned.
If the user is assigned to an Office license this enables First Party Office applications to appear on the
user’s Access Panel.
How to assign a user a license
To assign a license to a user, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All users.
6. Search for the user you are interested in and click the row to select.
7. click Licenses to see which licenses the user currently has assigned.
8. click the Assign button.
9. Select one or more products from the list of available products.
10. Optional click the assignment options item to granularly assign products. Click Ok when this is
completed.
11. Click the Assign button to assign these licenses to this user.
Problems related to assigning applications to groups
A user may be seeing an application on their Access Panel because they are part of a group that has been assigned
the application. Below are some ways to check:
Check a user’s group memberships
How to assign an application to a group directly
Check if a user is part of group assigned to a license
How to assign a license to a group
Check a user’s group memberships
To check a group’s membership, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All users.
6. Search for the user you are interested in and click the row to select.
7. click Groups.
8. Check to see if your user is part of a Group assigned to the application.
If you want to remove the user from the group, click the row of the group and select delete.
How to assign an application to a group directly
To assign one or more groups to an application directly, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Enterprise Applications from the Azure Active Directory left-hand navigation menu.
5. click All Applications to view a list of all your applications.
If you do not see the application you want show up here, use the Filter control at the top of the All
Applications List and set the Show option to All Applications.
6. Select the application you want to assign a user to from the list.
7. Once the application loads, click Users and Groups from the application’s left-hand navigation menu.
8. Click the Add button on top of the Users and Groups list to open the Add Assignment pane.
9. click the Users and groups selector from the Add Assignment pane.
10. Type in the full group name of the group you are interested in assigning into the Search by name or
email address search box.
11. Hover over the group in the list to reveal a checkbox. Click the checkbox next to the group’s profile photo
or logo to add your user to the Selected list.
12. Optional: If you would like to add more than one group, type in another full group name into the
Search by name or email address search box, and click the checkbox to add this group to the Selected
list.
13. When you are finished selecting groups, click the Select button to add them to the list of users and groups
to be assigned to the application.
14. Optional: click the Select Role selector in the Add Assignment pane to select a role to assign to the
groups you have selected.
15. Click the Assign button to assign the application to the selected groups.
After a short period, the users you have selected be able to launch these applications in the Access Panel.
Check if a user is part of group assigned to a license
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All users.
6. Search for the user you are interested in and click the row to select.
7. click Groups.
8. click the row of a specific group.
9. click Licenses to see which licenses the group has assigned to it.
If the group is assigned to an Office license this may enable certain First Party Office applications to
appear on the user’s Access Panel.
How to assign a license to a group
To assign a license to a group, follow the steps below:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All groups.
6. Search for the group you are interested in and click the row to select.
7. click Licenses to see which licenses the group currently has assigned.
8. click the Assign button.
9. Select one or more products from the list of available products.
10. Optional click the assignment options item to granularly assign products. Click Ok when this is
completed.
11. Click the Assign button to assign these licenses to this group. This may take a long time, depending on the
size and complexity of the group.
NOTE
To do this faster, consider temporarily assigning a license to the user directly.
Next steps
Add new users to Azure Active Directory
How applications appear on the access panel
5/16/2019 • 4 minutes to read • Edit Online
The Access Panel is a web-based portal, which enables a user with a work or school account in Azure Active
Directory (Azure AD ) to view and start cloud-based applications that the Azure AD administrator has granted them
access to. These applications are configured on behalf of the user in the Azure AD portal. The admin can provision
the application to the user directly or to a group a user is part of resulting in the application appearing on the user’s
Access Panel.
Next steps
Managing Applications with Azure Active Directory
Problem signing in to the access panel website
5/16/2019 • 8 minutes to read • Edit Online
The Access Panel is a web-based portal that enables a user who has a work or school account in Azure Active
Directory (Azure AD ) to view and launch cloud-based applications that the Azure AD administrator has granted
them access to. A user who has Azure AD editions can also use self-service group and app management
capabilities through the Access Panel. The Access Panel is separate from the Azure portal and does not require
users to have an Azure subscription.
Users can sign in to the Access Panel if they have a work or school account in Azure AD.
Users can be authenticated by Azure AD directly.
Users can be authenticated by using Active Directory Federation Services (AD FS ).
Users can be authenticated by Windows Server Active Directory.
If a user has a subscription for Azure or Office 365 and has been using the Azure portal or an Office 365
application, they'll be able to use the Access Panel seamlessly without needing to sign in again. Users who are not
authenticated are prompted to sign in by using the username and password for their account in Azure AD. If the
organization has configured federation, typing the username is sufficient.
NOTE
If a user is in an Enforced state, you may set them to Disabled temporarily to let them back into their account. Once
they are back in, you can then change their state to Enabled again to require them to re-register their contact
information during their next sign-in. Alternatively, you can follow the steps in the Check a user’s authentication
contact info to verify or set this data for them.
Check a user’s authentication contact info
To check a user’s authentication contact info used for Multi-factor authentication, Conditional Access, Identity
Protection, and Password Reset, follow these steps:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All users.
6. Search for the user you are interested in and click the row to select.
7. click Profile.
8. Scroll down to Authentication contact info.
9. Review the data registered for the user and update as needed.
Check a user’s group memberships
To check a user’s group memberships, follow these steps:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All users.
6. Search for the user you are interested in and click the row to select.
7. click Groups to see which groups the user is a member of.
Check a user’s assigned licenses
To check a user’s assigned licenses, follow these steps:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All users.
6. Search for the user you are interested in and click the row to select.
7. click Licenses to see which licenses the user currently has assigned.
Assign a user a license
To assign a license to a user, follow these steps:
1. Open the Azure portal and sign in as a Global Administrator.
2. Open the Azure Active Directory Extension by clicking All services at the top of the main left-hand
navigation menu.
3. Type in “Azure Active Directory” in the filter search box and select the Azure Active Directory item.
4. click Users and groups in the navigation menu.
5. click All users.
6. Search for the user you are interested in and click the row to select.
7. click Licenses to see which licenses the user currently has assigned.
8. click the Assign button.
9. Select one or more products from the list of available products.
10. Optional click the assignment options item to granularly assign products. Click Ok when this is
completed.
11. Click the Assign button to assign these licenses to this user.
Next steps
Provide single sign-on to your apps with Application Proxy
Install the access panel browser extension
5/29/2019 • 4 minutes to read • Edit Online
The access panel is a web-based portal. If you have a work or school account in Azure Active Directory (Azure AD ),
you can use the access panel to view and start cloud-based applications that an Azure AD administrator has
granted you access to.
If you're using Azure AD editions, you can also use self-service group and app management capabilities through
the access panel.
The access panel is separate from the Azure portal. It does not require you to have an Azure subscription.
NOTE
The preceding options are available only for Microsoft Edge, Chrome, and Firefox.
Next steps
What is application access and single sign-on with Azure Active Directory?
Problem using self-service application access
5/16/2019 • 3 minutes to read • Edit Online
Self-service application access is a great way to allow users to self-discover applications, optionally allow the
business group to approve access to those applications. You can allow the business group to manage the
credentials assigned to those users for Password Single-Sign On Applications right from their access panels.
Before your users can self-discover applications from their access panel, you need to enable Self-service
application access to any applications that you wish to allow users to self-discover and request access to.
NOTE
Groups are not supported.
13. Optional: For applications which expose roles, if you wish to assign self-service approved users to a
role, click the selector next to the To which role should users be assigned in this application? to select
the role to which these users should be assigned.
14. Click the Save button at the top of the blade to finish.
Once you complete Self-service application configuration, users can navigate to their Application Access Panel and
click the +Add button to find the apps to which you have enabled Self-service access. Business approvers also see
a notification in their Application Access Panel. You can enable an email notifying them when a user has requested
access to an application that requires their approval.
These approvals support single approval workflows only, meaning that if you specify multiple approvers, any single
approver may approve access to the application.
Next steps
Setting up Azure Active Directory for self-service group management
How to configure user provisioning to an Azure AD
Gallery application
5/16/2019 • 2 minutes to read • Edit Online
User account provisioning is the act of creating, updating, and/or disabling user account records in an application’s
local user profile store. Most cloud and SaaS applications store the users role and permissions in their own local
user profile store, and presence of such a user record in their local store is required for single sign-on and access to
work.
In the Azure portal, the Provisioning tab in the left navigation pane for an Enterprise App displays what
provisioning modes are supported for that app. This can be one of two values:
NOTE
You should start by finding the setup tutorial specific to setting up provisioning for your application, and following those
steps to configure both the app and Azure AD to create the provisioning connection.
App tutorials can be found at List of Tutorials on How to Integrate SaaS Apps with Azure Active Directory.
An important thing to consider when setting up provisioning be to review and configure the attribute mappings
and workflows that define which user (or group) properties flow from Azure AD to the application. This includes
setting the “matching property” that be used to uniquely identify and match users/groups between the two
systems. For more information on this important process.
Next steps
Customizing User Provisioning Attribute Mappings for SaaS Applications in Azure Active Directory
Enable automatic user provisioning for your multi-
tenant application
8/1/2019 • 4 minutes to read • Edit Online
Automatic user provisioning is the process of automating the creation, maintenance, and removal of user identities
in target systems like your software-as-a-service applications.
Support non-enterprise X √ √
accounts (B2C)
Next Steps
Enable Single Sign-on for your application
Submit your application listing and partner with Microsoft to create documentation on Microsoft’s site.
Join the Microsoft Partner Network (free) and create your go to market plan.
Managing user account provisioning for enterprise
apps in the Azure portal
8/23/2019 • 4 minutes to read • Edit Online
This article describes how to use the Azure portal to manage automatic user account provisioning and de-
provisioning for applications that support it. To learn more about automatic user account provisioning and how it
works, see Automate User Provisioning and Deprovisioning to SaaS Applications with Azure Active Directory.
Microsoft Azure AD provides support for user provisioning to third-party SaaS applications such as Salesforce,
G Suite and others. If you enable user provisioning for a third-party SaaS application, the Azure portal controls
its attribute values through attribute-mappings.
There's a pre-configured set of attributes and attribute-mappings between Azure AD user objects and each SaaS
app’s user objects. Some apps manage other types of objects along with Users, such as Groups.
You can customize the default attribute-mappings according to your business needs. So, you can change or
delete existing attribute-mappings, or create new attribute-mappings.
6. Select a Mappings configuration to open the related Attribute Mapping screen. Some attribute-
mappings are required by a SaaS application to function correctly. For required attributes, the Delete
feature is unavailable.
In this screenshot, you can see that the Username attribute of a managed object in Salesforce is
populated with the userPrincipalName value of the linked Azure Active Directory Object.
7. Select an existing Attribute Mapping to open the Edit Attribute screen. Here you can edit the user
attributes that flow between Azure AD and the target application.
Group provisioning can be optionally enabled or disabled by selecting the group mapping under Mappings,
and setting Enabled to the option you want in the Attribute Mapping screen.
The attributes provisioned as part of Group objects can be customized in the same manner as User objects,
described previously.
TIP
Provisioning of group objects (properties and members) is a distinct concept from assigning groups to an application. It is
possible to assign a group to an application, but only provision the user objects contained in the group. Provisioning of full
group objects is not required to use groups in assignments.
NOTE
Editing the list of supported attributes is only recommended for administrators who have customized the schema of their
applications and systems, and have first-hand knowledge of how their custom attributes have been defined. This
sometimes requires familiarity with the APIs and developer tools provided by an application or system.
When editing the list of supported attributes, the following properties are provided:
Name - The system name of the attribute, as defined in the target object's schema.
Type - The type of data the attribute stores, as defined in the target object's schema, which can be one of the
following types:
Binary - Attribute contains binary data.
Boolean - Attribute contains a True or False value.
DateTime - Attribute contains a date string.
Integer - Attribute contains an integer.
Reference - Attribute contains an ID that references a value stored in another table in the target
application.
String - Attribute contains a text string.
Primary Key? - Whether the attribute is defined as a primary key field in the target object's schema.
Required? - Whether the attribute is required to be populated in the target application or system.
Multi-value? - Whether the attribute supports multiple values.
Exact case? - Whether the attributes values are evaluated in a case-sensitive way.
API Expression - Don't use, unless instructed to do so by the documentation for a specific provisioning
connector (such as Workday).
Referenced Object Attribute - If it's a Reference type attribute, then this menu lets you select the table and
attribute in the target application that contains the value associated with the attribute. For example, if you
have an attribute named "Department" whose stored value references an object in a separate "Departments"
table, you would select "Departments.Name". The reference tables and the primary ID fields supported for a
given application are pre-configured and currently can't be edited using the Azure portal, but can be edited
using the Graph API.
To add a new attribute, scroll to the end of the list of supported attributes, populate the fields above using the
provided inputs, and select Add Attribute. Select Save when finished adding attributes. You then need to reload
the Provisioning tab for the new attributes to become available in the attribute-mapping editor.
Restoring the default attributes and attribute-mappings
Should you need to start over and reset your existing mappings back to their default state, you can select the
Restore default mappings check box and save the configuration. Doing so sets all mappings as if the
application was just added to your Azure AD tenant from the application gallery.
Selecting this option will effectively force a resynchronization of all users while the provisioning service is
running.
IMPORTANT
We strongly recommend that Provisioning status be set to Off before invoking this option.
Next steps
Automate User Provisioning/Deprovisioning to SaaS Apps
Writing Expressions for Attribute-Mappings
Scoping Filters for User Provisioning
Using SCIM to enable automatic provisioning of users and groups from Azure Active Directory to
applications
List of Tutorials on How to Integrate SaaS Apps
Attribute-based application provisioning with
scoping filters
9/9/2019 • 4 minutes to read • Edit Online
The objective of this article is to explain how to use scoping filters to define attribute-based rules that determine
which users are provisioned to an application.
TIP
You can disable provisioning based on assignments for an enterprise application by changing settings in the Scope
menu under the provisioning settings to Sync all users and groups. Using this option plus attribute-based
scoping filters offers faster performance than using group-based assignments.
Inbound provisioning from HCM applications to Azure AD and Active Directory. When an HCM
application such as Workday is the source system, scoping filters are the primary method for determining
which users should be provisioned from the HCM application to Active Directory or Azure AD.
By default, Azure AD provisioning connectors do not have any attribute-based scoping filters configured.
According to this scoping filter, users must satisfy the following criteria to be provisioned:
They must be in New York.
They must work in the Engineering department.
Their company employee ID must be between 1,000,000 and 2,000,000.
Their job title must not be null or empty.
IMPORTANT
Saving a new scoping filter triggers a new full sync for the application, where all users in the source system are evaluated
again against the new scoping filter. If a user in the application was previously in scope for provisioning, but falls out of
scope, their account is disabled or deprovisioned in the application. To override this default behavior, refer to Skip deletion
for user accounts that go out of scope.
Related articles
Automate user provisioning and deprovisioning to SaaS applications
Customize attribute mappings for user provisioning
Write expressions for attribute mappings
Account provisioning notifications
Use SCIM to enable automatic provisioning of users and groups from Azure Active Directory to applications
List of tutorials on how to integrate SaaS apps
Skip deletion of user accounts that go out of scope
9/9/2019 • 2 minutes to read • Edit Online
By default, the Azure AD provisioning engine deletes or disables users that go out of scope. However, for certain
scenarios like Workday to AD User Inbound Provisioning this behavior may not be the expected and you may
want to override this default behavior.
This guide describes how to use the Microsoft Graph API and the Microsoft Graph API explorer to set the flag
SkipOutOfScopeDeletions that controls the processing of accounts that go out of scope.
If SkipOutOfScopeDeletions is set to 0 (false), then accounts that go out of scope will get disabled in the
target
If SkipOutOfScopeDeletions is set to 1 (true), then accounts that go out of scope will get not be disabled in the
target This flag is set at the Provisioning App level and can be configured using the Graph API.
As this configuration is widely used with the Workday to Active Directory user provisioning app, the steps below
include screenshots of the Workday application. However this can also be used with other provisioning apps.
3. Upon successful sign-in, you will see the user account details in the left-hand pane.
Copy the Response into a text file. It will look like the JSON text shown below, with values highlighted in yellow
specific to your deployment. Add the lines highlighted in green to the end and update the Workday connection
password highlighted in blue.
Here is the JSON block to add to the mapping.
{
"key": "SkipOutOfScopeDeletions",
"value": "True"
}
PUT https://graph.microsoft.com/beta/servicePrincipals/[servicePrincipalId]/synchronization/secrets
Copy the updated text from Step 3 into the "Request Body" and set the header "Content-Type" to "application/json"
in "Request Headers".
The Azure AD provisioning service runs an initial provisioning cycle against the source system and target system,
followed by periodic incremental cycles. When you configure provisioning for an app, you can check the current
status of the provisioning service and see when a user will be able to access an app.
Sync assigned users and < 1,000 < 30 minutes < 30 minutes
groups only
Sync assigned users and 1,000 - 10,000 142 - 708 minutes < 30 minutes
groups only
Sync assigned users and 10,000 - 100,000 1,170 - 2,340 minutes < 30 minutes
groups only
Sync all users and groups in < 1,000 < 30 minutes < 30 minutes
Azure AD
Sync all users and groups in 1,000 - 10,000 < 30 - 120 minutes < 30 minutes
Azure AD
Sync all users and groups in 10,000 - 100,000 713 - 1,425 minutes < 30 minutes
Azure AD
Sync all users in Azure AD < 1,000 < 30 minutes < 30 minutes
For the configuration Sync assigned user and groups only, you can use the following formulas to determine the
approximate minimum and maximum expected initial sync times:
Minimum minutes = 0.01 x [Number of assigned users, groups, and group members]
Maximum minutes = 0.08 x [Number of assigned users, groups, and group members]
Summary of factors that influence the time it takes to complete an initial sync:
The total number of users and groups in scope for provisioning.
The total number of users, groups, and group members present in the source system (Azure AD ).
Whether users in scope for provisioning are matched to existing users in the target application, or need to
be created for the first time. Sync jobs for which all users are created for the first time take about twice as
long as sync jobs for which all users are matched to existing users.
Number of errors in the audit logs. Performance is slower if there are many errors and the provisioning
service has gone into a quarantine state.
Request rate limits and throttling implemented by the target system. Some target systems implement
request rate limits and throttling, which can impact performance during large sync operations. Under these
conditions, an app that receives too many requests too fast might slow its response rate or close the
connection. To improve performance, the connector needs to adjust by not sending the app requests faster
than the app can process them. Provisioning connectors built by Microsoft make this adjustment.
The number and sizes of assigned groups. Syncing assigned groups takes longer than syncing users. Both
the number and the sizes of the assigned groups impact performance. If an application has mappings
enabled for group object sync, group properties such as group names and memberships are synced in
addition to users. These additional syncs will take longer than only syncing user objects.
Next steps
Automate user provisioning and deprovisioning to SaaS applications with Azure Active Directory
Tutorial: Reporting on automatic user account
provisioning
7/22/2019 • 6 minutes to read • Edit Online
Azure Active Directory (Azure AD ) includes a user account provisioning service that helps automate the
provisioning de-provisioning of user accounts in SaaS apps and other systems, for the purpose of end-to-end
identity lifecycle management. Azure AD supports pre-integrated user provisioning connectors for all of the
applications and systems in the "Featured" section of the Azure AD application gallery.
This article describes how to check the status of provisioning jobs after they have been set up, and how to
troubleshoot the provisioning of individual users and groups.
Overview
Provisioning connectors are set up and configured using the Azure portal, by following the provided
documentation for the supported application. Once configured and running, provisioning jobs can be reported
on using one of two methods:
Azure portal - This article primarily describes retrieving report information from the Azure portal, which
provides both a provisioning summary report as well as detailed provisioning audit logs for a given
application.
Audit API - Azure Active Directory also provides an Audit API that enables programmatic retrieval of the
detailed provisioning audit logs. See Azure Active Directory audit API reference for documentation specific to
using this API. While this article does not specifically cover how to use the API, it does detail the types of
provisioning events that are recorded in the audit log.
Definitions
This article uses the following terms, defined below:
Source System - The repository of users that the Azure AD provisioning service synchronizes from. Azure
Active Directory is the source system for the majority of pre-integrated provisioning connectors, however
there are some exceptions (example: Workday Inbound Synchronization).
Target System - The repository of users that the Azure AD provisioning service synchronizes to. This is
typically a SaaS application (examples: Salesforce, ServiceNow, G Suite, Dropbox for Business), but in some
cases can be an on-premises system such as Active Directory (example: Workday Inbound Synchronization to
Active Directory).
Troubleshooting
The provisioning summary report and audit logs play a key role helping admins troubleshoot various user
account provisioning issues.
For scenario-based guidance on how to troubleshoot automatic user provisioning, see Problems configuring and
provisioning users to an application.
Additional Resources
Managing user account provisioning for Enterprise Apps
What is application access and single sign-on with Azure Active Directory?
Export or import your provisioning configuration by
using Graph API
9/9/2019 • 2 minutes to read • Edit Online
You can use Microsoft Graph API and Graph Explorer to export your User Provisioning attribute mappings and
schema to a JSON file and import it back into Azure AD. You can also use the steps captured here to create a
backup of your provisioning configuration.
GET https://graph.microsoft.com/beta/servicePrincipals/[servicePrincipalId]/synchronization/jobs
You will get a response as shown below. Copy the "id attribute" present in the response. This value is the
ProvisioningJobId and will be used to retrieve the underlying schema metadata.
GET
https://graph.microsoft.com/beta/servicePrincipals/[servicePrincipalId]/synchronization/jobs/[ProvisioningJobId
]/schema
Copy the JSON object from the response and save it to a file to create a backup of the schema.
PUT
https://graph.microsoft.com/beta/servicePrincipals/[servicePrincipalId]/synchronization/jobs/[ProvisioningJobId
]/schema
In the "Request Body" tab, copy the contents of the JSON schema file.
In the "Request Headers" tab, add the Content-Type header attribute with value “application/json”
Configuring automatic user provisioning for an app (where supported), requires that specific instructions be
followed to prepare the application for automatic provisioning. Then you can use the Azure portal to configure the
provisioning service to synchronize user accounts to the application.
You should always start by finding the setup tutorial specific to setting up provisioning for your application. Then
follow those steps to configure both the app and Azure AD to create the provisioning connection. A list of app
tutorials can be found at List of Tutorials on How to Integrate SaaS Apps with Azure Active Directory.
Audit logs say users are skipped and not provisioned even though they
are assigned
When a user shows up as “skipped” in the audit logs, it is very important to read the extended details in the log
message to determine the reason. Below are common reasons and resolutions:
A scoping filter has been configured that is filtering the user out based on an attribute value. For
more information on scoping filters, see https://docs.microsoft.com/azure/active-directory/active-directory-
saas-scoping-filters.
The user is “not effectively entitled”. If you see this specific error message, it is because there is a
problem with the user assignment record stored in Azure AD. To fix this issue, un-assign the user (or group)
from the app, and re-assign it again. For more information on assignment, see
https://docs.microsoft.com/azure/active-directory/active-directory-coreapps-assign-user-azure-portal.
A required attribute is missing or not populated for a user. An important thing to consider when
setting up provisioning be to review and configure the attribute mappings and workflows that define which
user (or group) properties flow from Azure AD to the application. This includes setting the “matching
property” that be used to uniquely identify and match users/groups between the two systems. For more
information on this important process, see https://docs.microsoft.com/azure/active-directory/active-
directory-saas-customizing-attribute-mappings.
Attribute mappings for groups: Provisioning of the group name and group details, in addition to the
members, if supported for some applications. You can enable or disable this functionality by enabling or
disabling the Mapping for group objects shown in the Provisioning tab. If provisioning groups is
enabled, be sure to review the attribute mappings to ensure an appropriate field is being used for the
“matching ID”. This can be the display name or email alias), as the group and its members not be
provisioned if the matching property is empty or not populated for a group in Azure AD.
Next steps
Automate User Provisioning and Deprovisioning to SaaS Applications with Azure Active Directory
Sync an attribute from your on-premises Active
Directory to Azure AD for provisioning to an
application
5/14/2019 • 2 minutes to read • Edit Online
When customizing attribute mappings for user provisioning, you might find that the attribute you want to map
doesn't appear in the Source attribute list. This article shows you how to add the missing attribute by
synchronizing it from your on-premises Active Directory (AD ) to Azure Active Directory (Azure AD ).
Azure AD must contain all the data required to create a user profile when provisioning user accounts from Azure
AD to a SaaS app. In some cases, to make the data available you might need synchronize attributes from your on-
premises AD to Azure AD. Azure AD Connect automatically synchronizes certain attributes to Azure AD, but not all
attributes. Furthermore, some attributes (such as SAMAccountName) that are synchronized by default might not
be exposed via the Azure AD Graph API. In these cases, you can use the Azure AD Connect directory extension
feature to synchronize the attribute to Azure AD. That way, the attribute will be visible to the Azure AD Graph API
and the Azure AD provisioning service.
If the data you need for provisioning is in Active Directory but isn't available for provisioning because of the
reasons described above, follow these steps.
Sync an attribute
1. Open the Azure AD Connect wizard, choose Tasks, and then choose Customize synchronization options.
NOTE
The search under Available Attributes is case sensitive.
5. Finish the Azure AD Connect wizard and allow a full synchronization cycle to run. When the cycle is
complete, the schema is extended and the new values are synchronized between your on-premises AD and
Azure AD.
6. In the Azure portal, while you’re editing user attribute mappings, the Source attribute list will now contain
the added attribute in the format <attributename> (extension_<appID>_<attributename>) . Select the attribute
and map it to the target application for provisioning.
NOTE
The ability to provision reference attributes from on-premises AD, such as managedby or DN/DistinguishedName, is not
supported today. You can request this feature on User Voice.
Next steps
Define who is in scope for provisioning
User provisioning to an Azure AD Gallery application
is taking hours or more
5/16/2019 • 2 minutes to read • Edit Online
When first enabling automatic provisioning for an application, the initial sync can take anywhere from 20 minutes
to several hours, depending on the size of the Azure AD directory and the number of users in scope for
provisioning.
Subsequent syncs after the initial sync be faster, as the provisioning service stores watermarks that represent the
state of both systems after the initial sync, improving performance of subsequent syncs.
Next steps
Automate User Provisioning and Deprovisioning to SaaS Applications with Azure Active Directory
Problem saving administrator credentials while
configuring user provisioning to an Azure Active
Directory Gallery application
7/22/2019 • 2 minutes to read • Edit Online
When using the Azure portal to configure automatic user provisioning for an enterprise application, you may
encounter a situation where:
The Admin Credentials entered for the application are valid, and the Test Connection button works.
However, the credentials cannot be saved, and the Azure portal returns a generic error message.
If SAML -based single sign-on is also configured for the same application, the most likely cause of the error is that
Azure AD's internal, per-application storage limit for certificates and credentials has been exceeded.
Azure AD currently has a maximum storage capacity of 1024 bytes for all certificates, secret tokens, credentials,
and related configuration data associated with a single instance of an application (also known as a service principal
record in Azure AD ).
When SAML -based single sign-on is configured, the certificate used to sign the SAML tokens is stored here, and
often consumes over 50% percent of the space.
Any secret tokens, URIs, notification email addresses, user names, and passwords that get entered during setup of
user provisioning can cause the storage limit to be exceeded.
Next steps
Configure user provisioning and de-provisioning to SaaS applications
No users are being provisioned to an Azure AD
Gallery application
8/8/2019 • 4 minutes to read • Edit Online
After automatic provisioning has been configured for an application (including verifying that the app credentials
provided to Azure AD to connect to the app are valid), then users and/or groups are provisioned to the app.
Provisioning is determined by the following things:
Which users and groups have been assigned to the application. Note that provisioning nested groups or Office
365 groups is not supported. For more information on assignment, see Assign a user or group to an enterprise
app in Azure Active Directory.
Whether or not attribute mappings are enabled, and configured to sync valid attributes from Azure AD to the
app. For more information on attribute mappings, see Customizing User Provisioning Attribute Mappings for
SaaS Applications in Azure Active Directory.
Whether or not there is a scoping filter present that is filtering users based on specific attribute values. For
more information on scoping filters, see Attribute-based application provisioning with scoping filters.
If you observe that users are not being provisioned, consult the Audit logs in Azure AD. Search for log entries for a
specific user.
The provisioning audit logs can be accessed in the Azure portal, in the Azure Active Directory > Enterprise
Apps > [Application Name] > Audit Logs tab. Filter the logs on the Account Provisioning category to only
see the provisioning events for that app. You can search for users based on the “matching ID” that was configured
for them in the attribute mappings. For example, if you configured the “user principal name” or “email address” as
the matching attribute on the Azure AD side, and the user not being provisioning has a value of
“[email protected]”, then search the audit logs for “[email protected]” and review the entries returned.
The provisioning audit logs record all the operations performed by the provisioning service, including querying
Azure AD for assigned users that are in scope for provisioning, querying the target app for the existence of those
users, comparing the user objects between the system. Then add, update, or disable the user account in the target
system based on the comparison.
Audit logs say users are skipped and not provisioned even though they
are assigned
When a user shows up as “skipped” in the audit logs, it is important to read the extended details in the log message
to determine the reason. Below are common reasons and resolutions:
A scoping filter has been configured that is filtering the user out based on an attribute value. For more
information on scoping filters, see scoping filters.
The user is “not effectively entitled”. If you see this specific error message, it is because there is a problem
with the user assignment record stored in Azure AD. To fix this issue, unassign the user (or group) from the app,
and reassign it again. For more information on assignment, see Assign user or group access.
A required attribute is missing or not populated for a user. An important thing to consider when setting
up provisioning is to review and configure the attribute mappings and workflows that define which user (or
group) properties flow from Azure AD to the application. This configuration includes setting the “matching
property” that is used to uniquely identify and match users/groups between the two systems. For more
information on this important process, see Customizing User Provisioning Attribute Mappings for SaaS
Applications in Azure Active Directory.
Attribute mappings for groups: Provisioning of the group name and group details, in addition to the
members, if supported for some applications. You can enable or disable this functionality by enabling or
disabling the Mapping for group objects shown in the Provisioning tab. If provisioning groups is enabled, be
sure to review the attribute mappings to ensure an appropriate field is being used for the “matching ID”. The
matching ID can be the display name or email alias. The group and its members are not provisioned if the
matching property is empty or not populated for a group in Azure AD.
Next steps
Azure AD Connect sync: Understanding Declarative Provisioning
Wrong set of users are being provisioned to an Azure
AD Gallery application
5/16/2019 • 4 minutes to read • Edit Online
Which users are provisioned to the app is primarily driven by which users and groups have been assigned to the
application.
Use the following resources to learn how to check which users and groups have been assigned to an application
within Azure Active Directory.
IMPORTANT
Provisioning of the group name and group details, in addition to the members, if supported for some applications. You can
enable or disable this functionality by enabling or disabling the Mapping for group objects shown in the Provisioning tab.
If provisioning groups is enabled, be sure to review the attribute mappings to ensure an appropriate field is being
used for the “matching ID”. This matching ID can be the display name or email alias. The group and its members
are not provisioned if the matching property is empty or not populated for a group in Azure AD.
Next steps
Automate User Provisioning and Deprovisioning to SaaS Applications with Azure Active Directory
Work with existing on-premises proxy servers
7/11/2019 • 6 minutes to read • Edit Online
This article explains how to configure Azure Active Directory (Azure AD ) Application Proxy connectors to work
with outbound proxy servers. It is intended for customers with network environments that have existing proxies.
We start by looking at these main deployment scenarios:
Configure connectors to bypass your on-premises outbound proxies.
Configure connectors to use an outbound proxy to access Azure AD Application Proxy.
For more information about how connectors work, see Understand Azure AD Application Proxy connectors.
To ensure that the Connector Updater service also bypasses the proxy, make a similar change to the
ApplicationProxyConnectorUpdaterService.exe.config file. This file is located at C:\Program Files\Microsoft AAD
App Proxy Connector Updater.
Be sure to make copies of the original files, in case you need to revert to the default .config files.
As a result of having only outbound traffic, there's no need to configure inbound access through your firewalls.
NOTE
Application Proxy does not support authentication to other proxies. The connector/updater network service accounts
should be able to connect to the proxy without being challenged for authentication.
Step 1: Configure the connector and related services to go through the outbound proxy
If WPAD is enabled in the environment and configured appropriately, the connector automatically discovers the
outbound proxy server and attempt to use it. However, you can explicitly configure the connector to go through
an outbound proxy.
To do so, edit the C:\Program Files\Microsoft AAD App Proxy
Connector\ApplicationProxyConnectorService.exe.config file, and add the system.net section shown in this code
sample. Change proxyserver:8080 to reflect your local proxy server name or IP address, and the port that it's
listening on. The value must have the prefix http:// even if you are using an IP address.
Next, configure the Connector Updater service to use the proxy by making a similar change to the C:\Program
Files\Microsoft AAD App Proxy Connector Updater\ApplicationProxyConnectorUpdaterService.exe.config file.
Step 2: Configure the proxy to allow traffic from the connector and related services to flow through
There are four aspects to consider at the outbound proxy:
Proxy outbound rules
Proxy authentication
Proxy ports
SSL inspection
Proxy outbound rules
Allow access to the following URLs:
If your firewall or proxy allows you to configure DNS allow lists, you can allow connections to *.msappproxy.net
and *.servicebus.windows.net. If not, you need to allow access to the Azure DataCenter IP ranges. The IP ranges
are updated each week.
If you can't allow connectivity by FQDN and need to specify IP ranges instead, use these options:
Allow the connector outbound access to all destinations.
Allow the connector outbound access to all of the Azure datacenter IP ranges. The challenge with using the list
of Azure datacenter IP ranges is that it's updated weekly. You need to put a process in place to ensure that your
access rules are updated accordingly. Only using a subset of the IP addresses may cause your configuration to
break.
Proxy authentication
Proxy authentication is not currently supported. Our current recommendation is to allow the connector
anonymous access to the Internet destinations.
Proxy ports
The connector makes outbound SSL -based connections by using the CONNECT method. This method essentially
sets up a tunnel through the outbound proxy. Configure the proxy server to allow tunneling to ports 443 and 80.
NOTE
When Service Bus runs over HTTPS, it uses port 443. However, by default, Service Bus attempts direct TCP connections and
falls back to HTTPS only if direct connectivity fails.
SSL inspection
Do not use SSL inspection for the connector traffic, because it causes problems for the connector traffic. The
connector uses a certificate to authenticate to the Application Proxy service, and that certificate can be lost during
SSL inspection.
Next steps
Understand Azure AD Application Proxy connectors
If you have problems with connector connectivity issues, ask your question in the Azure Active Directory
forum or create a ticket with our support team.
Create an unattended installation script for the Azure
AD Application Proxy connector
5/16/2019 • 3 minutes to read • Edit Online
This topic helps you create a Windows PowerShell script that enables unattended installation and registration for
your Azure AD Application Proxy connector.
This capability is useful when you want to:
Install the connector on Windows servers that don't have user interface enabled, or that you can't access with
Remote Desktop.
Install and register many connectors at once.
Integrate the connector installation and registration as part of another procedure.
Create a standard server image that contains the connector bits but is not registered.
For the Application Proxy connector to work, it has to be registered with your Azure AD directory using an
application administrator and password. Ordinarily this information is entered during Connector installation in a
pop-up dialog box, but you can use PowerShell to automate this process instead.
There are two steps for an unattended installation. First, install the connector. Second, register the connector with
Azure AD.
AADApplicationProxyConnectorInstaller.exe REGISTERCONNECTOR="false" /q
$User = "<username>"
$PlainPassword = '<password>'
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User,
$SecurePassword
2. Go to C:\Program Files\Microsoft AAD App Proxy Connector and run the following script using the
$cred object that you created:
class Program
{
#region constants
/// <summary>
/// The AAD authentication endpoint uri
/// </summary>
static readonly Uri AadAuthenticationEndpoint = new
Uri("https://login.microsoftonline.com/common/oauth2/token?api-version=1.0");
/// <summary>
/// The application ID of the connector in AAD
/// </summary>
static readonly string ConnectorAppId = "55747057-9b5d-4bd4-b387-abf52a8bd489";
/// <summary>
/// The reply address of the connector application in AAD
/// </summary>
static readonly Uri ConnectorRedirectAddress = new Uri("urn:ietf:wg:oauth:2.0:oob");
/// <summary>
/// The AppIdUri of the registration service in AAD
/// </summary>
static readonly Uri RegistrationServiceAppIdUri = new
Uri("https://proxy.cloudwebappproxy.net/registerapp");
#endregion
AuthenticationResult authResult =
authContext.AcquireToken(RegistrationServiceAppIdUri.AbsoluteUri,
ConnectorAppId,
ConnectorRedirectAddress,
PromptBehavior.Always);
token = authResult.AccessToken;
tenantID = authResult.TenantId;
}
Using PowerShell:
# Locate AzureAD PowerShell Module
# Change Name of Module to AzureAD after what you have installed
$AADPoshPath = (Get-InstalledModule -Name AzureAD).InstalledLocation
# Set Location for ADAL Helper Library
$ADALPath = $(Get-ChildItem -Path $($AADPoshPath) -Filter
Microsoft.IdentityModel.Clients.ActiveDirectory.dll -Recurse ).FullName | Select-Object -Last 1
#region constants
#endregion
#region GetAuthenticationToken
#endregion
2. Once you have the token, create a SecureString using the token:
$SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
3. Run the following Windows PowerShell command, replacing <tenant GUID> with your directory ID:
.\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft AAD App Proxy Connector\Modules\" -
moduleName "AppProxyPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -
Feature ApplicationProxy
Next steps
Publish applications using your own domain name
Enable single-sign on
Troubleshoot issues you're having with Application Proxy
Working with claims-aware apps in Application Proxy
7/24/2019 • 2 minutes to read • Edit Online
Claims-aware apps perform a redirection to the Security Token Service (STS ). The STS requests credentials from
the user in exchange for a token and then redirects the user to the application. There are a few ways to enable
Application Proxy to work with these redirects. Use this article to configure your deployment for claims-aware
apps.
Prerequisites
Make sure that the STS that the claims-aware app redirects to is available outside of your on-premises network.
You can make the STS available by exposing it through a proxy or by allowing outside connections.
Configure ADFS
You can configure ADFS for claims-aware apps in one of two ways. The first is by using custom domains. The
second is with WS -Federation.
Option 1: Custom domains
If all the internal URLs for your applications are fully qualified domain names (FQDNs), then you can configure
custom domains for your applications. Use the custom domains to create external URLs that are the same as the
internal URLs. When your external URLs match your internal URLs, then the STS redirections work whether your
users are on-premises or remote.
Option 2: WS -Federation
1. Open ADFS Management.
2. Go to Relying Party Trusts, right-click on the app you are publishing with Application Proxy, and choose
Properties.
You may have business logic APIs running on-premises, or hosted on virtual machines in the cloud. Your native
Android, iOS, Mac, or Windows apps need to interact with the API endpoints to use data or provide user
interaction. Azure AD Application Proxy and the Azure Active Directory Authentication Libraries (ADAL ) let your
native apps securely access your on-premises APIs. Azure Active Directory Application Proxy is a faster and more
secure solution than opening firewall ports and controlling authentication and authorization at the app layer.
This article walks you through setting up an Azure AD Application Proxy solution for hosting a web API service
that native apps can access.
Overview
The following diagram shows a traditional way to publish on-premises APIs. This approach requires opening
incoming ports 80 and 443.
The following diagram shows how you can use Azure AD Application Proxy to securely publish APIs without
opening any incoming ports:
The Azure AD Application Proxy forms the backbone of the solution, working as a public endpoint for API access,
and providing authentication and authorization. You can access your APIs from a vast array of platforms by using
the ADAL libraries.
Since Azure AD Application Proxy authentication and authorization are built on top of Azure AD, you can use
Azure AD Conditional Access to ensure only trusted devices can access APIs published through Application Proxy.
Use Azure AD Join or Azure AD Hybrid Joined for desktops, and Intune Managed for devices. You can also take
advantage of Azure Active Directory Premium features like Azure Multi-Factor Authentication, and the machine
learning-backed security of Azure Identity Protection.
Prerequisites
To follow this walkthrough, you need:
Admin access to an Azure directory, with an account that can create and register apps
The sample web API and native client apps from https://github.com/jeevanbisht/API-NativeApp-ADAL -
SampleApp
You've published your web API through Azure AD Application Proxy. Now, add users who can access the app.
1. On the SecretAPI - Overview page, select Users and groups in the left navigation.
2. On the Users and groups page, select Add user.
3. On the Add assignment page, select Users and groups.
4. On the Users and groups page, search for and select users who can access the app, including at least
yourself. After selecting all users, select Select.
5. Back on the Add Assignment page, select Assign.
NOTE
APIs that use Integrated Windows Authentication might require additional steps.
// MessageBox.Show(response.RequestMessage.ToString());
string s = await response.Content.ReadAsStringAsync();
MessageBox.Show(s);
To configure the native app to connect to Azure Active Directory and call the API App Proxy, update the
placeholder values in the App.config file of the NativeClient sample app with values from Azure AD:
Paste the Directory (tenant) ID in the <add key="ida:Tenant" value="" /> field. You can find and copy this
value (a GUID ) from the Overview page of either of your apps.
Paste the AppProxyNativeAppSample Application (client) ID in the <add key="ida:ClientId" value="" />
field. You can find and copy this value (a GUID ) from the AppProxyNativeAppSample Overview page.
Paste the AppProxyNativeAppSample Redirect URI in the <add key="ida:RedirectUri" value="" /> field.
You can find and copy this value (a URI) from the AppProxyNativeAppSample Authentication page.
Paste the SecretAPI Application ID URI in the <add key="todo:TodoListResourceId" value="" /> field. You
can find and copy this value (a URI) from the SecretAPI Expose an API page.
Paste the SecretAPI Home Page URL in the <add key="todo:TodoListBaseAddress" value="" /> field. You can
find and copy this value (a URL ) from the SecretAPI Branding page.
After you configure the parameters, build and run the native app. When you select the Sign In button, the app lets
you sign in, and then displays a success screen to confirm that it successfully connected to the SecretAPI.
Next steps
Tutorial: Add an on-premises application for remote access through Application Proxy in Azure Active Directory
Quickstart: Configure a client application to access web APIs
How to enable native client applications to interact with proxy applications
How to enable native client applications to interact
with proxy applications
7/9/2019 • 4 minutes to read • Edit Online
You can use Azure Active Directory (Azure AD ) Application Proxy to publish web apps, but it also can be used to
publish native client applications that are configured with the Azure AD Authentication Library (ADAL ). Native
client applications differ from web apps because they're installed on a device, while web apps are accessed
through a browser.
To support native client applications, Application Proxy accepts Azure AD -issued tokens that are sent in the
header. The Application Proxy service does the authentication for the users. This solution doesn't use application
tokens for authentication.
To publish native applications, use the Azure AD Authentication Library, which takes care of authentication and
supports many client environments. Application Proxy fits into the Native Application to Web API scenario.
This article walks you through the four steps to publish a native application with Application Proxy and the Azure
AD Authentication Library.
The required info in the sample code can be found in the Azure AD portal, as follows:
<External Url of Proxy App> Enterprise applications > your proxy application >
Application proxy > External Url
<App ID of the Native app> Enterprise applications > your native application >
Properties > Application ID
<Redirect URI of the Native App> Azure Active Directory > App registrations > your native
application > Redirect URIs
<Proxy App API Url> Azure Active Directory > App registrations > your native
application > API permissions > API / PERMISSIONS
NAME
After you edit the ADAL with these parameters, your users can authenticate to native client applications even
when they're outside of the corporate network.
Next steps
For more information about the native application flow, see Native apps in Azure Active Directory.
Learn about setting up Single sign-on to applications in Azure Active Directory.
Set a custom home page for published apps by using
Azure AD Application Proxy
7/11/2019 • 5 minutes to read • Edit Online
This article discusses how to configure an app to direct a user to a custom home page. When you publish an app
with Application Proxy, you set an internal URL, but sometimes that's not the page a user should see first. Set a
custom home page so that a user gets the right page when they access the app. A user will see the custom home
page that you set, regardless of whether they access the app from the Azure Active Directory Access Panel or the
Office 365 app launcher.
When a user launches the app, they're directed by default to the root domain URL for the published app. The
landing page is typically set as the home page URL. Use the Azure AD PowerShell module to define a custom
home page URL when you want an app user to land on a specific page within the app.
Here's one scenario that explains why your company would set a custom home page:
Inside your corporate network, a user goes to https://ExpenseApp/login/login.aspx to sign in and access your
app.
Because you have other assets (such as images) that Application Proxy needs to access at the top level of the
folder structure, you publish the app with https://ExpenseApp as the internal URL.
The default external URL is https://ExpenseApp-contoso.msappproxy.net , which doesn't take an external user to
the sign-in page.
You want to set https://ExpenseApp-contoso.msappproxy.net/login/login.aspx as the home page URL instead, so
an external user sees the sign-in page first.
NOTE
When you give users access to published apps, the apps are displayed in the Azure AD Access Panel and the Office 365 app
launcher.
6. Select Save.
If you're running the command as a non-admin, use the -scope currentuser option.
2. During the installation, select Y to install two packages from Nuget.org. Both packages are required.
Find the ObjectId of the app
You get the ObjectId of the app by searching for the app by its display name or home page.
1. In the same PowerShell window, import the Azure AD module.
Import-Module AzureAD
2. Sign in to the Azure AD module as the tenant administrator.
Connect-AzureAD
3. Find the app. This example uses PowerShell to find the ObjectId by searching for the app with a display
name of SharePoint .
You should get a result that's similar to the one shown here. Copy the ObjectId GUID to use in the next
section.
DisplayName : SharePoint
Homepage : https://sharepoint-iddemo.msappproxy.net/
ObjectId : 8af89bfa-eac6-40b0-8a13-c2c4e3ee22a4
Alternatively, you could just pull the list of all apps, search the list for the app with a specific display name or
home page, and copy the app's ObjectId once the app is found.
$objguid = "8af89bfa-eac6-40b0-8a13-c2c4e3ee22a4"
2. Confirm that you have the correct app by running the following command. The output should be identical
to the output you saw in the previous section (Find the ObjectId of the app).
3. Create a blank application object to hold the changes that you want to make.
4. Set the home page URL to the value that you want. The value must be a subdomain path of the published
app. For example, if you change the home page URL from https://sharepoint-iddemo.msappproxy.net/ to
https://sharepoint-iddemo.msappproxy.net/hybrid/ , app users go directly to the custom home page.
$homepage = "https://sharepoint-iddemo.msappproxy.net/hybrid/"
6. To confirm that the change was successful, run the following command from step 2 again.
DisplayName : SharePoint
Homepage : https://sharepoint-iddemo.msappproxy.net/hybrid/
ObjectId : 8af89bfa-eac6-40b0-8a13-c2c4e3ee22a4
7. Restart the app to confirm that the home page appears as the first screen, as expected.
NOTE
Any changes that you make to the app might reset the home page URL. If your home page URL resets, repeat the steps in
this section to set it back.
Next steps
Enable remote access to SharePoint with Azure AD Application Proxy
Tutorial: Add an on-premises application for remote access through Application Proxy in Azure Active
Directory
Redirect hardcoded links for apps published with
Azure AD Application Proxy
8/15/2019 • 6 minutes to read • Edit Online
Azure AD Application Proxy makes your on-premises apps available to users who are remote or on their own
devices. Some apps, however, were developed with local links embedded in the HTML. These links don't work
correctly when the app is used remotely. When you have several on-premises applications point to each other,
your users expect the links to keep working when they're not at the office.
The best way to make sure that links work the same both inside and outside of your corporate network is to
configure the external URLs of your apps to be the same as their internal URLs. Use custom domains to configure
your external URLs to have your corporate domain name instead of the default application proxy domain.
If you can't use custom domains in your tenant, there are several other options for providing this functionality. All
of these are also compatible with custom domains and each other, so you can configure custom domains and
other solutions if needed.
NOTE
Link translation is not supported for hard-coded internal URLs generated through Javascript.
Option 1: Use the Managed Browser or Microsoft Edge – This solution is only applicable if you plan to
recommend or require that users access the application through the Intune Managed Browser or Microsoft Edge
Browser. It will handle all published URLs.
Option 2: Use the MyApps Extension – This solution requires users to install a client-side browser extension,
but it will handle all published URLs and works with most popular browsers.
Option 3: Use the link translation setting – This is an admin side setting that is invisible to users. However, it
will only handle URLs in HTML and CSS.
These three features keep your links working no matter where your users are. When you have apps that point
directly to internal endpoints or ports, you can map these internal URLs to the published external Application
Proxy URLs.
NOTE
The last option is only for tenants that, for whatever reason, can't use custom domains to have the same internal and
external URLs for their apps. Before you enable this feature, see if custom domains in Azure AD Application Proxy can work
for you.
Or, if the application you need to configure with link translation is SharePoint, see Configure alternate access mappings for
SharePoint 2013 for another approach to mapping links.
NOTE
If you are using option 2 or 3, only one of these should be enabled at a time.
Send feedback
We want your help to make this feature work for all your apps. We search over 30 tags in HTML and CSS. If you
have an example of generated links that aren't being translated, send a code snippet to Application Proxy
Feedback.
Next steps
Use custom domains with Azure AD Application Proxy to have the same internal and external URL
Configure alternate access mappings for SharePoint 2013
Cookie settings for accessing on-premises
applications in Azure Active Directory
5/16/2019 • 2 minutes to read • Edit Online
Azure Active Directory (Azure AD ) has access and session cookies for accessing on-premises applications through
Application Proxy. Find out how to use the Application Proxy cookie settings.
Use HTTP-Only Cookie No Yes allows Application Proxy Use Yes because of the
to include the HTTPOnly flag additional security benefits.
in HTTP response headers.
This flag provides additional Use No for clients or user
security benefits, for agents that do require
example, it prevents client- access to the session cookie.
side scripting (CSS) from For example, use No for an
copying or modifying the RDP or MTSC client that
cookies. connects to a Remote
Desktop Gateway server
Before we supported the through Application Proxy.
HTTP-Only setting,
Application Proxy encrypted
and transmitted cookies over
a secured SSL channel to
protect against modification.
Use Secure Cookie No Yes allows Application Proxy Use Yes because of the
to include the Secure flag in additional security benefits.
HTTP response headers.
Secure Cookies enhances
security by transmitting
cookies over a TLS secured
channel such as HTTPS. This
prevents cookies from being
observed by unauthorized
parties due to the
transmission of the cookie in
clear text.
COOKIE SETTING DEFAULT DESCRIPTION RECOMMENDATIONS
Use Persistent Cookie No Yes allows Application Proxy Use No because of the
to set its access cookies to security risk associated with
not expire when the web keeping users authenticated.
browser is closed. The
persistence lasts until the We suggest only using Yes
access token expires, or until for older applications that
the user manually deletes can't share cookies between
the persistent cookies. processes. It's better to
update your application to
handle sharing cookies
between processes instead
of using persistent cookies.
For example, you might need
persistent cookies to allow a
user to open Office
documents in explorer view
from a SharePoint site.
Without persistent cookies,
this operation might fail if
the access cookies aren't
shared between the browser,
the explorer process, and the
Office process.
Secure Cookie
Set-AzureADApplicationProxyApplication -ObjectId <ObjectId> -IsSecureCookieEnabled $true
Set-AzureADApplicationProxyApplication -ObjectId <ObjectId> -IsSecureCookieEnabled $false
Persistent Cookies
In Azure Active Directory (Azure AD ), configuring a large number of on-premises applications can quickly become
unmanageable and introduces unnecessary risks for configuration errors if many of them require the same
settings. With Azure AD Application Proxy, you can address this issue by using wildcard application publishing to
publish and manage many applications at once. This is a solution that allows you to:
Simplify your administrative overhead
Reduce the number of potential configuration errors
Enable your users to securely access more resources
This article provides you with the information you need to configure wildcard application publishing in your
environment.
http(s)://*.<domain>
Prerequisites
To get started, make sure you've met these requirements.
Custom domains
While custom domains are optional for all other applications, they are a prerequisite for wildcard applications.
Creating custom domains requires you to:
1. Create a verified domain within Azure.
2. Upload an SSL certificate in the PFX format to your application proxy.
You should consider using a wildcard certificate to match the application you plan to create. Alternatively, you can
also use a certificate that only lists specific applications. In this case, only the applications listed in the certificate
will be accessible through this wildcard application.
For security reasons, this is a hard requirement and we will not support wildcards for applications that cannot use
a custom domain for the external URL.
DNS updates
When using custom domains, you need to create a DNS entry with a CNAME record for the external URL (for
example, *.adventure-works.com ) pointing to the external URL of the application proxy endpoint.For wildcard
applications, the CNAME record needs to point to the relevant external URLs:
<yourAADTenantId>.tenant.runtime.msappproxy.net
To confirm that you have configured your CNAME correctly, you can use nslookup on one of the target endpoints,
for example, expenses.adventure-works.com . Your response should include the already mentioned alias (
<yourAADTenantId>.tenant.runtime.msappproxy.net ).
Considerations
Here are some considerations you should take into account for wildcard applications.
Accepted formats
For wildcard applications, the Internal URL must be formatted as http(s)://*.<domain> .
When you configure an External URL, you must use the following format: https://*.<custom domain>
Other positions of the wildcard, multiple wildcards, or other regex strings are not supported and are causing
errors.
Excluding applications from the wildcard
You can exclude an application from the wildcard application by
Publishing the exception application as regular application
Enabling the wildcard only for specific applications through your DNS settings
Publishing an application as regular application is the preferred method to exclude an application from a wildcard.
You should publish the excluded applications before the wildcard applications to ensure that your exceptions are
enforced from the beginning. The most specific application will always take precedence – an application published
as budgets.finance.adventure-works.com takes precedence over the application *.finance.adventure-works.com ,
which in turn takes precedence over the application *.adventure-works.com .
You can also limit the wildcard to only work for specific applications through your DNS management. As a best
practice, you should create a CNAME entry that includes a wildcard and matches the format of the external URL
you have configured. However, you can instead point specific application URLs to the wildcards. For example,
instead of *.adventure-works.com , point hr.adventure-works.com , expenses.adventure-works.com and
travel.adventure-works.com individually to 000aa000-11b1-2ccc-d333-4444eee4444e.tenant.runtime.msappproxy.net .
If you use this option, you also need another CNAME entry for the value AppId.domain , for example,
00000000-1a11-22b2-c333-444d4d4dd444.adventure-works.com , also pointing to the same location. You can find the
AppId on the application properties page of the wildcard application:
Following the documented steps, you create a new application proxy application in your tenant. In this example, the
wildcard is in the following fields:
Internal URL:
External URL:
By publishing the wildcard application, you can now access your three applications by navigating to the URLs you
are used to (for example, travel.adventure-works.com ).
The configuration implements the following structure:
COLOR DESCRIPTION
Following the documented steps, this scenario requires the following settings:
In the Internal URL, you set finance instead of a wildcard.
Next steps
To learn more about Custom domains, see Working with custom domains in Azure AD Application Proxy.
To learn more about Publishing applications, see Publish applications using Azure AD Application Proxy
Remove personal data for Azure Active Directory
Application Proxy
7/11/2019 • 2 minutes to read • Edit Online
Azure Active Directory Application Proxy requires that you install connectors on your devices, which means that
there might be personal data on your devices. This article provides steps for how to delete that personal data to
improve privacy.
NOTE
If you’re interested in viewing or deleting personal data, please review Microsoft's guidance in the Windows Data Subject
Requests for the GDPR site. If you’re looking for general information about GDPR, see the GDPR section of the Service Trust
portal.
NOTE
This article provides steps for how to delete personal data from the device or service and can be used to support your
obligations under the GDPR. If you’re looking for general info about GDPR, see the GDPR section of the Service Trust portal.
Since the logs are text files, you can use findstr to search for text entries related to a user.
To find personal data, search log files for UserID.
To find personal data logged by an application that uses Kerberos Constrained Delegation, search for these
components of the username type:
On-premises user principal name
Username part of user principal name
Username part of on-premises user principal name
On-premises security accounts manager (SAM ) account name
Delete specific data
To delete specific data:
1. Restart the Microsoft Azure AD Application Proxy Connector service to generate a new log file. The new log file
enables you to delete or modify the old log files.
2. Follow the View or export specific data process described previously to find information that needs to be
deleted. Search all of the connector logs.
3. Either delete the relevant log files or selectively delete the fields that contain personal data. You can also delete
all old log files if you don’t need them anymore.
Turn off connector logs
One option to ensure the connector logs do not contain personal data is to turn off the log generation. To stop
generating connector logs, remove the following highlighted line from
C:\Program Files\Microsoft AAD App Proxy Connector\ApplicationProxyConnectorService.exe.config .
Next steps
For an overview of Application Proxy, see How to provide secure remote access to on-premises applications.
Working with custom domains in Azure AD
Application Proxy
9/5/2019 • 3 minutes to read • Edit Online
When you publish an application through Azure Active Directory Application Proxy, you create an external URL
for your users to go to when they're working remotely. This URL gets the default domain
yourtenant.msappproxy.net. For example, if you published an app named Expenses and your tenant is named
Contoso, then the external URL would be https://expenses-contoso.msappproxy.net . If you want to use your
own domain name, configure a custom domain for your application.
We recommend that you set up custom domains for your applications whenever possible. Some of the benefits
of custom domains include:
Your users can get to the application with the same URL, whether they are working inside or outside of your
network.
If all of your applications have the same internal and external URLs, then links in one application that point
to another continue to work even outside the corporate network.
You control your branding, and create the URLs you want.
If you already uploaded a certificate for this domain, the Certificate field displays the certificate
information.
7. Upload the PFX certificate and enter the password for the certificate.
8. Select Save to save your changes.
9. Add a DNS record that redirects the new external URL to the msappproxy.net domain.
10. Check that the DNS record is configured correctly by using the nslookup command to see if your
external URL is reachable and the msapproxy.net domain shows up as an alias.
TIP
You only need to upload one certificate per custom domain. Once you upload a certificate, you can choose the custom
domain when you publish a new app and not have to do additional configuration except for the DNS record.
Manage certificates
Certificate format
There is no restriction on the certificate signature methods. Elliptic Curve Cryptography (ECC ), Subject
Alternative Name (SAN ), and other common certificate types are all supported.
You can use a wildcard certificate as long as the wildcard matches the desired external URL.
The certificate must include the private key.
Certificates issued by your own public key infrastructure (PKI) can be used if the certificate chain is installed on
your client devices. Intune can be used to deploy these certificates to managed devices. For non-managed
devices these certificates must be manually installed.
Changing the domain
All verified domains appear in the External URL dropdown list for your application. To change the domain, just
update that field for the application. If the domain you want isn't in the list, add it as a verified domain. If you
select a domain that doesn't have an associated certificate yet, follow steps 5-7 to add the certificate. Then,
make sure you update the DNS record to redirect from the new external URL.
Certificate management
You can use the same certificate for multiple applications unless the applications share an external host.
You get a warning when a certificate expires, telling you to upload another certificate through the portal. If the
certificate is revoked, your users may see a security warning when accessing the application. We don’t perform
revocation checks for certificates. To update the certificate for a given application, navigate to the application
and follow steps 5-7 for configuring custom domains on published applications to upload a new certificate. If
the old certificate is not being used by other applications, it is deleted automatically.
Currently all certificate management is through individual application pages so you need to manage certificates
in the context of the relevant applications.
Next steps
Enable single sign-on to your published apps with Azure AD authentication.
Enable Conditional Access to your published apps.
Add your custom domain name to Azure AD
Kerberos Constrained Delegation for single sign-
on to your apps with Application Proxy
8/15/2019 • 7 minutes to read • Edit Online
You can provide single sign-on for on-premises applications published through Application Proxy that are
secured with Integrated Windows Authentication. These applications require a Kerberos ticket for access.
Application Proxy uses Kerberos Constrained Delegation (KCD ) to support these applications.
You can enable single sign-on to your applications using Integrated Windows Authentication (IWA) by giving
Application Proxy connectors permission in Active Directory to impersonate users. The connectors use this
permission to send and receive tokens on their behalf.
1. The user enters the URL to access the on premises application through Application Proxy.
2. Application Proxy redirects the request to Azure AD authentication services to preauthenticate. At this
point, Azure AD applies any applicable authentication and authorization policies, such as multifactor
authentication. If the user is validated, Azure AD creates a token and sends it to the user.
3. The user passes the token to Application Proxy.
4. Application Proxy validates the token and retrieves the User Principal Name (UPN ) from it, and then the
Connector pulls the UPN, and the Service Principal Name (SPN ) through a dually authenticated secure
channel.
5. The Connector performs Kerberos Constrained Delegation (KCD ) negotiation with the on premises AD,
impersonating the user to get a Kerberos token to the application.
6. Active Directory sends the Kerberos token for the application to the Connector.
7. The Connector sends the original request to the application server, using the Kerberos token it received
from AD.
8. The application sends the response to the Connector, which is then returned to the Application Proxy
service and finally to the user.
Prerequisites
Before you get started with single sign-on for IWA applications, make sure your environment is ready with
the following settings and configurations:
Your apps, like SharePoint Web apps, are set to use Integrated Windows Authentication. For more
information, see Enable Support for Kerberos Authentication, or for SharePoint see Plan for Kerberos
authentication in SharePoint 2013.
All your apps have Service Principal Names.
The server running the Connector and the server running the app are domain joined and part of the same
domain or trusting domains. For more information on domain join, see Join a Computer to a Domain.
The server running the Connector has access to read the TokenGroupsGlobalAndUniversal attribute for
users. This default setting might have been impacted by security hardening the environment.
Configure Active Directory
The Active Directory configuration varies, depending on whether your Application Proxy connector and the
application server are in the same domain or not.
Connector and application server in the same domain
1. In Active Directory, go to Tools > Users and Computers.
2. Select the server running the connector.
3. Right-click and select Properties > Delegation.
4. Select Trust this computer for delegation to specified services only.
5. Select Use any authentication protocol.
6. Under Services to which this account can present delegated credentials add the value for the
SPN identity of the application server. This enables the Application Proxy Connector to impersonate
users in AD against the applications defined in the list.
sharepointserviceaccount can be the SPS machine account or a service account under which the SPS app
pool is running.
For more information about Kerberos, see All you want to know about Kerberos Constrained Delegation
(KCD ).
Non-Windows apps typically user usernames or SAM account names instead of domain email addresses. If
that situation applies to your applications, you need to configure the delegated login identity field to connect
your cloud identities to your application identities.
If delegated login identity is used, the value might not be unique across all the domains or forests in your
organization. You can avoid this issue by publishing these applications twice using two different Connector
groups. Since each application has a different user audience, you can join its Connectors to a different
domain.
Configure SSO for different identities
1. Configure Azure AD Connect settings so the main identity is the email address (mail). This is done as
part of the customize process, by changing the User Principal Name field in the sync settings. These
settings also determine how users log in to Office365, Windows10 devices, and other applications that
use Azure AD as their identity store.
2. In the Application Configuration settings for the application you would like to modify, select the
Delegated Login Identity to be used:
User Principal Name (for example, [email protected])
Alternate User Principal Name (for example, [email protected])
Username part of User Principal Name (for example, joe)
Username part of Alternate User Principal Name (for example, joed)
On-premises SAM account name (depends on the domain controller configuration)
Troubleshooting SSO for different identities
If there is an error in the SSO process, it appears in the connector machine event log as explained in
Troubleshooting. But, in some cases, the request is successfully sent to the backend application while this
application replies in various other HTTP responses. Troubleshooting these cases should start by examining
event number 24029 on the connector machine in the Application Proxy session event log. The user identity
that was used for delegation appears in the “user” field within the event details. To turn on session log, select
Show analytic and debug logs in the event viewer view menu.
Next steps
How to configure an Application Proxy application to use Kerberos Constrained Delegation
Troubleshoot issues you're having with Application Proxy
For the latest news and updates, check out the Application Proxy blog
Password vaulting for single sign-on with Application
Proxy
7/11/2019 • 2 minutes to read • Edit Online
Azure Active Directory Application Proxy helps you improve productivity by publishing on-premises applications
so that remote employees can securely access them, too. In the Azure portal, you can also set up single sign-on
(SSO ) to these apps. Your users only need to authenticate with Azure AD, and they can access your enterprise
application without having to sign in again.
Application Proxy supports several single sign-on modes. Password-based sign-on is intended for applications
that use a username/password combination for authentication. When you configure password-based sign-on for
your application, your users have to sign in to the on-premises application once. After that, Azure Active Directory
stores the sign-in information and automatically provides it to the application when your users access it remotely.
You should already have published and tested your app with Application Proxy. If not, follow the steps in Publish
applications using Azure AD Application Proxy then come back here.
Next steps
Read about other ways to implement Single sign-on
Learn about Security considerations for accessing apps remotely with Azure AD Application Proxy
Header-based authentication for single sign-on with
Application Proxy and PingAccess
7/31/2019 • 9 minutes to read • Edit Online
Azure Active Directory (Azure AD ) Application Proxy has partnered with PingAccess so that your Azure AD
customers can access more of your applications. PingAccess expands the existing Application Proxy offerings to
include single sign-on access to applications that use headers for authentication.
NOTE
Since this scenario is a partnership between Azure AD and PingAccess, some of the instructions exist on the Ping Identity
site.
NOTE
For a more detailed walkthrough of this step, see Add an on-premises app to Azure AD.
a. Internal URL: Normally you provide the URL that takes you to the app’s sign-in page when you’re
on the corporate network. For this scenario, the connector needs to treat the PingAccess proxy as
the front page of the application. Use this format:
https://<host name of your PingAccess server>:<port> . The port is 3000 by default, but you can
configure it in PingAccess.
WARNING
For this type of single sign-on, the internal URL must use https and can't use http .
NOTE
If this is your first application, use port 3000 to start and come back to update this setting if you change your
PingAccess configuration. For subsequent applications, the port will need to match the Listener you’ve configured in
PingAccess. Learn more about listeners in PingAccess.
4. Select Add. The overview page for the new application appears.
Now assign a user for application testing and choose header-based single sign-on:
1. From the application sidebar, select Users and groups > Add user > Users and groups (<Number>
Selected). A list of users and groups appears for you to choose from.
2. Select a user for application testing, and select Select. Make sure this test account has access to the on-
premises application.
3. Select Assign.
4. From the application sidebar, select Single sign-on > Header-based.
TIP
If this is your first time using header-based single sign-on, you need to install PingAccess. To make sure your Azure
subscription is automatically associated with your PingAccess installation, use the link on this single sign-on page to
download PingAccess. You can open the download site now, or come back to this page later.
5. Select Save.
Then make sure your redirect URL is set to your external URL:
1. From the Azure Active Directory admin center sidebar, select Azure Active Directory > App
registrations. A list of applications appears.
2. Select your application.
3. Select the link next to Redirect URIs, showing the number of redirect URIs set up for web and public clients.
The <application name> - Authentication page appears.
4. Check whether the external URL that you assigned to your application earlier is in the Redirect URIs list. If it
isn't, add the external URL now, using a redirect URI type of Web, and select Save.
Finally, set up your on-premises application so that users have read access and other applications have read/write
access:
1. From the App registrations sidebar for your application, select API permissions > Add a permission >
Microsoft APIs > Microsoft Graph. The Request API permissions page for Microsoft Graph appears,
which contains the APIs for Windows Azure Active Directory.
3. Next to the Application (client) ID value, select the Copy to clipboard icon, then copy and save it. You
specify this value later as PingAccess's client ID.
4. Next the Directory (tenant) ID value, also select Copy to clipboard, then copy and save it. You specify
this value later as PingAccess's issuer.
5. From the sidebar of the App registrations for your application, select Certificates and secrets > New
client secret. The Add a client secret page appears.
6. In Description, type PingAccess key .
7. Under Expires, choose how to set the PingAccess key: In 1 year, In 2 years, or Never.
8. Select Add. The PingAccess key appears in the table of client secrets, with a random string that autofills in
the VALUE field.
9. Next to the PingAccess key's VALUE field, select the Copy to clipboard icon, then copy and save it. You
specify this value later as PingAccess's client secret.
Update GraphAPI to send custom fields (optional)
If you need a custom claim that sends other tokens within the access_token consumed by PingAccess, set the
acceptMappedClaims application field to True . You can use Graph Explorer or the Azure AD portal's application
manifest to make this change.
This example uses Graph Explorer:
PATCH https://graph.windows.net/myorganization/applications/<object_id_GUID_of_your_application>
{
"acceptMappedClaims":true
}
This example uses the Azure Active Directory portal to update the acceptMappedClaims field:
1. Sign in to the Azure Active Directory portal as an application administrator.
2. Select Azure Active Directory > App registrations. A list of applications appears.
3. Select your application.
4. From the sidebar of the App registrations page for your application, select Manifest. The manifest JSON
code for your application's registration appears.
5. Search for the acceptMappedClaims field, and change the value to True .
6. Select Save.
Use of optional claims (optional)
Optional claims allows you to add standard-but-not-included-by-default claims that every user and tenant has.
You can configure optional claims for your application by modifying the application manifest. For more info, see
the Understanding the Azure AD application manifest article
Example to include email address into the access_token that PingAccess will consume:
"optionalClaims": {
"idToken": [],
"accessToken": [
{
"name": "email",
"source": null,
"essential": false,
"additionalProperties": []
}
],
"saml2Token": []
},
NOTE
To use a custom claim, you must also have a custom policy defined and assigned to the application. This policy should
include all required custom attributes.
You can do policy definition and assignment through PowerShell, Azure AD Graph Explorer, or Microsoft Graph. If you're
doing them in PowerShell, you may need to first use New-AzureADPolicy and then assign it to the application with
Add-AzureADServicePrincipalPolicy . For more information, see Claims mapping policy assignment.
Example:
Add-AzureADServicePrincipalPolicy -Id "<<The object Id of the Enterprise Application you published in the
previous step, which requires this claim>>" -RefObjectId $pol.Id
Next steps
Configure PingAccess for Azure AD to protect applications published using Microsoft Azure AD Application
Proxy
Single sign-on to applications in Azure Active Directory
Troubleshoot Application Proxy problems and error messages
SAML single sign-on for on-premises applications
with Application Proxy
7/23/2019 • 4 minutes to read • Edit Online
You can provide single sign-on (SSO ) to on-premises applications that are secured with SAML authentication and
provide remote access to these applications through Application Proxy. With SAML single sign-on, Azure Active
Directory (Azure AD ) authenticates to the application by using the user's Azure AD account. Azure AD
communicates the sign-on information to the application through a connection protocol. You can also map users
to specific application roles based on rules you define in your SAML claims. By enabling Application Proxy in
addition to SAML SSO, your users will have external access to the application and a seamless SSO experience.
The applications must be able to consume SAML tokens issued by Azure Active Directory. This configuration
doesn't apply to applications using an on-premises identity provider. For these scenarios, we recommend
reviewing Resources for migrating applications to Azure AD.
SAML SSO with Application Proxy also works with the SAML token encryption feature. For more info, see
Configure Azure AD SAML token encryption.
The protocol diagrams below describe the single sign-on sequence for both a service provider-initiated (SP -
initiated) flow and an identity provider-initiated (IdP -initiated) flow. Application Proxy works with SAML SSO by
caching the SAML request and response to and from the on-premises application.
Create an application and set up SAML SSO
1. In the Azure portal, select Azure Active Directory > Enterprise applications and select New
application.
2. Under Add your own app, select Non-gallery application.
3. Enter the display name for your new application, and then select Add.
4. On the app's Overview page, select Single sign-on.
5. Select SAML as the single sign-on method.
6. First set up SAML SSO to work while on the corporate network. In the Set up Single Sign-On with
SAML page, go to the Basic SAML Configuration heading and select its Edit icon (a pencil). Follow the
steps in Enter basic SAML configuration to configure SAML -based authentication for the application.
7. Add at least one user to the application and make sure the test account has access to the application. While
connected to the corporate network, use the test account to see if you have single sign-on to the
application.
NOTE
After you set up Application Proxy, you'll come back and update the SAML Reply URL.
2. Select Azure Active Directory as the Pre Authentication method for your application.
3. Copy the External URL for the application. You'll need this URL to complete the SAML configuration.
4. Using the test account, try to open the application with the External URL to validate that Application Proxy
is set up correctly. If there are issues, see Troubleshoot Application Proxy problems and error messages.
NOTE
If the back-end application expects the Reply URL to be the Internal URL, you'll need to either use custom domains
to have matching internal and external URLS or install the My Apps secure sign-in extension on users' devices. This
extension will automatically redirect to the appropriate Application Proxy Service. To install the extension, see My
Apps secure sign-in extension.
Next steps
How does Azure AD Application Proxy provide single sign-on?
Troubleshoot Application Proxy
Enable remote access to Power BI Mobile with Azure
AD Application Proxy
8/26/2019 • 7 minutes to read • Edit Online
This article discusses how to use Azure AD Application Proxy to enable the Power BI mobile app to connect to
Power BI Report Server (PBIRS ) and SQL Server Reporting Services (SSRS ) 2016 and later. Through this
integration, users who are away from the corporate network can access their Power BI reports from the Power BI
mobile app and be protected by Azure AD authentication. This protection includes security benefits such as
conditional access and multi-factor authentication.
Prerequisites
This article assumes you've already deployed Report Services andenabled Application Proxy.
Enabling Application Proxy requires installing a connector on a Windows server and completing the
prerequisites so that the connector can communicate with Azure AD services.
When publishing Power BI, we recommended you use the same internal and external domains. To learn more
about custom domains, see Working with custom domains in Application Proxy.
This integration is available for the Power BI Mobile iOS and Android application.
<AuthenticationTypes>
<RSWindowsNegotiate />
<RSWindowsKerberos />
<RSWindowsNTLM />
</AuthenticationTypes>
For more information, seeModify a Reporting Services Configuration FileandConfigure Windows Authentication
on a Report Server.
Ensure the Connector is trusted for delegation to the SPN added to the Reporting Services application pool
account
Configure KCD so that the Azure AD Application Proxy service can delegate user identities to the Reporting
Services application pool account. Configure KCD by enabling the Application Proxy connector to retrieve Kerberos
tickets for your users who have been authenticated in Azure AD. Then that server passes the context to the target
application, or Reporting Services in this case.
To configure KCD, repeat the following steps for each connector machine:
1. Sign in to a domain controller as a domain administrator, and then openActive Directory Users and
Computers.
2. Find the computer that the connector is running on.
3. Double-click the computer, and then select theDelegationtab.
4. Set the delegation settings toTrust this computer for delegation to the specified services only. Then,
selectUse any authentication protocol.
5. Select Add, and then select Users or Computers.
6. Enter the service account that you're using for Reporting Services. This is the account you added the SPN to
within the Reporting Services configuration.
7. ClickOK. To save the changes, clickOKagain.
For more information, see Kerberos Constrained Delegation for single sign-on to your apps with Application Proxy.
NOTE
We recommend using a secure HTTPS connection to the Report Server. See Configure SSL connections on a
native mode report server for information how to.
External URL: Enter the public URL the Power BI mobile app will connect to. For example, it may
look like https://reports.contoso.com if a custom domain is used. To use a custom domain, upload a
certificate for the domain, and point a DNS record to the default msappproxy.net domain for your
application. For detailed steps, see Working with custom domains in Azure AD Application Proxy.
Pre-authentication Method: Azure Active Directory
2. Once your app is published, configure the single sign-on settings with the following steps:
a. On the application page in the portal, selectSingle sign-on.
b. For Single Sign-on Mode, selectIntegrated Windows Authentication.
c. Set Internal Application SPN to the value that you set earlier.
d. Choose the Delegated Login Identityfor the connector to use on behalf of your users. For more
information, seeWorking with different on-premises and cloud identities.
e. Click Save to save your changes.
To finish setting up your application, go to theUsers and groupssection and assign users to access this application.
When configuring the app for Power BI Mobile Android, add the following Redirect URIs of type Public
Client (Mobile & Desktop):
urn:ietf:wg:oauth:2.0:oob
mspbi-adal://com.microsoft.powerbimobile
IMPORTANT
The Redirect URIs must be added for the application to work correctly. If you are configuring the app for both Power
BI Mobile iOS and Android, add the following Redirect URI of type Public Client (Mobile & Desktop) to the list of
Redirect URIs configured for iOS: urn:ietf:wg:oauth:2.0:oob .
You can use Microsoft Intune to manage the client apps that your company's workforce uses. Intune allows you to
use capabilities such as data encryption and additional access requirements. To learn more about app management
through Intune, see Intune App Management. To enable the Power BI mobile application to work with the Intune
policy, use the following steps.
1. Go to Azure Active Directoryand thenApp Registrations.
2. Select the application configured in Step 3 when registering your native client application.
3. On the application’s page, select API Permissions.
4. Click Add a permission.
5. Under APIs my organization uses, search for “Microsoft Mobile Application Management” and select it.
6. Add the DeviceManagementManagedApps.ReadWrite permission to the application
7. Click Grant admin consent to grant the permission access to the application.
8. Configure the Intune policy you want by referring to How to create and assign app protection policies.
Troubleshooting
If the application returns an error page after trying to load a report for more than a few minutes, you might need to
change the timeout setting. By default, Application Proxy supports applications that take up to 85 seconds to
respond to a request. To lengthen this setting to 180 seconds, select the back-end timeout to Long in the App
Proxy settings page for the application. For tips on how to create fast and reliable reports see Power BI Reports
Best Practices.
Next steps
Enable native client applications to interact with proxy applications
View on-premises report server reports and KPIs in the Power BI mobile apps
Configure real-time application access monitoring
with Microsoft Cloud App Security and Azure Active
Directory
6/13/2019 • 2 minutes to read • Edit Online
Configure an on-premises application in Azure Active Directory (Azure AD ) to use Microsoft Cloud App Security
(MCAS ) for real-time monitoring. MCAS uses Conditional Access App Control to monitor and control sessions in
real-time based on Conditional Access policies. You can apply these policies to on-premises applications that use
Application Proxy in Azure Active Directory (Azure AD ).
Here are some examples of the types of policies you can create with MCAS:
Block or protect the download of sensitive documents on unmanaged devices.
Monitor when high-risk users sign on to applications, and then log their actions from within the session. With
this information, you can analyze user behavior to determine how to apply session policies.
Use client certificates or device compliance to block access to specific applications from unmanaged devices.
Restrict user sessions from non-corporate networks. You can give restricted access to users accessing an
application from outside your corporate network. For example, this restricted access can block the user from
downloading sensitive documents.
For more information, see Protect apps with Microsoft Cloud App Security Conditional Access App Control.
Requirements
License:
EMS E5 license, or
Azure Active Directory Premium P1 and MCAS Standalone.
On-premises application:
The on-premises application must use Kerberos Constrained Delegation (KCD )
Configure Application Proxy:
Configure Azure AD to use Application Proxy, including preparing your environment and installing the
Application Proxy connector. For a tutorial, see Add an on-premises applications for remote access through
Application Proxy in Azure AD.
Remote Desktop Service and Azure AD Application Proxy work together to improve the productivity of workers
who are away from the corporate network.
The intended audience for this article is:
Current Application Proxy customers who want to offer more applications to their end users by publishing on-
premises applications through Remote Desktop Services.
Current Remote Desktop Services customers who want to reduce the attack surface of their deployment by
using Azure AD Application Proxy. This scenario gives a limited set of two-step verification and Conditional
Access controls to RDS.
In an RDS deployment, the RD Web role and the RD Gateway role run on Internet-facing machines. These
endpoints are exposed for the following reasons:
RD Web provides the user a public endpoint to sign in and view the various on-premises applications and
desktops they can access. Upon selecting a resource, an RDP connection is created using the native app on the
OS.
RD Gateway comes into the picture once a user launches the RDP connection. The RD Gateway handles
encrypted RDP traffic coming over the internet and translates it to the on-premises server that the user is
connecting to. In this scenario, the traffic the RD Gateway is receiving comes from the Azure AD Application
Proxy.
TIP
If you haven't deployed RDS before, or want more information before you begin, learn how to seamlessly deploy RDS with
Azure Resource Manager and Azure Marketplace.
Requirements
Use a client other than the Remote Desktop web client, since the web client does not support Application
Proxy.
Both the RD Web and RD Gateway endpoints must be located on the same machine, and with a common
root. RD Web and RD Gateway are published as a single application with Application Proxy so that you can
have a single sign-on experience between the two applications.
You should already have deployed RDS, and enabled Application Proxy.
This scenario assumes that your end users go through Internet Explorer on Windows 7 or Windows 10
desktops that connect through the RD Web page. If you need to support other operating systems, see
Support for other client configurations.
When publishing RD Web, it is recommended to use the same internal and external FQDN. If the internal
and external FQDNs are different then you should disable Request Header Translation to avoid the client
receiving invalid links.
On Internet Explorer, enable the RDS ActiveX add-on.
For the Azure AD pre-authentication flow, users can only connect to resources published to them in the
RemoteApp and Desktops pane. Users can't connect to a desktop using the Connect to a remote PC
pane.
8. Run this command for each collection. Replace <yourcollectionname> and <proxyfrontendurl> with your
own information. This command enables single sign-on between RD Web and RD Gateway, and optimizes
performance:
Set-RDSessionCollectionConfiguration -CollectionName "<yourcollectionname>" -CustomRdpProperty "pre-
authentication server address:s:<proxyfrontendurl>`nrequire pre-authentication:i:1"
For example:
NOTE
The above command uses a backtick in "`nrequire".
9. To verify the modification of the custom RDP properties as well as view the RDP file contents that will be
downloaded from RDWeb for this collection, run the following command:
Now that you've configured Remote Desktop, Azure AD Application Proxy has taken over as the internet-facing
component of RDS. You can remove the other public internet-facing endpoints on your RD Web and RD Gateway
machines.
The pre-authentication flow offers more security benefits than the passthrough flow. With pre-authentication you
can use Azure AD authentication features like single sign-on, Conditional Access, and two-step verification for
your on-premises resources. You also ensure that only authenticated traffic reaches your network.
To use passthrough authentication, there are just two modifications to the steps listed in this article:
1. In Publish the RD host endpoint step 1, set the Preauthentication method to Passthrough.
2. In Direct RDS traffic to Application Proxy, skip step 8 entirely.
Next steps
Enable remote access to SharePoint with Azure AD Application Proxy
Security considerations for accessing apps remotely by using Azure AD Application Proxy
Enable remote access to SharePoint with Azure AD
Application Proxy
8/28/2019 • 8 minutes to read • Edit Online
This article discusses how to integrate an on-premises SharePoint server with Azure Active Directory (Azure AD )
Application Proxy.
To enable remote access to SharePoint with Azure AD Application Proxy, follow the sections in this article step by
step.
Prerequisites
This article assumes that you already have SharePoint 2013 or newer in your environment. In addition, consider
the following prerequisites:
SharePoint includes native Kerberos support. Therefore, users who are accessing internal sites remotely
through Azure AD Application Proxy can assume to have a single sign-on (SSO ) experience.
This scenario includes configuration changes to your SharePoint server. We recommend using a staging
environment. This way, you can make updates to your staging server first, and then facilitate a testing cycle
before going into production.
We require SSL on the published URL. SSL is also required on the internal URL to ensure that links are
sent/mapped correctly.
NOTE
As a best practice, use custom domains whenever possible. With a custom domain, you can configure the same URL for
both the Internal URL and the External URL. Then, the same link can be used to access the application from either inside or
outside of your network. This configuration optimizes the experience for users and other applications that need to access
your application. Learn more about Working with custom domains in Azure AD Application Proxy.
To ensure that your sites are running under a defined service account, perform the following steps:
1. Open the SharePoint Central Administration site.
2. Go to Security and select Configure service accounts.
3. Select Web Application Pool - SharePoint - 80. The options may be slightly different based on the
name of your web pool, or if the web pool uses SSL by default.
4. If Select an account for this component field is set to Local Service or Network Service, you need to
create an account. If not, you're finished and can move to the next section.
5. Select Register new managed account. After your account is created, you must set Web Application
Pool before you can use the account.
Set a service principal name for the SharePoint service account
Before you configure KCD, you need to:
Identify the domain account running the SharePoint web application that Azure AD Proxy will expose.
Choose an Internal URL that will be configured in both Azure AD Proxy and SharePoint. This Internal URL
must not already be used in the web application, and will never appear in the web browser.
Assuming the internal URL chosen is https://sharepoint, then the SPN is:
HTTP/SharePoint
NOTE
Follow these recommendations for the internal URL:
Use HTTPS
Do not use custom ports
In the DNS, create a Host (A) to point to SharePoint WFE (or load balancer), and not an Alias (CName)
To register this SPN, run the following command from the command prompt as an administrator of the domain:
This command sets the SPN HTTP/SharePoint for the SharePoint application pool account
demo\spAppPoolAccount.
Replace HTTP/SharePoint with the SPN for your internal URL and demo\spAppPoolAccount with the application
pool account in your environment. The Setspn command searches for the SPN before it adds it. In it already
exists, you will see a Duplicate SPN Value error. In this case, consider to remove the existing SPN if it's not set
under the correct application pool account.
You can verify that the SPN was added by running the Setspn command with the -L option. To learn more about
this command, see Setspn.
Ensure that the connector is trusted for delegation to the SPN added to the SharePoint application pool
account
Configure the KCD so that the Azure AD Application Proxy service can delegate user identities to the SharePoint
application pool account. Configure KCD by enabling the Application Proxy connector to retrieve Kerberos tickets
for your users who have been authenticated in Azure AD. Then that server passes the context to the target
application, or SharePoint in this case.
To configure the KCD, repeat the following steps for each connector machine:
1. Log in as a domain administrator to a DC, and then open Active Directory Users and Computers.
2. Find the computer that the connector is running on. In this example, it's the same SharePoint server.
3. Double-click the computer, and then click the Delegation tab.
4. Ensure that the delegation settings are set to Trust this computer for delegation to the specified
services only. Then, select Use any authentication protocol.
5. Click the Add button, click Users or Computers, and locate the SharePoint application pool account, for
example demo\spAppPoolAccount.
6. In the list of SPNs, select the one that you created earlier for the service account.
7. Click OK. Click OK again to save the changes.
Step 2: Configure Azure AD Proxy
Now that you’ve configured KCD, you're ready to configure Azure AD Application Proxy.
1. Publish your SharePoint site with the following settings. For step-by-step instructions, see Publishing
applications using Azure AD Application Proxy.
Internal URL: SharePoint Internal URL that was chosen earlier, such as https://SharePoint/.
Pre-authentication Method: Azure Active Directory
Translate URL in Headers: NO
TIP
SharePoint uses the Host Header value to look up the site. It also generates links based on this value. The net effect
is that any link that SharePoint generates is a published URL that is correctly set to use the external URL. Setting the
value to YES also enables the connector to forward the request to the back-end application. However, setting the
value to NO means that the connector will not send the internal host name. Instead, the connector sends the host
header as the published URL to the back-end application.
2. Once your app is published, configure the single sign-on settings with the following steps:
a. On the application page in the portal, select Single sign-on.
b. For Single Sign-on Mode, select Integrated Windows Authentication.
c. Set Internal Application SPN to the value that you set earlier. For this example, that would be
HTTP/SharePoint.
d. In "Delegated Login Identity", select the most suitable option for your Active Directory forest
configuration. For example if you have a single AD domain in your forest, select On-premises SAM
account name (as shown below ), but if your users are not in the same domain as SharePoint and the
App Proxy Connector servers then select On-premises user principal name (not shown).
3. To finish setting up your application, go to the Users and groups section and assign users to access this
application.
Step 4: Ensure that an HTTPS certificate is configured for the IIS site of
the Extranet zone
SharePoint configuration is now finished, but since the Internal URL of the Extranet zone is https://SharePoint/, a
certificate must be set for this site.
1. Open Windows PowerShell console.
2. Run the following script to generate a self-signed certificate and add it to the computer MY store:
# Replace "SharePoint" with the actual hostname of the Internal URL of your Azure AD proxy application
New-SelfSignedCertificate -DnsName "SharePoint" -CertStoreLocation "cert:\LocalMachine\My"
NOTE
Self-signed certificates are suitable only for test purposes. In production environments, it is strongly recommended
to use certificates issued by a certificate authority instead.
Next steps
Working with custom domains in Azure AD Application Proxy
Understand Azure AD Application Proxy connectors
Access your on-premises applications through
Microsoft Teams
7/11/2019 • 2 minutes to read • Edit Online
Azure Active Directory Application Proxy gives you single sign-on to on-premises applications no matter where
you are. Microsoft Teams streamlines your collaborative efforts in one place. Integrating the two together means
that your users can be productive with their teammates in any situation.
Your users can add cloud apps to their Teams channels using tabs, but what about the SharePoint sites or planning
tool that are hosted on-premises? Application Proxy is the solution. They can add apps published through
Application Proxy to their channels using the same external URLs they always use to access their apps remotely.
And because Application Proxy authenticates through Azure Active Directory, your users get a single sign-on
experience.
Once one member of a team adds the tab, it shows up for everyone in the channel. Any users who have access to
the app get single sign-on access with the credentials they use for Microsoft Teams. Any users who don't have
access to the app can see the tab in Teams, but are blocked until you give them permissions to the on-premises app
and the Azure portal published version of the app.
Next steps
Learn how to publish on-premises SharePoint sites with Application Proxy.
Configure your apps to use custom domains for their external URL.
Azure Active Directory Application Proxy and Tableau
5/16/2019 • 2 minutes to read • Edit Online
Azure Active Directory Application Proxy and Tableau have partnered to ensure you are easily able to use
Application Proxy to provide remote access for your Tableau deployment. This article explains how to configure
this scenario.
Prerequisites
The scenario in this article assumes that you have:
Tableau configured.
An Application Proxy connector installed.
Testing
Your application is now ready to test. Access the external URL you used to publish Tableau, and login as a user
assigned to both applications.
Next steps
For more information about Azure AD Application Proxy, see How to provide secure remote access to on-premises
applications.
Application Proxy and Qlik Sense
5/17/2019 • 2 minutes to read • Edit Online
Azure Active Directory Application Proxy and Qlik Sense have partnered together to ensure you are easily able to
use Application Proxy to provide remote access for your Qlik Sense deployment.
Prerequisites
The remainder of this scenario assumes you done the following:
Configured Qlik Sense.
Installed an Application Proxy connector
Testing
Your application is now ready to test. Access the external URL you used to publish QlikSense in Application #1,
and login as a user assigned to both applications.
Additional references
For more information about publishing Qlik Sense with Application Proxy, refer to following the Qlik Community
Articles:
Azure AD with Integrated Windows Authentication using a Kerberos Constrained Delegation with Qlik Sense
Qlik Sense integration with Azure AD Application Proxy
Next steps
Publish applications with Application Proxy
Working with Application Proxy connectors
Troubleshoot Application Proxy problems and error
messages
9/9/2019 • 10 minutes to read • Edit Online
When troubleshooting Application Proxy issues, we recommend you start with reviewing the troubleshooting
flow, Debug Application Proxy Connector issues, to determine if Application Proxy connectors are configured
correctly. If you're still having trouble connecting to the application, follow the troubleshooting flow in Debug
Application Proxy application issues.
If errors occur in accessing a published application or in publishing applications, check the following options to
see if Microsoft Azure AD Application Proxy is working correctly:
Open the Windows Services console. Verify that the Microsoft AAD Application Proxy Connector
service is enabled and running. You may also want to look at the Application Proxy service properties page,
as shown in the following image:
Open Event Viewer and look for Application Proxy connector events in Applications and Services Logs >
Microsoft > AadApplicationProxy > Connector > Admin.
If needed, more detailed logs are available by turning on the Application Proxy connector session logs.
Connector errors
If registration fails during the Connector wizard installation, there are two ways to view the reason for the
failure. Either look in the event log under Applications and Services
Logs\Microsoft\AadApplicationProxy\Connector\Admin, or run the following Windows PowerShell
command:
Get-EventLog application –source "Microsoft AAD Application Proxy Connector" –EntryType "Error" –Newest 1
Once you find the Connector error from the event log, use this table of common errors to resolve the problem:
Connector registration failed: Make sure you enabled If you closed the registration window without signing in to
Application Proxy in the Azure Management Portal and that Azure AD, run the Connector wizard again and register the
you entered your Active Directory user name and password Connector.
correctly. Error: 'One or more errors occurred.'
If the registration window opens and then immediately
closes without allowing you to log in, you'll probably get this
error. This error occurs when there is a networking error on
your system. Make sure that it's possible to connect from a
browser to a public website and that the ports are open as
specified in Application Proxy prerequisites.
Clear error is presented in the registration window. Cannot If you see this error and then the window closes, you
proceed entered the wrong username or password. Try again.
Connector registration failed: Make sure you enabled You're trying to sign in using a Microsoft Account and not a
Application Proxy in the Azure Management Portal and that domain that is part of the organization ID of the directory
you entered your Active Directory user name and password you're trying to access. Make sure that the admin is part of
correctly. Error: 'AADSTS50059: No tenant-identifying the same domain name as the tenant domain, for example,
information found in either the request or implied by any if the Azure AD domain is contoso.com, the admin should
provided credentials and search by service principal URI has be [email protected].
failed.
Failed to retrieve the current execution policy for running If the Connector installation fails, check to make sure that
PowerShell scripts. PowerShell execution policy isn't disabled.
Connector failed to download the configuration. The Connector’s client certificate, which is used for
authentication, expired. This may also occur if you have the
Connector installed behind a proxy. In this case, the
Connector cannot access the Internet and will not be able to
provide applications to remote users. Renew trust manually
using the Register-AppProxyConnector cmdlet in
Windows PowerShell. If your Connector is behind a proxy, it
is necessary to grant Internet access to the Connector
accounts “network services” and “local system.” This can be
accomplished either by granting them access to the Proxy or
by setting them to bypass the proxy.
Connector registration failed: Make sure you are an The alias you're trying to log in with isn't an admin on this
Application Administrator of your Active Directory to domain. Your Connector is always installed for the directory
register the Connector. Error: 'The registration request was that owns the user’s domain. Make sure that the admin
denied.' account you're trying to sign in with has atleast application
administrator permissions to the Azure AD tenant.
The Connector was unable to connect to the service due to The connector is unable to connect to the Application Proxy
networking issues. The Connector tried to access the cloud service. This may happen if you have a firewall rule
following URL. blocking the connection. Make sure that you have allowed
access to the correct ports and URLS listed in Application
Proxy prerequisites.
Kerberos errors
This table covers the more common errors that come from Kerberos setup and configuration, and includes
suggestions for resolution.
Failed to retrieve the current execution policy for running If the Connector installation fails, check to make sure that
PowerShell scripts. PowerShell execution policy is not disabled.
12008 - Azure AD exceeded the maximum number of This error may indicate incorrect configuration between
permitted Kerberos authentication attempts to the backend Azure AD and the backend application server, or a problem
server. in time and date configuration on both machines. The
backend server declined the Kerberos ticket created by
Azure AD. Verify that Azure AD and the backend application
server are configured correctly. Make sure that the time and
date configuration on the Azure AD and the backend
application server are synchronized.
13016 - Azure AD cannot retrieve a Kerberos ticket on There is a problem with the STS configuration. Fix the UPN
behalf of the user because there is no UPN in the edge claim configuration in the STS.
token or in the access cookie.
ERROR RECOMMENDED STEPS
13019 - Azure AD cannot retrieve a Kerberos ticket on This event may indicate incorrect configuration between
behalf of the user because of the following general API error. Azure AD and the domain controller server, or a problem in
time and date configuration on both machines. The domain
controller declined the Kerberos ticket created by Azure AD.
Verify that Azure AD and the backend application server are
configured correctly, especially the SPN configuration. Make
sure the Azure AD is domain joined to the same domain as
the domain controller to ensure that the domain controller
establishes trust with Azure AD. Make sure that the time
and date configuration on the Azure AD and the domain
controller are synchronized.
13020 - Azure AD cannot retrieve a Kerberos ticket on This event may indicate incorrect configuration between
behalf of the user because the backend server SPN is not Azure AD and the domain controller server, or a problem in
defined. time and date configuration on both machines. The domain
controller declined the Kerberos ticket created by Azure AD.
Verify that Azure AD and the backend application server are
configured correctly, especially the SPN configuration. Make
sure the Azure AD is domain joined to the same domain as
the domain controller to ensure that the domain controller
establishes trust with Azure AD. Make sure that the time
and date configuration on the Azure AD and the domain
controller are synchronized.
13022 - Azure AD cannot authenticate the user because the This event may indicate incorrect configuration between
backend server responds to Kerberos authentication Azure AD and the backend application server, or a problem
attempts with an HTTP 401 error. in time and date configuration on both machines. The
backend server declined the Kerberos ticket created by
Azure AD. Verify that Azure AD and the backend application
server are configured correctly. Make sure that the time and
date configuration on the Azure AD and the backend
application server are synchronized. For more information,
see Troubleshoot Kerberos Constrained Delegation
Configurations for Application Proxy.
End-user errors
This list covers errors that your end users might encounter when they try to access the app and fail.
The website cannot display the page. Your user may get this error when trying to access the app
you published if the application is an IWA application. The
defined SPN for this application may be incorrect. For IWA
apps, make sure that the SPN configured for this application
is correct.
ERROR RECOMMENDED STEPS
The website cannot display the page. Your user may get this error when trying to access the app
you published if the application is an OWA application. This
could be caused by one of the following:
The defined SPN for this application is incorrect. Make
sure that the SPN configured for this application is correct.
The user who tried to access the application is using a
Microsoft account rather than the proper corporate account
to sign in, or the user is a guest user. Make sure the user
signs in using their corporate account that matches the
domain of the published application. Microsoft Account
users and guest cannot access IWA applications.
The user who tried to access the application is not
properly defined for this application on the on premises side.
Make sure that this user has the proper permissions as
defined for this backend application on the on premises
machine.
This corporate app can’t be accessed. You are not Your user may get this error when trying to access the app
authorized to access this application. Authorization failed. you published if they use Microsoft accounts instead of their
Make sure to assign the user with access to this application. corporate account to sign in. Guest users may also get this
error. Microsoft Account users and guests cannot access
IWA applications. Make sure the user signs in using their
corporate account that matches the domain of the
published application.
You may not have assigned the user for this application. Go
to the Application tab, and under Users and Groups,
assign this user or user group to this application.
This corporate app can’t be accessed right now. Please try Your user may get this error when trying to access the app
again later…The connector timed out. you published if they are not properly defined for this
application on the on-premises side. Make sure that your
users have the proper permissions as defined for this
backend application on the on premises machine.
This corporate app can’t be accessed. You are not Your user may get this error when trying to access the app
authorized to access this application. Authorization failed. you published if they weren't explicitly assigned with a
Make sure that the user has a license for Azure Active Premium license by the subscriber’s administrator. Go to the
Directory Premium. subscriber’s Active Directory Licenses tab and make sure
that this user or user group is assigned a Premium license.
A server with the specified host name could not be found. Your user may get this error when trying to access the app
you published if the application's custom domain is not
configured correctly. Make sure you've uploaded a certificate
for the domain and configured the DNS record correctly by
following the steps in Working with custom domains in
Azure AD Application Proxy
See also
Enable Application Proxy for Azure Active Directory
Publish applications with Application Proxy
Enable single sign-on
Enable Conditional Access
Debug Application Proxy connector issues
5/22/2019 • 2 minutes to read • Edit Online
This article helps you troubleshoot issues with Azure Active Directory (Azure AD ) Application Proxy connectors. If
you're using the Application Proxy service for remote access to an on-premises web application, but you're having
trouble connecting to the application, use this flowchart to debug connector issues.
1 Find the connector group assigned to You probably have a connector installed
the app on multiple servers, in which case the
connectors should be assigned to
connector groups. To learn more about
connector groups, see Publish
applications on separate networks and
locations using connector groups.
2 Install the connector and assign a If you don't have a connector installed,
group see Install and register a connector.
If the connector isn't assigned to a
group, see Assign the connector to a
group.
If the application isn't assigned to a
connector group, see Assign the
application to a connector group.
3 Run a port test on the connector server On the connector server, run a port
test by using telnet or other port
testing tool to check if ports 443 and
80 are open.
4 Configure the domains and ports Make sure that your domains and ports
are configured correctly For the
connector to work properly, there are
certain ports that must be open and
URLs that your server must be able to
access.
5 Check if a back-end proxy is in use Check to see if the connectors are using
back-end proxy servers or bypassing
them. For details, see Troubleshoot
connector proxy problems and service
connectivity issues.
6 Update the connector and updater to If a back-end proxy is in use, you'll want
use the back-end proxy to make sure the connector is using the
same proxy. For details about
troubleshooting and configuring
connectors to work with proxy servers,
see Work with existing on-premises
proxy servers.
7 Load the app's internal URL on the On the connector server, load the app's
connector server internal URL.
9 Lengthen the time-out value on the In the Additional Settings for your
back end application, change the Backend
Application Timeout setting to Long.
See Add an on-premises app to Azure
AD.
10 If issues persist, target specific flow Use the Debug Application Proxy
issues, review app and SSO debugging application issues troubleshooting flow.
flows
Next steps
Publish applications on separate networks and locations using connector groups
Work with existing on-premises proxy servers
Troubleshoot Application Proxy and connector errors
How to silently install the Azure AD Application Proxy Connector
Debug Application Proxy application issues
5/22/2019 • 2 minutes to read • Edit Online
This article helps you troubleshoot issues with Azure Active Directory (Azure AD ) Application Proxy applications.
If you're using the Application Proxy service for remote access to an on-premises web application, but you're
having trouble connecting to the application, use this flowchart to debug application issues.
1 Open a browser, access the app, and Try using your credentials to sign in to
enter your credentials the app, and check for any user-related
errors, like This corporate app can't be
accessed.
ACTION DESCRIPTION
2 Verify user assignment to the app Make sure your user account has
permission to access the app from
inside the corporate network, and then
test signing in to the app by following
the steps in Test the application. If sign-
in issues persist, see How to
troubleshoot sign-in errors.
3 Open a browser and try to access the If an error appears immediately, check
app to see that Application Proxy is
configured correctly. For details about
specific error messages, see
Troubleshoot Application Proxy
problems and error messages.
4 Check your custom domain setup or If the page doesn't display at all, make
troubleshoot the error sure your custom domain is configured
correctly by reviewing Working with
custom domains.
If the page doesn't load and an error
message appears, troubleshoot the
error by referring to Troubleshoot
Application Proxy problems and error
messages.
If it takes longer than 20 seconds for an
error message to appear, there could be
connectivity issue. Go to the Debug
Application Proxy connectors
troubleshooting article.
6 Publish all resources, check browser Make sure the publishing path includes
developer tools, and fix links all the necessary images, scripts, and
style sheets for your application. For
details, see Add an on-premises app to
Azure AD.
Use the browser's developer tools (F12
tools in Internet Explorer or Microsoft
Edge) and check for publishing issues as
described in Application page does not
display correctly.
Review options for resolving broken
links in Links on the page don't work.
7 Check for network latency If the page loads slowly, learn about
ways to minimize network latency in
Considerations for reducing latency.
This article helps you troubleshoot issues with Azure Active Directory Application Proxy applications when you
navigate to the page, but something on the page doesn't look correct.
Overview
When you publish an Application Proxy app, only pages under your root are accessible when accessing the
application. If the page isn’t displaying correctly, the root internal URL used for the application may be missing
some page resources. To resolve, make sure you have published all the resources for the page as part of your
application.
You can verify if missing resources is the issue by opening your network tracker (such as Fiddler, or F12 tools in
Internet Explorer/Microsoft Edge), loading the page, and looking for 404 errors. That indicates the pages currently
cannot be found and that you need to publish them.
As an example of this case, assume you have published an expenses application using the internal URL
http://myapps/expenses , but the app uses the stylesheet http://myapps/style.css . In this case, the stylesheet is not
published in your application, so loading the expenses app throw a 404 error while trying to load style.css. In this
example, the problem is resolved by publishing the application with an internal URL http://myapp/ .
Next steps
Publish applications using Azure AD Application Proxy
An Application Proxy application takes too long to
load
5/16/2019 • 2 minutes to read • Edit Online
This article helps you to understand why an Azure AD Application Proxy application may take a long time to load.
It also explains what you can do to resolve this issue.
Overview
Although your applications are working, they can experience a long latency. There might be network topology
tweaks that you can make to improve speed. For an evaluation of different topologies, see the network
considerations document.
Besides network topology, there are currently no further recommendations for performance tuning. As the
Application Proxy service expands it might come to a data center that is physically closer. The closer proximity
might help with latency. For a list of Azure data centers, see the latency test page.
The data centers with the Application Proxy service can be found with the Connector Ports Test Tool.
Next steps
Work with existing on-premises proxy servers
Links on the page don't work for an Application
Proxy application
5/16/2019 • 2 minutes to read • Edit Online
This article helps you troubleshoot why links on your Azure Active Directory Application Proxy application don't
work correctly.
Overview
After publishing an Application Proxy app, the only links that work by default in the application are links to
destinations contained within the published root URL. The links within the applications aren’t working, the internal
URL for the application probably does not include all the destinations of links within the application.
Why does this happen? When clicking a link in an application, Application Proxy tries to resolve the URL as
either an internal URL within the same application, or as an externally available URL. If the link points to an
internal URL that is not within the same application, it does not belong to either of these buckets and result in a
not found error.
Next steps
Work with existing on-premises proxy servers
How to open the firewall ports required for an
Application Proxy application
5/16/2019 • 2 minutes to read • Edit Online
To see a full list of the required ports and the function of each port, see the prerequisites section of the Application
Proxy documentation. note that Application Proxy only uses outbound ports.
You can also check whether you have all the required ports open by opening the Connector Ports Test Tool from
your on premises network. More green checkmarks means greater resiliency.
Next steps
Understand Azure AD Application Proxy connectors
No working connector group found for an
Application Proxy application
5/16/2019 • 2 minutes to read • Edit Online
This article helps to resolve the common issues faced when there is not a connector detected for an Application
Proxy application integrated with Azure Active Directory.
Overview of steps
If there is no working Connector in a Connector Group for your application, there are a few ways to resolve the
problem:
If you have no connectors in the group, you can:
Download a new Connector on the right on premises server, and assign it to this group
Move an active Connector into the group
If you have no active connectors in the group, you can:
Identify the reason your Connector is inactive and resolve
Move an active Connector into the group
To figure out the issue, open the “Application Proxy” menu in your Application, and look at the Connector Group
warning message. If there are no connectors in the group, the warning message specifies the group needs at least
one Connector. If you have no active Connectors, the warning message explains that. It is common to have inactive
Connectors.
For details on each of these options, see the corresponding section below. The instructions assume that you are
starting from the Connector management page. If you are looking at the error message above, you can go to this
page by clicking on the warning message. You can also get to the page by going to Azure Active Directory,
clicking on Enterprise Applications, then Application Proxy.
Download a new Connector
To download a new Connector, use the “Download Connector” button at the top of the page.
Install the connector on a machine with direct line of sight to the backend application. Typically, the connector is
installed on the same server as the application. After downloading, the Connector should appear in this menu. click
the Connector, and use the “Connector Group” drop-down to make sure it belongs to the right group. Save the
change.
Move an Active Connector
If you have an active Connector that should belong to the group and has line of sight to the target backend
application, you can move the Connector into the assigned group. To do so, click the Connector. In the “Connector
Group” field, use the drop-down to select the correct group, and click Save.
Next steps
Understand Azure AD Application Proxy connectors
How to configure an Application Proxy application
7/11/2019 • 2 minutes to read • Edit Online
This article helps you to understand how to configure an Application Proxy application within Azure AD to expose
your on-premises applications to the cloud.
Recommended documents
To learn about the initial configurations and creation of an Application Proxy application through the Admin Portal,
follow the Publish applications using Azure AD Application Proxy.
For details on configuring Connectors, see Enable Application Proxy in the Azure portal.
For information on uploading certificates and using custom domains, see Working with custom domains in Azure
AD Application Proxy.
Next steps
Publish applications using Azure AD Application Proxy
How to configure single sign-on to an Application
Proxy application
5/16/2019 • 2 minutes to read • Edit Online
Single sign-on (SSO ) allows your users to access an application without authenticating multiple times. It allows the
single authentication to occur in the cloud, against Azure Active Directory, and allows the service or Connector to
impersonate the user to complete any additional authentication challenges from the application.
Next steps
Password vaulting for single sign-on with Application Proxy
Kerberos Constrained Delegation for single sign-on with Application Proxy
Header-based authentication for single sign-on with Application Proxy
SAML for single sign-on with Application Proxy.
Problem creating an Application Proxy application
5/16/2019 • 2 minutes to read • Edit Online
Below are some of the common issues people face when creating a new application proxy application.
Recommended documents
To learn more about creating an Application Proxy application through the Admin Portal, see Publish applications
using Azure AD Application Proxy.
If you are following the steps in that document and are getting an error creating the application, see the error
details for information and suggestions for how to fix the application. Most error messages include a suggested fix.
Next steps
Enable Application Proxy in the Azure portal
Troubleshoot Kerberos constrained delegation
configurations for Application Proxy
7/22/2019 • 10 minutes to read • Edit Online
The methods available for achieving SSO to published applications can vary from one application to another. One
option that Azure Active Directory (Azure AD ) Application Proxy offers by default is Kerberos constrained
delegation (KCD ). You can configure a connector, for your users, to run constrained Kerberos authentication to
back-end applications.
The procedure for enabling KCD is straightforward. It requires no more than a general understanding of the
various components and authentication flow that support SSO. But sometimes, KCD SSO doesn’t function as
expected. You need good sources of information to troubleshoot these scenarios.
This article provides a single point of reference that helps troubleshoot and self-remediate some of the most
common issues. It also covers diagnosis of more complex implementation problems.
This article makes the following assumptions:
Deployment of Azure AD Application Proxy per Get started with Application Proxy and general access to non-
KCD applications work as expected.
The published target application is based on Internet Information Services (IIS ) and the Microsoft
implementation of Kerberos.
The server and application hosts reside in a single Azure Active Directory domain. For detailed information on
cross-domain and forest scenarios, see the KCD white paper.
The subject application is published in an Azure tenant with pre-authentication enabled. Users are expected to
authenticate to Azure via forms-based authentication. Rich client authentication scenarios aren't covered by
this article. They might be added at some point in the future.
Prerequisites
Azure AD Application Proxy can be deployed into many types of infrastructures or environments. The
architectures vary from organization to organization. The most common causes of KCD -related issues aren't the
environments. Simple misconfigurations or general mistakes cause most issues.
For this reason, it's best to make sure you've met all the prerequisites in Using KCD SSO with the Application
Proxy before you start troubleshooting. Note the section on configuring Kerberos constrained delegation on
2012R2. This process employs a different approach to configuring KCD on previous versions of Windows. Also,
be mindful of these considerations:
It's not uncommon for a domain member server to open a secure channel dialog with a specific domain
controller (DC ). Then the server might move to another dialog at any given time. So connector hosts aren't
restricted to communication with only specific local site DCs.
Cross-domain scenarios rely on referrals that direct a connector host to DCs that might be outside of the local
network perimeter. In these cases, it's equally important to also send traffic onward to DCs that represent other
respective domains. If not, delegation fails.
Where possible, avoid placing any active IPS or IDS devices between connector hosts and DCs. These devices
are sometimes too intrusive and interfere with core RPC traffic.
Test delegation in simple scenarios. The more variables you introduce, the more you might have to contend with.
To save time, limit your testing to a single connector. Add additional connectors after the issue has been resolved.
Some environmental factors might also contribute to an issue. To avoid these factors, minimize architecture as
much as possible during testing. For example, misconfigured internal firewall ACLs are common. If possible, send
all traffic from a connector straight through to the DCs and back-end application.
The best place to position connectors is as close as possible to their targets. A firewall that sits inline when testing
adds unnecessary complexity and can prolong your investigations.
What shows a KCD problem? There are several common indications that KCD SSO is failing. The first signs of an
issue appear in the browser.
Both of these images show the same symptom: SSO failure. User access to the application is denied.
Troubleshooting
How you troubleshoot depends on the issue and the symptoms you observe. Before you go any farther, explore
the following articles. They provide useful troubleshooting information:
Troubleshoot Application Proxy problems and error messages
Kerberos errors and symptoms
Working with SSO when on-premises and cloud identities aren't identical
If you got to this point, then your main issue exists. To start, separate the flow into the following three stages that
you can troubleshoot.
Client pre -authentication
The external user authenticating to Azure via a browser. The ability to pre-authenticate to Azure is necessary for
KCD SSO to function. Test and address this ability if there are any issues. The pre-authentication stage isn't related
to KCD or the published application. It's easy to correct any discrepancies by sanity checking that the subject
account exists in Azure. Also check that it's not disabled or blocked. The error response in the browser is
descriptive enough to explain the cause. If you're uncertain, check other Microsoft troubleshooting articles to
verify.
Delegation service
The Azure Proxy connector that gets a Kerberos service ticket for users from a Kerberos Key Distribution Center
(KCD ).
The external communications between the client and the Azure front end have no bearing on KCD. These
communications only make sure that KCD works. The Azure Proxy service is provided a valid user ID that is used
to get a Kerberos ticket. Without this ID, KCD isn't possible and fails.
As mentioned previously, the browser error messages provides some good clues about why things fail. Make sure
to note down the activity ID and timestamp in the response. This information helps you correlate the behavior to
actual events in the Azure Proxy event log.
The corresponding entries seen in the event log show as events 13019 or 12027. Find the connector event logs in
Applications and Services Logs > Microsoft > AadApplicationProxy > Connector > Admin.
1. Use an A record in your internal DNS for the application’s address, not a CName.
2. Reconfirm that the connector host has been granted the right to delegate to the designated target account’s
SPN. Reconfirm that Use any authentication protocol is selected. For more information, see the SSO
configuration article.
3. Verify that there's only one instance of the SPN in existence in Azure AD. Issue setspn -x from a command
prompt on any domain member host.
4. Check that a domain policy is enforced that limits the maximum size of issued Kerberos tokens. This policy
stops the connector from getting a token if it's found to be excessive.
A network trace that captures the exchanges between the connector host and a domain KDC is the next best step
to get more low -level detail on the issues. For more information, see the deep dive Troubleshoot paper.
If ticketing looks good, you see an event in the logs stating that authentication failed because the application
returned a 401. This event indicates that the target application rejected your ticket. Go to the next stage.
Target application
The consumer of the Kerberos ticket provided by the connector. At this stage, expect the connector to have sent a
Kerberos service ticket to the back end. This ticket is a header in the first application request.
1. By using the application’s internal URL defined in the portal, validate that the application is accessible
directly from the browser on the connector host. Then you can sign in successfully. Details can be found on
the connector Troubleshoot page.
2. Still on the connector host, confirm that the authentication between the browser and the application uses
Kerberos. Take one of the following actions:
3. Run DevTools (F12) in Internet Explorer, or use Fiddler from the connector host. Go to the application by
using the internal URL. Inspect the offered WWW authorization headers returned in the response from the
application to make sure that either negotiate or Kerberos is present.
The next Kerberos blob that is returned in the response from the browser to the application starts
with YII. These letters tell you that Kerberos is running. Microsoft NT LAN Manager (NTLM ), on the
other hand, always starts with TlRMTVNTUAAB, which reads NTLM Security Support Provider
(NTLMSSP ) when decoded from Base64. If you see TlRMTVNTUAAB at the start of the blob,
Kerberos is not available. If you don’t see TlRMTVNTUAAB, Kerberos is likely available.
NOTE
If you use Fiddler, this method requires that you temporarily disable extended protection on the application’s
configuration in IIS.
The blob in this figure doesn't start with TIRMTVNTUAAB. So in this example, Kerberos is
available, and the Kerberos blob doesn’t start with YII.
4. Temporarily remove NTLM from the providers list on the IIS site. Access the app directly from Internet
Explorer on the connector host. NTLM is no longer in the providers list. You can access the application by
using Kerberos only. If access fails, there might be a problem with the application’s configuration. Kerberos
authentication isn't functioning.
If Kerberos isn't available, check the application’s authentication settings in IIS. Make sure
Negotiate is listed at the top, with NTLM just beneath it. If you see Not Negotiate, Kerberos or
Negotiate, or PKU2U, continue only if Kerberos is functional.
With Kerberos and NTLM in place, temporarily disable pre-authentication for the application in the
portal. Try to access it from the internet by using the external URL. You're prompted to authenticate.
You're able to do so with the same account used in the previous step. If not, there's a problem with
the back-end application, not KCD.
Re-enable pre-authentication in the portal. Authenticate through Azure by attempting to connect to
the application via its external URL. If SSO fails, you see a forbidden error message in the browser
and event 13022 in the log:
Microsoft AAD Application Proxy Connector cannot authenticate the user because the backend
server responds to Kerberos authentication attempts with an HTTP 401 error.
Check the IIS application. Make sure that the configured application pool and the SPN are
configured to use the same account in Azure AD. Navigate in IIS as shown in the following
illustration:
After you know the identity, make sure this account is configured with the SPN in question. An
example is setspn –q http/spn.wacketywack.com . Enter the following text in a command prompt:
Check the SPN defined against the application’s settings in the portal. Make sure that the same SPN
configured against the target Azure AD account is used by the application’s app pool.
Go into IIS and select the Configuration Editor option for the application. Navigate to
system.webServer/security/authentication/windowsAuthentication. Make sure the value
UseAppPoolCredentials is True.
Change this value to True. Remove all cached Kerberos tickets from the back-end server by running
the following command:
Get-WmiObject Win32_LogonSession | Where-Object {$_.AuthenticationPackage -ne 'NTLM'} | ForEach-
Object {klist.exe purge -li ([Convert]::ToString($_.LogonId, 16))}
For more information, see Purge the Kerberos client ticket cache for all sessions.
If you leave Kernel mode enabled, it improves the performance of Kerberos operations. But it also causes the
ticket for the requested service to be decrypted by using the machine account. This account is also called the Local
system. Set this value to True to break KCD when the application is hosted across more than one server in a farm.
As an additional check, disable Extended protection too. In some scenarios, Extended protection broke
KCD when it was enabled in specific configurations. In those cases, an application was published as a
subfolder of the default website. This application is configured for anonymous authentication only. All the
dialogs are grayed out, which suggests child objects wouldn't inherit any active settings. We recommend
that you test, but don’t forget to restore this value to enabled, where possible.
This additional check puts you on track to use your published application. You can spin up additional
connectors that are also configured to delegate. For more information, read the more in-depth technical
walk-through, Troubleshooting the Azure AD Application Proxy.
If you still can't make progress, Microsoft support can assist you. Create a support ticket directly within the portal.
An engineer will contact you.
Other scenarios
Azure Application Proxy requests a Kerberos ticket before sending its request to an application. Some third-
party applications don't like this method of authenticating. These applications expect the more conventional
negotiations to take place. The first request is anonymous, which allows the application to respond with the
authentication types that it supports through a 401.
Multi-hop authentication is commonly used in scenarios where an application is tiered, with a back end and
front end, where both require authentication, such as SQL Server Reporting Services. To configure the multi-
hop scenario, see the support article Kerberos Constrained Delegation May Require Protocol Transition in
Multi-hop Scenarios.
Next steps
Configure KCD on a managed domain.
How to configure an Application Proxy application to
use PingAccess
5/16/2019 • 2 minutes to read • Edit Online
Our collaboration with PingAccess now allows you to extend the benefits of Application Proxy to applications
using header-based authentication. If your applications do not use headers, see our Single Sign-On
documentation for details on other options.
This article helps you troubleshoot common issues for the "This corporate app can't be accessed" error on an
Azure AD Application Proxy application.
Overview
When you see this error, find the status code on the error page. That code is likely one of the following status
codes:
Gateway Timeout: The Application Proxy service is unable to reach the connector. This error typically
indicates a problem with the connector assignment, connector itself, or the networking rules around the
connector.
Bad Gateway: The connector is unable to reach the backend application. This error could indicate a
misconfiguration of the application.
Forbidden: The user is not authorized to access the application. This error can happen either when the user is
not assigned to the application in Azure Active Directory, or if on the backend the user does not have
permission to access the application.
To find the code, look at the text at the bottom left of the error message for the “Status Code” field. Also look for
any additional tips at the bottom of the page.
For details on how to troubleshoot the root cause of these errors and more details on suggested fixes, see the
corresponding section below.
Forbidden errors
If you see a forbidden error, the user has not been assigned to the application. This error could be either in Azure
Active Directory or on the backend application.
To learn how to assign users to the application in Azure, see the configuration documentation.
If you confirm the user is assigned to the application in Azure, check the user configuration in the backend
application. If you are using Kerberos Constrained Delegation/Integrated Windows Authentication, see the KCD
Troubleshoot page for guidelines.
Additional Resolutions
If the above didn’t fix the problem, there are a few different possible causes. To identify the issue:
If your application is configured to use Integrated Windows Authentication (IWA), test the application without
single sign-on. If not, move to the next paragraph. To check the application without single sign-on, open your
application through Enterprise Applications, and go to the Single Sign-On menu. Change the drop-down from
“Integrated Windows Authentication” to “Azure AD single sign-on disabled”.
Now open a browser and try to access the application again. You should be prompted for authentication and get
into the application. If you are able to authenticate, the problem is with the Kerberos Constrained Delegation
(KCD ) configuration that enables the single sign-on. For more information, see the KCD Troubleshoot page.
If you continue to see the error, go to the machine where the Connector is installed, open a browser and attempt to
reach the internal URL used for the application. The Connector acts like another client from the same machine. If
you can’t reach the application, investigate why that machine is unable to reach the application, or use a connector
on a server that is able to access the application.
If you can reach the application from that machine, to look for issues or errors with the Connector itself. You can
see some common errors in the Troubleshoot document. You can also look directly at the Connector logs to
identify any errors. Many of our error messages be able to share more specific recommendations for fixes. To learn
how to view the logs, see our connectors documentation.
Next steps
Understand Azure AD Application Proxy connectors
Problem installing the Application Proxy Agent
Connector
5/16/2019 • 2 minutes to read • Edit Online
Microsoft AAD Application Proxy Connector is an internal domain component that uses outbound connections to
establish the connectivity from the cloud available endpoint to the internal domain.
NOTE
The connector tries to create a SHA512 cert that is supported by TLS1.2. If the machine or the backend firewall and proxy
does not support TLS1.2, the installation fail.
Next steps
Understand Azure AD Application Proxy connectors
Problems signing in to an on-premises application
using the Azure AD application proxy
7/22/2019 • 2 minutes to read • Edit Online
If you are having problems signing in an on-premises application, you can try following the steps below to
resolving your problem.
Cross-origin resource sharing (CORS ) can sometimes present challenges for the apps and APIs you publish
through the Azure Active Directory Application Proxy. This article discusses Azure AD Application Proxy CORS
issues and solutions.
Browser security usually prevents a web page from making AJAX requests to another domain. This restriction is
called the same-origin policy, and prevents a malicious site from reading sensitive data from another site. However,
sometimes you might want to let other sites call your web API. CORS is a W3C standard that lets a server relax the
same-origin policy and allow some cross-origin requests while rejecting others.
The CORSWebClient app works when you host it on-premises, but either fails to load or errors out when published
through Azure AD Application Proxy. If you published the CORSWebClient and CORSWebService apps separately
as different apps through Application Proxy, the two apps are hosted at different domains. An AJAX request from
CORSWebClient to CORSWebService is a cross-origin request, and it fails.
Solutions for Application Proxy CORS issues
You can resolve the preceding CORS issue in any one of several ways.
Option 1: Set up a custom domain
Use an Azure AD Application Proxy custom domain to publish from the same origin, without having to make any
changes to app origins, code, or headers.
Option 2: Publish the parent directory
Publish the parent directory of both apps. This solution works especially well if you have only two apps on the web
server. Instead of publishing each app separately, you can publish the common parent directory, which results in
the same origin.
The following examples show the portal Azure AD Application Proxy page for the CORSWebClient app. When the
Internal URL is set to contoso.com/CORSWebClient, the app can't make successful requests to the
contoso.com/CORSWebService directory, because they're cross-origin.
Instead, set the Internal URL to publish the parent directory, which includes both the CORSWebClient and
CORSWebService directories:
The resulting app URLs effectively resolve the CORS issue:
https://corswebclient-contoso.msappproxy.net/CORSWebService
https://corswebclient-contoso.msappproxy.net/CORSWebClient
Option 3: Update HTTP headers
Add a custom HTTP response header on the web service to match the origin request. For websites running in
Internet Information Services (IIS ), use IIS Manager to modify the header:
This modification doesn't require any code changes. You can verify it in the Fiddler traces:
Post the Header Addition
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/plain; charset=utf-8
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/8.5 Microsoft-HTTPAPI/2.0
Access-Control-Allow-Origin: https://corswebclient-contoso.msappproxy.net
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 17
Option 4: Modify the app
You can change your app to support CORS by adding the Access-Control-Allow -Origin header, with appropriate
values. The way to add the header depends on the app's code language. Changing the code is the least
recommended option, because it requires the most effort.
Option 5: Extend the lifetime of the access token
Some CORS issues can't be resolved, such as when your app redirects to login.microsoftonline.com to authenticate,
and the access token expires. The CORS call then fails. A workaround for this scenario is to extend the lifetime of
the access token, to prevent it from expiring during a user’s session. For more information about how to do this,
see Configurable token lifetimes in Azure AD.
See also
Tutorial: Add an on-premises application for remote access through Application Proxy in Azure Active Directory
Plan an Azure AD Application Proxy deployment
Remote access to on-premises applications through Azure Active Directory Application Proxy
Writing Expressions for Attribute Mappings in Azure
Active Directory
8/28/2019 • 10 minutes to read • Edit Online
When you configure provisioning to a SaaS application, one of the types of attribute mappings that you can
specify is an expression mapping. For these, you must write a script-like expression that allows you to transform
your users’ data into formats that are more acceptable for the SaaS application.
Syntax Overview
The syntax for Expressions for Attribute Mappings is reminiscent of Visual Basic for Applications (VBA) functions.
The entire expression must be defined in terms of functions, which consist of a name followed by
arguments in parentheses:
FunctionName( <<argument 1>> , <<argument N>> )
You may nest functions within each other. For example:
FunctionOne(FunctionTwo ( <<argument1>> ))
You can pass three different types of arguments into functions:
1. Attributes, which must be enclosed in square brackets. For example: [attributeName]
2. String constants, which must be enclosed in double quotes. For example: "United States"
3. Other Functions. For example: FunctionOne( <<argument1>> , FunctionTwo( <<argument2>> ))
For string constants, if you need a backslash ( \ ) or quotation mark ( " ) in the string, it must be escaped
with the backslash ( \ ) symbol. For example: "Company name: \"Contoso\""
List of Functions
Append FormatDateTime Join Mid NormalizeDiacritics Not Replace SelectUniqueValue
SingleAppRoleAssignment Split StripSpaces Switch ToLower ToUpper
Append
Function:
Append(source, suffix)
Description:
Takes a source string value and appends the suffix to the end of it.
Parameters:
Join
Function:
Join(separator, source1, source2, …)
Description:
Join() is similar to Append(), except that it can combine multiple source string values into a single string, and each
value will be separated by a separator string.
If one of the source values is a multi-value attribute, then every value in that attribute will be joined together,
separated by the separator value.
Parameters:
Mid
Function:
Mid(source, start, length)
Description:
Returns a substring of the source value. A substring is a string that contains only some of the characters from the
source string.
Parameters:
NormalizeDiacritics
Function:
NormalizeDiacritics(source)
Description:
Requires one string argument. Returns the string, but with any diacritical characters replaced with equivalent non-
diacritical characters. Typically used to convert first names and last names containing diacritical characters (accent
marks) into legal values that can be used in various user identifiers such as user principal names, SAM account
names, and email addresses.
Parameters:
Not
Function:
Not(source)
Description:
Flips the boolean value of the source. If source value is "True", returns "False". Otherwise, returns "True".
Parameters:
Replace
Function:
Replace(source, oldValue, regexPattern, regexGroupName, replacementValue, replacementAttributeName,
template)
Description:
Replaces values within a string. It works differently depending on the parameters provided:
When oldValue and replacementValue are provided:
Replaces all occurrences of oldValue in the source with replacementValue
When oldValue and template are provided:
Replaces all occurrences of the oldValue in the template with the source value
When regexPattern and replacementValue are provided:
The function applies the regexPattern to the source string and you can use the regex group names to
construct the string for replacementValue
When regexPattern, regexGroupName, replacementValue are provided:
The function applies the regexPattern to the source string and replaces all values matching
regexGroupName with replacementValue
When regexPattern, regexGroupName, replacementAttributeName are provided:
If source has no value, source is returned
If source has a value, the function applies the regexPattern to the source string and replaces all values
matching regexGroupName with the value associated with replacementAttributeName
Parameters:
SelectUniqueValue
Function:
SelectUniqueValue(uniqueValueRule1, uniqueValueRule2, uniqueValueRule3, …)
Description:
Requires a minimum of two arguments, which are unique value generation rules defined using expressions. The
function evaluates each rule and then checks the value generated for uniqueness in the target app/directory. The
first unique value found will be the one returned. If all of the values already exist in the target, the entry will get
escrowed and the reason gets logged in the audit logs. There is no upper bound to the number of arguments that
can be provided.
NOTE
1. This is a top-level function, it cannot be nested.
2. This function cannot be applied to attributes that have a matching precedence.
3. This function is only meant to be used for entry creations. When using it with an attribute, set the Apply Mapping
property to Only during object creation.
Parameters:
SingleAppRoleAssignment
Function:
SingleAppRoleAssignment([appRoleAssignments])
Description:
Returns a single appRoleAssignment from the list of all appRoleAssignments assigned to a user for a given
application. This function is required to convert the appRoleAssignments object into a single role name string.
Note that the best practice is to ensure only one appRoleAssignment is assigned to one user at a time, and if
multiple roles are assigned the role string returned may not be predictable.
Parameters:
StripSpaces
Function:
StripSpaces(source)
Description:
Removes all space (" ") characters from the source string.
Parameters:
Switch
Function:
Switch(source, defaultValue, key1, value1, key2, value2, …)
Description:
When source value matches a key, returns value for that key. If source value doesn't match any keys, returns
defaultValue. Key and value parameters must always come in pairs. The function always expects an even
number of parameters.
Parameters:
ToLower
Function:
ToLower(source, culture)
Description:
Takes a source string value and converts it to lower case using the culture rules that are specified. If there is no
culture info specified, then it will use Invariant culture.
Parameters:
ToUpper
Function:
ToUpper(source, culture)
Description:
Takes a source string value and converts it to upper case using the culture rules that are specified. If there is no
culture info specified, then it will use Invariant culture.
Parameters:
Examples
Strip known domain name
You need to strip a known domain name from a user’s email to obtain a user name.
For example, if the domain is "contoso.com", then you could use the following expression:
Expression:
Replace([mail], "@contoso.com", , ,"", ,)
Sample input/output:
INPUT: (userPrincipalName): "[email protected]"
OUTPUT: "[email protected]"
Generate user alias by concatenating parts of first and last name
You need to generate a user alias by taking first 3 letters of user's first name and first 5 letters of user's last name.
Expression:
Append(Mid([givenName], 1, 3), Mid([surname], 1, 5))
Sample input/output:
INPUT (givenName): "John"
INPUT (surname): "Doe"
OUTPUT: "JohDoe"
Remove diacritics from a string
You need to replace characters containing accent marks with equivalent characters that don't contain accent
marks.
Expression:
NormalizeDiacritics([givenName])
Sample input/output:
INPUT (givenName): "Zoë"
OUTPUT: "Zoe"
Split a string into a multi-valued array
You need to take a comma-delimited list of strings, and split them into an array that can be plugged into a multi-
value attribute like Salesforce's PermissionSets attribute. In this example, a list of permission sets has been
populated in extensionAttribute5 in Azure AD.
Expression:
Split([extensionAttribute5], ",")
Sample input/output:
INPUT (extensionAttribute5): "PermissionSetOne, PermisionSetTwo"
OUTPUT: ["PermissionSetOne", "PermissionSetTwo"]
Output date as a string in a certain format
You want to send dates to a SaaS application in a certain format.
For example, you want to format dates for ServiceNow.
Expression:
FormatDateTime([extensionAttribute1], "yyyyMMddHHmmss.fZ", "yyyy-MM-dd")
Sample input/output:
INPUT (extensionAttribute1): "20150123105347.1Z"
OUTPUT: "2015-01-23"
Replace a value based on predefined set of options
You need to define the time zone of the user based on the state code stored in Azure AD.
If the state code doesn't match any of the predefined options, use default value of "Australia/Sydney".
Expression:
Switch([state], "Australia/Sydney", "NSW", "Australia/Sydney","QLD", "Australia/Brisbane", "SA",
"Australia/Adelaide")
Sample input/output:
INPUT (state): "QLD"
OUTPUT: "Australia/Brisbane"
Replace characters using a regular expression
You need to find characters that match a regular expression value and remove them.
Expression:
Replace([mailNickname], , "[a-zA-Z_]*", , "", , )
Sample input/output:
INPUT (mailNickname: "john_doe72"
OUTPUT: "72"
Convert generated userPrincipalName (UPN ) value to lower case
In the example below, the UPN value is generated by concatenating the PreferredFirstName and
PreferredLastName source fields and the ToLower function operates on the generated string to convert all
characters to lower case.
ToLower(Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))),
"contoso.com"))
Sample input/output:
INPUT (PreferredFirstName): "John"
INPUT (PreferredLastName): "Smith"
OUTPUT: "[email protected]"
Generate unique value for userPrincipalName (UPN ) attribute
Based on the user's first name, middle name and last name, you need to generate a value for the UPN attribute
and check for its uniqueness in the target AD directory before assigning the value to the UPN attribute.
Expression:
SelectUniqueValue(
Join("@", NormalizeDiacritics(StripSpaces(Join(".", [PreferredFirstName], [PreferredLastName]))),
"contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 1),
[PreferredLastName]))), "contoso.com"),
Join("@", NormalizeDiacritics(StripSpaces(Join(".", Mid([PreferredFirstName], 1, 2),
[PreferredLastName]))), "contoso.com")
)
Sample input/output:
INPUT (PreferredFirstName): "John"
INPUT (PreferredLastName): "Smith"
OUTPUT: "[email protected]" if UPN value of [email protected] doesn't already exist in the
directory
OUTPUT: "[email protected]" if UPN value of [email protected] already exists in the directory
OUTPUT: "[email protected]" if the above two UPN values already exist in the directory
Related Articles
Automate User Provisioning/Deprovisioning to SaaS Apps
Customizing Attribute Mappings for User Provisioning
Scoping Filters for User Provisioning
Using SCIM to enable automatic provisioning of users and groups from Azure Active Directory to applications
Account Provisioning Notifications
List of Tutorials on How to Integrate SaaS Apps
Azure AD Connect Provisioning Agent: Version
release history
9/10/2019 • 2 minutes to read • Edit Online
This article lists the versions and features of Azure AD Connect Provisioning Agent that have been released. The
Azure AD team regularly updates the Provisioning Agent with new features and functionality. Provisioning Agents
are updated automatically when a new version is released.
We recommend enabling auto update for your agents to ensure that you have the latest features and bug fixes.
Microsoft provides direct support for the latest agent version and one version before.
1.1.67.0
Release status
September 9, 2019: Released for auto update
New features and improvements
Ability to configure additional tracing and logging for debugging provisioning agent issues
Ability to fetch only those AD attributes that are configured in the mapping to improve performance of sync
Fixed issues
Fixed a bug where-in the agent went into an unresponsive state if there were issues with AD connection failures
Fixed a bug that caused issues when binary data was read from Active Directory
Fixed a bug where-in the agent failed to renew trust with the cloud Hybrid Identity Service
1.1.30.0
Release status
Jan 23, 2019: Released for download
New features and improvements
Revamped Provisioning Agent & Connector architecture for better performance, stability and reliability
Simplified Provisioning Agent configuration using UI-driven Installation Wizard
Added support for automatic agent updates
Azure AD Application Proxy: Version release history
7/31/2019 • 2 minutes to read • Edit Online
This article lists the versions and features of Azure Active Directory (Azure AD ) Application Proxy that have been
released. The Azure AD team regularly updates Application Proxy with new features and functionality. Application
Proxy connectors are updated automatically when a new version is released.
We recommend making sure that auto-updates are enabled for your connectors to ensure you have the latest
features and bug fixes. Microsoft provides direct support for the lastest connector version and one version before.
Here is a list of related resources:
RESOURCE DETAILS
How to enable Application Proxy Pre-requisites for enabling Application Proxy and installing
and registering a connector are described in this tutorial.
Understand Azure AD Application Proxy connectors Find out more about connector management and how
connectors auto-upgrade.
1.5.612.0
Release status
September 20, 2018: Released for download
New features and improvements
Added WebSocket support for the QlikSense application. To learn more about how to integrate QlikSense with
Application Proxy, see this walkthrough.
Improved the installation wizard to make it easier to configure an outbound proxy.
Set TLS 1.2 as the default protocol for connectors.
Added a new End-User License Agreement (EULA).
Fixed issues
Fixed a bug that caused some memory leaks in the connector.
Updated the Azure Service Bus version, which includes a bug fix for connector timeout issues.
1.5.402.0
Release status
January 19, 2018: Released for download
Fixed issues
Added support for custom domains that need domain translation in the cookie.
1.5.132.0
Release status
May 25, 2017: Released for download
New features and improvements
Improved control over connectors' outbound connection limits.
1.5.36.0
Release status
April 15, 2017: Released for download
New features and improvements
Simplified onboarding and management with fewer required ports. Application Proxy now requires opening
only two standard outbound ports: 443 and 80. Application Proxy continues to use only outbound connections,
so you still don't need any components in a DMZ. For details, see ourconfiguration documentation.
If supported by your external proxy or firewall, you can now open your network by DNS instead of IP range.
Application Proxy services require connections to *.msappproxy.net and *.servicebus.windows.net only.
Earlier versions
If you're using an Application Proxy connector version earlier than 1.5.36.0, update to the latest version to ensure
you have the latest fully supported features.
Next steps
Learn more about Remote access to on-premises applications through Azure AD Application Proxy.
To start using Application Proxy, see Tutorial: Add an on-premises application for remote access through
Application Proxy.