8 Authenticating and Authorizing Microsoft Azure Active Directory Users for Oracle Databases
An Oracle Database instance can be configured for Microsoft Azure AD users to connect using Azure OAuth2
access tokens.
- Introduction to Authorizing Microsoft Azure AD Users for an Oracle Database
Before you begin authenticating and authorizing Microsoft Azure AD users for an Oracle Database, you should understand the overall process. - Configuring the Oracle Database for Microsoft Azure AD Integration
The Microsoft Azure AD integration with the Oracle Database instance requires the database to be registered with Azure AD so that the database can request the Azure AD public key. - Mapping Oracle Database Schemas and Roles
Azure AD users will be mapped to one database schema and optionally to one or more database roles. - Configuring Azure AD Client Connections to the Oracle Database
You can configure client connections to connect with the Azure AD registered database - Trace Files for Troubleshooting Oracle Database Client Connections with Azure AD
You can use trace files to troubleshoot Oracle Database client connections with Azure AD connections.
Parent topic: Managing User Authentication and Authorization
8.1 Introduction to Authorizing Microsoft Azure AD Users for an Oracle Database
Before you begin authenticating and authorizing Microsoft Azure AD users for an Oracle Database, you should understand the overall process.
- About Authorizing Microsoft Azure AD Users for an Oracle Database
Users for Oracle Database can be centrally managed in a Microsoft Azure Active Directory (Azure AD) service. - Architecture of the Microsoft Azure AD Integration with an Oracle Database
Microsoft Azure Active Directory tokens follow the OAuth 2.0 standard with extensions. Using an Azure AD token to access an Oracle database is similar to using OCI IAM tokens. - Azure AD Users Mapping to an Oracle Database Schema
Microsoft Azure users must be mapped to an Oracle Database schema and have the necessary privileges (through roles) before being able to authenticate to the Oracle Database instance. - Use Cases for Connecting to an Oracle Database Using Azure AD
Oracle Database supports four types of use cases for connecting to an Oracle Database instance using Microsoft Azure Active Directory. - General Process of Integrating Microsoft Azure AD with Oracle Database
Both the Oracle and the Microsoft Azure administrators play roles in configuring the connection between Oracle Database and Microsoft Azure AD.
8.1.1 About Authorizing Microsoft Azure AD Users for an Oracle Database
Users for Oracle Database can be centrally managed in a Microsoft Azure Active Directory (Azure AD) service.
You can perform this integration in the following Oracle Database environments:
- On-premises Oracle Database release 19.16 and later, but not for Oracle Database 21c
- Oracle Database on Database versions 19.17 and later. This feature is not supported on Oracle Database release 21c.
- Oracle Base Database Service
- Oracle Exadata Cloud Service (Oracle ExaCS)
The instructions for configuring Azure AD use the term "Oracle Database" to encompass these environments.
This type of integration enables the Azure AD user to access an Oracle Database instance. Azure AD users and applications can log in with Azure AD Single Sign On (SSO) credentials to get an Azure AD OAuth2
access token to send to the database.
The administrator creates and configures the application registration (app registration) of the Oracle Database instance with Azure AD. The database administrator also creates application (app) roles for the database app registration in Azure AD, and assigns these roles to Azure AD users, groups, and applications. These app roles will be mapped to the database global schemas and global roles. An Azure AD principal that is assigned to an app role will be mapped to either a database global schema or database global role. An Oracle global schema can also be mapped exclusively to an Azure AD user. When the principal is a guest user or service principal, they can only be mapped to the database schema through an Azure app role. An Oracle global role can only be mapped to an Azure app role.
Tools and applications that are updated to support Azure AD tokens can authenticate users directly with Azure AD and pass the database access token to the Oracle Database instance. You can configure existing database tools such as SQL*Plus to use an Azure AD token from a file location. In these cases, Azure AD tokens can be retrieved using tools like Microsoft PowerShell or Azure CLI and put into a file location. An Azure AD OAuth2
database access token is a bearer token with an expiration time. The Oracle Database client driver will ensure that the token is in a valid format and that it has not expired before passing it to the database. The token is scoped for the database. Assigned app roles for the Azure AD principal are included as part of the access token. The directory location for the Azure AD token should only have enough permission for the user to write the token file to the location and the database client to retrieve these files (for example, just read and write by the process user). Because the token allows access to the database, it should be protected within the file system.
Azure AD users can request a token as a client registered with Azure AD app registration by using methods such as the following:
- Passing the Azure AD user name and password through a command line, script, file, or any other supported method
- Entering the Azure AD credentials into an Azure AD authentication screen with or without multi-factor authentication
Oracle Database supports the following Azure AD authentication flows:
- Resource owner password credential (ROPC), which is used in non-graphic user interface environments when a pop-up window cannot be used to authenticate a user.
- Authorization code, which is used when a browser can be used to enter credentials for the user
- Client credentials, which are for applications that connect as themselves (and not the end-user)
- On-Behalf-Of (OBO), where an application requests an access token on behalf of a logged-in user to send to the database
Oracle Database accepts tokens representing the following Azure AD principals:
- Azure AD user, who is registered user in the Azure AD tenancy
- Guest user, who is registered as a guest user in the Azure AD tenancy
- Service, which is the registered application connecting to the database as itself with the client credential flow (connection pool use case)
8.1.2 Architecture of the Microsoft Azure AD Integration with an Oracle Database
Microsoft Azure Active Directory tokens follow the OAuth 2.0 standard with extensions. Using an Azure AD token to access an Oracle database is similar to using OCI IAM tokens.
The application or helper tool is responsible for requesting the access token from Azure AD. The token is passed to the database client through the API or by saving the token file in a directory location. Command-line tools such as Microsoft PowerShell or the Azure command-line interface can be used to retrieve the Azure AD token if the application cannot request the token.
The following diagram is a generalized flow diagram for OAuth 2.0 standard, using the OAuth2
token. See Authentication flow support in MSAL in the Microsoft Azure AD documentation for more details about each supported flow.
Figure 8-1 Azure AD User Authenticating to an Oracle Database with an Azure OAuth2 Token

Description of "Figure 8-1 Azure AD User Authenticating to an Oracle Database with an Azure OAuth2 Token"
- The Azure AD user requests access to the resource, the Oracle Database instance.
- The database client or application requests an authorization code from Azure AD.
- Azure AD authenticates the Azure AD user and returns the authorization code.
- The helper tool or application uses the authorization code with Azure AD to exchange it for the
OAuth2
token. - The database client sends the
OAuth2
access token to the Oracle Database instance with the assigned app roles. - The Oracle Database instance uses the Azure AD public key to verify that the access token was created by Azure AD.
Both the database client and the database server must be registered with the app registrations feature in the Azure Active Directory section of the Azure portal.
8.1.3 Azure AD Users Mapping to an Oracle Database Schema
Microsoft Azure users must be mapped to an Oracle Database schema and have the necessary privileges (through roles) before being able to authenticate to the Oracle Database instance.
In Microsoft Azure, users, groups, and applications can be assigned to the app roles by an Azure AD administrator.
An Azure AD user can be mapped to a database schema (user) either exclusively or through an app role.
- Creating an exclusive mapping between an Azure AD user and an Oracle Database schema. In this type of mapping, the database schema must be created for the Azure AD user with the appropriate database privileges and roles. The schema must also be updated during the life cycle of the Azure AD user and eventually dropped when the user leaves.
- Creating a shared mapping between an Azure AD app role and an Oracle Database schema. This type of mapping, which is more common than exclusive mappings, is for Azure AD users who have been assigned directly to the app role or is a member of an Azure AD group that is assigned to the app role. The app role is mapped to an Oracle Database schema (shared schema mapping). Shared schema mapping allows multiple Azure AD users to share the same Oracle Database schema so a new database schema is not required to be created every time a new user joins the organization. This operational efficiency allows database administrators to focus on database application maintenance, performance, and tuning tasks instead of configuring new users, updating privileges and roles, and removing accounts.
In addition to database roles and privileges being granted directly to the mapped global schema, additional roles and privileges can be granted through mapped global roles. Different Azure AD users mapped to the same shared global schema may need different privileges and roles. Azure app roles can be mapped to Oracle Database global roles. Azure AD users who are assigned to the app role or are a member of an Azure AD group that is assigned to the app role will be granted the Oracle Database global role when they access the database.
The following diagram illustrates the different types of assignments and mappings that are available.
Figure 8-2 Assignments and Mappings Between Azure AD and Oracle Database

Description of "Figure 8-2 Assignments and Mappings Between Azure AD and Oracle Database"
These mappings are as follows:
- An Azure AD user can be mapped directly to an Oracle Database global schema (user).
- An Azure AD user, Azure AD group, or application is assigned to an app role, which is then mapped to either an Oracle Database global schema (user) or a global role.
8.1.4 Use Cases for Connecting to an Oracle Database Using Azure AD
Oracle Database supports four types of use cases for connecting to an Oracle Database instance using Microsoft Azure Active Directory.
- Connection using OAuth 2.0 authorization flow: The client directs the resource owner to an authorization server, which in turn directs the resource owner back to the client with the authorization code. See the Microsoft Azure article Microsoft identity platform and OAuth 2.0 authorization code flow.
- Connection using the resource owner password credentials: The resource owner password credentials (that is, the user name and password) can be used directly to obtain an access token. Azure AD requires an additional client Id and a secret for this flow. (The secret is not required for public client.) See the Microsoft Azure article Microsoft identity platform and OAuth 2.0 Resource Owner Password Credentials.
- Connection using the client credentials: The client acts on its own behalf (the client is also the resource owner) or requests access to protected resources based on an authorization arranged with the authorization server. This flow is used to get the Azure
OAuth2
access token for the service principal. An application can also request an Azure ADOAuth2
access token directly from Azure AD and pass it through a database client API. See the Microsoft Azure article Get Azure AD tokens by using a service principal. - Connection using on-behalf-of (OBO) token: An Azure application requests an OBO token for a logged in user. The OBO token will also be an access token for the database with the Azure AD user identity and assigned app roles for the database. This enables the Azure AD user to log in to the database as the user and not the application. Only an application can request an OBO token for its Azure AD user and pass it to the database client through the API.
8.1.5 General Process of Integrating Microsoft Azure AD with Oracle Database
Both the Oracle and the Microsoft Azure administrators play roles in configuring the connection between Oracle Database and Microsoft Azure AD.
The general process is as follows:
- The Oracle administrator ensures that the Oracle Database environment meets the requirements for the Microsoft Azure AD integration. See Oracle Database Requirements for the Microsoft Azure AD Integration.
- The Oracle administrator registers the database instance with the Microsoft Azure AD tenancy and then enables the connection between the Oracle Database and the Azure AD endpoint.
As part of the registration process, the Oracle administrator or the Azure administrator creates or designates Azure app roles to be used for the mappings between the Oracle database and the Microsoft Azure endpoint.
- The Oracle administrator creates and maps global schemas to either an Azure AD user (exclusive schema mapping) or to an Azure app role (shared schema mapping). The Azure AD user or application must be mapped to one schema.
- Optionally, the Oracle administrator creates and maps global Oracle Database roles to Azure app roles.
- The Azure AD end user who wants to connect with the Oracle Database instance registers the client application as an Azure AD client (similar to how the Oracle database is registered).
The Azure AD client will have a client identification and a client secret, unless the application client is public. If the application client is public, then only the application client identification is necessary.
- The Azure AD end user (who can be a database administrator) connects using an utility such as PowerShell or the Azure command-line interface to retrieve the token and store it in a local file directory. An application can also request an Azure AD
OAuth2
access token directly from Azure AD and pass it through a database client API. Refer to the following Oracle Database client documentation for information about passing Azure ADOAuth2
tokens:- JDBC-thin clients: Oracle Database JDBC Developer’s Guide
- Oracle Call Interface (OCI): Oracle Call Interface Programmer's Guide
- Oracle Data Provider for .NET (ODP): Oracle Data Provider for .NET Developer's Guide for Microsoft WindowsConnecting to Oracle Database
- Once connected to the Oracle Database instance, the Azure AD end user performs tasks as needed.
8.2 Configuring the Oracle Database for Microsoft Azure AD Integration
The Microsoft Azure AD integration with the Oracle Database instance requires the database to be registered with Azure AD so that the database can request the Azure AD public key.
- Oracle Database Requirements for the Microsoft Azure AD Integration
Before you can configure an Oracle Database instance with Microsoft Azure AD, you must ensure that your environment meets special requirements. - Registering the Oracle Database Instance with a Microsoft Azure AD Tenancy
A user with administrator privileges uses Microsoft Azure AD to register the Oracle Database instance with the Microsoft Azure AD tenancy. - Managing App Roles in Microsoft Azure AD
In Azure AD, you can create and manage app roles that will be assigned to Azure AD users and groups and also be mapped to Oracle Database global schemas and roles. - Enabling Azure AD External Authentication for Oracle Database
You can enable a Microsoft Azure AD external authentication with Oracle Database. - Disabling Azure AD External Authentication for Oracle Database
To disable Azure AD External authentication for an Oracle Database instance, you must set parameters with theALTER SYSTEM
statement.
8.2.1 Oracle Database Requirements for the Microsoft Azure AD Integration
Before you can configure an Oracle Database instance with Microsoft Azure AD, you must ensure that your environment meets special requirements.
Note the following:
- The Oracle Database server must be able to request the Azure AD public key. Depending on the enterprise environment, you may need to configure a proxy setting.
- Users and applications that need to request an Azure AD token must also be able to connect to Azure AD. You may need to configure a proxy setting for the connection.
- You must configure Transport Layer Security (TLS) between the Oracle Database client and the Oracle Database server. This TLS connection can be either one-way or mutual.
- You can create the TLS server certificate to be self-signed or be signed by a well known root certificate. The advantage of using a certificate that is signed by a well known root certificate is that the database client can use the system default certificate store to validate the Oracle Database server certificate instead of having to create and maintain a local wallet with the root certificate. Note that this applies to Linux and Windows clients only.
8.2.2 Registering the Oracle Database Instance with a Microsoft Azure AD Tenancy
A user with administrator privileges uses Microsoft Azure AD to register the Oracle Database instance with the Microsoft Azure AD tenancy.
8.2.3 Managing App Roles in Microsoft Azure AD
In Azure AD, you can create and manage app roles that will be assigned to Azure AD users and groups and also be mapped to Oracle Database global schemas and roles.
- Creating a Microsoft Azure AD App Role
Azure AD users, groups, and applications will be assigned to the app roles. - Assigning Users and Groups to the Microsoft Azure AD App Role
Before Microsoft Azure AD users can have access to the Oracle Database instance, they must first be assigned to the app roles that will be mapped to Oracle Database schema users or roles. - Assigning an Application to an App Role
You can assign an Azure AD client application to a app role.
8.2.3.1 Creating a Microsoft Azure AD App Role
Azure AD users, groups, and applications will be assigned to the app roles.
Parent topic: Managing App Roles in Microsoft Azure AD
8.2.3.2 Assigning Users and Groups to the Microsoft Azure AD App Role
Before Microsoft Azure AD users can have access to the Oracle Database instance, they must first be assigned to the app roles that will be mapped to Oracle Database schema users or roles.
- Log in to Azure AD as an administrator who has privileges for assigning Azure AD users and groups to app roles.
- In Enterprise applications, access the Oracle Database application that you registered.
- Use the Directory + subscription filter to locate the Azure Active Directory tenant that contains the Oracle connection.
- Select Azure Active Directory.
- Under Manage, select Enterprise applications, and then select the Oracle Database application name that you registered earlier.
- Under Getting Started, select Assign users and groups.
- Select Add user/group.
- In the Add assignment window, select Users and groups to display a list of users and security groups.
- From this list, select the users and groups that you want to add to the app role, and then click Select.
- In the Add assignment window, select Select a role to display a list of the app roles that you have created.
- Select the app role and then select Select.
- Click Assign.
Parent topic: Managing App Roles in Microsoft Azure AD
8.2.3.3 Assigning an Application to an App Role
You can assign an Azure AD client application to a app role.
Related Topics
Parent topic: Managing App Roles in Microsoft Azure AD
8.2.4 Enabling Azure AD External Authentication for Oracle Database
You can enable a Microsoft Azure AD external authentication with Oracle Database.
See the following platform-specific documentation for more information about enabling Oracle Database for Azure AD external authentication.
8.2.5 Disabling Azure AD External Authentication for Oracle Database
To disable Azure AD External authentication for an Oracle Database instance, you must set parameters with the ALTER SYSTEM
statement.
To disable Azure AD from Oracle Autonomous Database on Shared Exadata Infrastructure, see Using Oracle Autonomous Database on Shared Exadata Infrastructure. The following procedure applies to all other platforms:
8.3 Mapping Oracle Database Schemas and Roles
Azure AD users will be mapped to one database schema and optionally to one or more database roles.
- Exclusively Mapping an Oracle Database Schema to a Microsoft Azure AD User
You can exclusively map an Oracle Database schema to a Microsoft Azure AD user. - Mapping a Shared Oracle Schema to an App Role
In this mapping, an Oracle schema is mapped to an app role. - Mapping an Oracle Database Global Role to an App Role
Oracle Database global roles that are mapped to Azure app roles give Azure users and applications additional privileges and roles above those that they have been granted through their login schemas.
8.3.1 Exclusively Mapping an Oracle Database Schema to a Microsoft Azure AD User
You can exclusively map an Oracle Database schema to a Microsoft Azure AD user.
Parent topic: Mapping Oracle Database Schemas and Roles
8.3.2 Mapping a Shared Oracle Schema to an App Role
In this mapping, an Oracle schema is mapped to an app role.
Parent topic: Mapping Oracle Database Schemas and Roles
8.3.3 Mapping an Oracle Database Global Role to an App Role
Oracle Database global roles that are mapped to Azure app roles give Azure users and applications additional privileges and roles above those that they have been granted through their login schemas.
Parent topic: Mapping Oracle Database Schemas and Roles
8.4 Configuring Azure AD Client Connections to the Oracle Database
You can configure client connections to connect with the Azure AD registered database
- About Configuring Client Connections to Azure ADs
There are numerous ways that you can configure a client to connect with an Oracle Database instance using Azure AD tokens. - Supported Client Drivers for Azure AD Connections
Oracle Database supports several types of client drivers for Azure AD connections. - Operational Flow for SQL*Plus Client Connection in PowerShell to Oracle Database
The connection between the Azure user, Azure AD, and the Oracle Database instance relies on the passing of theOAuth2
token throughout these components. - Registering a Client with Azure AD Application Registration
This type of registration is similar to registering Oracle Database with Azure AD app registration. - Examples of Retrieving Azure AD OAuth2 Tokens
These examples show different ways that you can retrieve Azure ADOAuth2
tokens. - Configuring SQL*Plus for Azure AD Access Tokens
You must configure SQL*Plus to retrieve the Azure AD database access token from a location and use it when the/
slash login is used. - Creating a Network Proxy for the Database to Connect with the Internet
This network proxy will enable the Oracle database to reach the Azure AD endpoint.
8.4.1 About Configuring Client Connections to Azure ADs
There are numerous ways that you can configure a client to connect with an Oracle Database instance using Azure AD tokens.
You should choose the client connection method that works best with your environment. This guide provides examples of connecting SQL*Plus with different methods of getting an Azure AD OAuth2 access token. All Oracle Database release 19c clients can accept a token that is passed as a file. The JDBC-thin, Instant Client, and ODP.net drivers also accept the token through the database client API from an application. Oracle Database tools such as SQL*Plus cannot retrieve the tokens directly, so tools such as PowerShell or Azure CLI must be used to retrieve the Azure AD OAuth2
access token. To retrieve an Azure AD token, the client must be registered through the Azure AD app registration process. Registering the client is similar to registering the Oracle Database server with Azure AD using app registration. Both the database and client must be registered with Azure AD.
The database must be registered so the client can get permission to get an access token for the database. The client must be registered so that Azure AD can recognize a trusted client is asking for an access token.
See the following Microsoft Azure articles for more information about connecting clients to Azure AD:
8.4.2 Supported Client Drivers for Azure AD Connections
Oracle Database supports several types of client drivers for Azure AD connections.
- JDBC-thin: Oracle Database 19.16 (July 2022), Oracle Database 21.8 (October 2022)
- OCI (C driver): Oracle Database 19.16 (July 2022)
- Oracle Instant Client based on OCI
- Oracle Data Provider (core): Oracle Database 19.16, Oracle Database 21.7
- Oracle Data Provider (unmanaged): based on OCI
- Oracle Data Provider (managed): Oracle Database 19.16, Oracle Database 21.7
- All other drivers built on OCI adopts the OCI compatibility
8.4.3 Operational Flow for SQL*Plus Client Connection in PowerShell to Oracle Database
The connection between the Azure user, Azure AD, and the Oracle Database instance relies on the passing of the OAuth2
token throughout these components.
This example shows the use of the Resource Owner Password Credential (ROPC) flow with a public client. See the Microsoft Azure article Microsoft identity platform and OAuth 2.0 Resource Owner Password Credentials for detailed information about ROPC.
Figure 8-3 ROPC Operational Flow with a Public Client

Description of "Figure 8-3 ROPC Operational Flow with a Public Client"
- The Azure user requests an Azure AD access token for the database in PowerShell and the returned token is written into a file called
token
at a file location. - The Azure user connects to the database using
/
slash login. Either thesqlnet.ora
ortnsnames.ora
connection string tells the instant client that an Azure ADOAuth2
token is needed and to retrieve it from a specified file location. The access token is sent to the database. - The database verifies that the access token came from Azure AD (using the Azure AD public key) and then checks the token for additional claims.
- The database finds the schema mapping (exclusive or shared) and creates the session. The database will also grant any global roles that the Azure user is also assigned to through an app role.
8.4.4 Registering a Client with Azure AD Application Registration
This type of registration is similar to registering Oracle Database with Azure AD app registration.
- Confidential and Public Client Registration
You can register the database client with Azure as either confidential or public depending on your use case. - Registering a Database Client App with Azure AD
Creating the client app registration is similar to creating the Oracle Database instance with the Microsoft Azure AD tenancy.
8.4.4.1 Confidential and Public Client Registration
You can register the database client with Azure as either confidential or public depending on your use case.
See the Microsoft Azure article Authentication flows and application scenarios for detailed information about authentication flows and application scenarios.
Registering a confidential client app requires that the client have a secret, in addition to the client ID. The confidential client app uses both the client ID and the secret when it makes Azure AD requests. However, in an enterprise, it is not practical for every SQL*Plus and SQLcl user to create a separate app registration with its own secret. In addition, a secret is no longer a secret when you start to share it within an organization. It is far better to just create a public client app. A public client app does not have a secret; it only has a client ID. All database tool users can use the public client ID when they connect to Azure AD to get an access token. The Azure AD user still needs to authenticate to Azure AD with their own user credential.
8.4.5 Examples of Retrieving Azure AD OAuth2 Tokens
These examples show different ways that you can retrieve Azure AD OAuth2
tokens.
- Example: Using PowerShell to Get a Token Using Resource Owner Password Credentials
This example shows how to use PowerShell to get an Azure AD access token by using Resource Owner Password Credentials (ROPC). - Example: Using Python with Microsoft Authentication Library Using an Authorization Flow
Because this example with the Microsoft Authentication Library (MSAL) is in Python, it can be run on a variety of platforms such as PowerShell and Linux. - Example: Using Curl with a Resource Owner Password Credential Flow
This example shows how to use thecurl
command against the Azure AD API uses a Resource Owner Password Credential (ROPC) flow with a public Azure AD client. - Example: Azure CLI Using Authorization Flow
This example shows how to use the Azure CLI to retrieve an access token and then write the token to a file.
8.4.5.1 Example: Using PowerShell to Get a Token Using Resource Owner Password Credentials
This example shows how to use PowerShell to get an Azure AD access token by using Resource Owner Password Credentials (ROPC).
OAuth2
access token by making a REST call from PowerShell. This configuration requires several values that were generated or that you specified when you registered the Oracle Database instance with Azure AD.
OAuth2
access token has been retrieved and stored as a file. The next step is to enable the SQL*Plus client to use the store access token and send it to the database.
Parent topic: Examples of Retrieving Azure AD OAuth2 Tokens
8.4.5.2 Example: Using Python with Microsoft Authentication Library Using an Authorization Flow
Because this example with the Microsoft Authentication Library (MSAL) is in Python, it can be run on a variety of platforms such as PowerShell and Linux.
OAuth2
authorization flow is necessary for a user to add the second authentication. Because the authorization flow requires two round trips to Azure AD, it is best handled using the MSAL. See the Microsoft article Get Azure AD tokens by using the Microsoft Authentication Library for how to use a python script with MSAL. These instructions are for the Databricks service, but the scope is changed to the database App ID URI and scope instead of the Databricks scope.
Parent topic: Examples of Retrieving Azure AD OAuth2 Tokens
8.4.5.3 Example: Using Curl with a Resource Owner Password Credential Flow
This example shows how to use the curl
command against the Azure AD API uses a Resource Owner Password Credential (ROPC) flow with a public Azure AD client.
Parent topic: Examples of Retrieving Azure AD OAuth2 Tokens
8.4.5.4 Example: Azure CLI Using Authorization Flow
This example shows how to use the Azure CLI to retrieve an access token and then write the token to a file.
Parent topic: Examples of Retrieving Azure AD OAuth2 Tokens
8.4.6 Configuring SQL*Plus for Azure AD Access Tokens
You must configure SQL*Plus to retrieve the Azure AD database access token from a location and use it when the /
slash login is used.
OAuth2
tokens. There is no default location for the Azure AD token, so you must specify this location.
You can specify the TOKEN_AUTH
and TOKEN_LOCATION
parameters in tnsnames.ora
, as well as in sqlnet.ora
. The TOKEN_AUTH
and TOKEN_LOCATION
values in the tnsnames.ora
connect strings take precedence over the sqlnet.ora
settings for that connection. For example:
(description=
(retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1522)
(host=example.us-phoenix-1.oraclecloud.com))
(connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
(security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com,
OU=Oracle BMCS US, O=Example Corporation,
L=Redwood City, ST=California, C=US")
(TOKEN_AUTH=OAUTH)(TOKEN_LOCATION="/test/oracle/aad-token"))
After the connect string is updated with the TOKEN_AUTH
and TOKEN_LOCATION
parameters, the Azure user can log in to the Oracle Database instance by running the following command to start SQL*Plus. You can include the connect descriptor itself or use the name of the descriptor from the tnsnames.ora
file.
connect /@exampledb_high
Or the user can use the connect string. For example:
connect /@(description=
(retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1522)
(host=example.us-phoenix-1.oraclecloud.com))
(connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
(security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com,
OU=Oracle BMCS US, O=Example Corporation,
L=Redwood City, ST=California, C=US") (TOKEN_AUTH=OAUTH)(TOKEN_LOCATION="/test/oracle/aad-token")
The database client is already configured to get an Azure OAuth2
token because TOKEN_AUTH
has already been set, either through the sqlnet.ora
file or in a connect string. The database client gets the OAuth2
token and then sends the token to the Oracle Database instance.
8.4.7 Creating a Network Proxy for the Database to Connect with the Internet
This network proxy will enable the Oracle database to reach the Azure AD endpoint.
- Creating the Network Proxy for the Default Oracle Database Environment
To create the network proxy, you must set environment variables and then restart the listener. - Creating the Network Proxy for an Oracle Real Application Clusters Environment
To create the network proxy, you must set environment variables and then restart the database.
8.4.7.1 Creating the Network Proxy for the Default Oracle Database Environment
To create the network proxy, you must set environment variables and then restart the listener.
8.5 Trace Files for Troubleshooting Oracle Database Client Connections with Azure AD
You can use trace files to troubleshoot Oracle Database client connections with Azure AD connections.
- About Trace Files Used for Troubleshooting Connections
You can generate two levels of trace files to troubleshoot Microsoft Azure AD connections on client side. - Setting Client Tracing for Token Authentication
You can addEVENT
settings to the client-sidesqlnet.ora
file to control client tracing.
8.5.1 About Trace Files Used for Troubleshooting Connections
You can generate two levels of trace files to troubleshoot Microsoft Azure AD connections on client side.
The two levels of trace files that you can generate are as follows:
- Low level tracing prints traces in case of failures:
- If TCPS is not set up for the Azure AD connection, then it prints a message that the protocol has to be TCPS.
- If
SSL_SERVER_DN_MATCH
is not set toTRUE
, then it prints a message that the value isFALSE
. - If
TOKEN_LOCATION
has not been specified, then it prints a message that the token location does not exist. - If the token is not present at the specified
TOKEN_LOCATION
, then it prints a message. - If the application has passed in the token without setting
OCI_ATTR_TOKEN_ISBEARER
to true, it prints a message for the missing attribute. - If the application has set
OCI_ATTR_TOKEN_ISBEARER
toTRUE
and not passed in the token, it prints a message for the missing attribute. - If the token has expired, then it prints a message.
- High level tracing prints traces in case of failure as mentioned above. In addition, it prints traces in case of success, as follows:
- It prints where
SSL_SERVER_DN_MATCH
is present,tnsnames.ora
orsqlnet.ora
. It also prints the value asTRUE
if set toTRUE
. - If both the token and
OCI_ATTR_TOKEN_ISBEARER=true
are set by the application, then it prints a message. - If
TOKEN_AUTH
has the correct valueOAUTH
, then it prints the value. - If the token is not expired, then it prints a message.
- It prints where