注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于云环境的值。
将 Oracle Autonomous Database 与 Microsoft Entra ID 集成
简介
Oracle Autonomous Database 可以与 Microsoft Entra ID(ME-ID,以前称为 Azure Active Directory (Azure AD))集成。ME-ID 用户和应用程序可以使用 ME-ID 单点登录 (SSO) 身份证明登录,以获取 ME-ID OAuth2 访问令牌并访问数据库。
这是使用用户或应用程序首先从 ME-ID 请求的一个 ME-ID OAuth2 访问令牌完成的。此 OAuth2 访问令牌包含用户身份和数据库访问信息,然后发送到数据库。
目标读者
IAM 专业人员和管理员。
目标
- 配置 Autonomous Database 以使用 Microsoft Entra ID OAuth2 访问令牌,并允许用户使用 ME-ID SSO 身份证明访问 Autonomous Database。
先决条件
-
Autonomous Database 在 OCI 中预配。
-
具有管理员权限的 OCI IAM 身份域租户。
-
任何用于测试 Autonomous Database 连接的 Oracle Database 工具,请参阅使用 Oracle Database Tools 连接至 Autonomous Database 。在本教程中,我们将在 Windows 系统新的 Oracle 客户端安装上使用 SQL*Plus 命令行界面。
-
具有管理员权限的现有 Microsoft Azure 帐户。
任务 1:使用 Microsoft Azure 应用程序注册注册 Oracle Autonomous Database
-
至少以云应用程序管理员身份登录到 Microsoft Azure 门户。

-
浏览到主页、Azure Active Directory 、应用程序注册和注册应用程序。输入名称作为
ADB-DB,然后单击注册。应用程序已创建。
-
单击应用程序 ID URI:添加、编辑应用程序 ID URI 并将 api: 替换为前面提到的租户域名,然后单击保存。
-
应用程序 ID URI:
<tenancy_domain_name>/appid
-
-
单击添加范围并输入以下详细信息,然后单击添加范围。
-
范围名称:
session:scope:connect -
谁可以同意?:
Admins and users -
管理同意书显示名称:
connect to database -
管理同意书说明:
connect to database -
用户内容显示名称:
connect to database -
用户内容说明:
connect to database -
状态:
Enabled
-
-
单击概览、应用程序角色、创建应用程序角色,输入以下详细信息,然后单击应用。
-
显示名称:
pdb.users -
允许的成员类型:
Users/Groups -
值:
pdb.users -
说明:
all user access -
是否要启用此应用程序角色?:
Enabled

-
-
单击应用程序角色、创建应用程序角色,输入以下详细信息,然后单击应用。
-
显示名称:
dba.role -
允许的成员类型:
Users/Groups -
值:
dba.role -
说明:
dba global role -
是否要启用此应用程序角色?:
Enabled
-
-
单击应用程序角色、创建应用程序角色,输入以下详细信息,然后单击应用
-
显示名称:
hr.app -
允许的成员类型:
Applications -
值:
hr.app -
说明:
application -
是否要启用此应用程序角色?:
Enabled
-
-
导航到主页、企业应用程序、 ADB-DB 、分配用户和组。
-
在添加分配下,选择用户,然后选择您的用户。生成访问令牌时,此分配的用户将用于单点登录。
-
在选择角色下,选择 pdb.users 。
-
单击选择。
-
单击分配。
-
-
在添加分配下,选择用户,然后选择您的用户。生成访问令牌时,此分配的用户将用于单点登录。
-
在选择角色下,选择 dba.role 。
-
单击选择。
-
单击分配。
-
任务 2:创建客户端应用程序注册
-
导航到主页、应用程序注册、注册应用程序,输入以下详细信息,然后单击注册。
-
名称:
ADB-Client。 -
支持的帐户类型:
Accounts in this organizational directory only。 -
重定向 URI :
Public client/native - http://localhost。
-
-
导航到 API 权限,然后单击添加权限。在请求 API 权限下,选择我的组织使用的 API 、 ADB-DB 、授权权限和权限作为
session:scope:connect,然后单击添加权限。
-
单击公开 API 、应用程序 ID URI:添加、编辑应用程序 ID URI 并将 api: 替换为租户域名。

任务 3:连接到 SQL 数据库
-
导航到 Oracle Autonomous Database 并单击 Database actions(数据库操作)下拉列表,选择 SQL 并输入以下查询。

SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
注:
identity_provider_type当前设置为NONE。 -
运行数据库过程以将身份提供者设置为 Azure AD。
BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION( type =>'AZURE_AD', params => JSON_OBJECT('tenant_id' VALUE '<tenant_id>', 'application_id' VALUE '<application_id>', 'application_id_uri' VALUE '<application_id_uri>'), force => TRUE ); END;
-
再次运行 SQL 查询以检查身份提供者。
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
注:
identity_provider_type现在是Azure AD。 -
创建用户 -
allusers、hrapp和角色 -dba_azure。CREATE USER allusers IDENTIFIED GLOBALLY AS 'AZURE_ROLE=pdb.users'; CREATE USER hrapp IDENTIFIED GLOBALLY AS 'AZURE_ROLE=hr.app'; CREATE ROLE dba_azure IDENTIFIED GLOBALLY AS 'AZURE_ROLE=dba.role'; -
将创建会话授予 -
allusers和hrapp。GRANT CREATE SESSION TO allusers;GRANT CREATE SESSION TO hrapp;GRANT pdb_dba TO dba_azure;
任务 4:导航到 Azure 门户
-
打开 Azure 门户并导航到主页、应用程序注册和 ADB-Client 。复制应用程序(客户端)ID 和目录(租户)ID 。

-
打开 Azure 门户并导航到主页、应用程序注册和 ADB-DB 。复制范围。

任务 5:使用 MSAL Python 库获取 Microsoft 访问令牌
-
请参阅 Python 脚本以使用 AuthZ 流获取访问令牌,请参阅使用 MSAL Python 库获取 Microsoft Entra ID 令牌。
-
在任务 4 中获取的脚本中替换
Client_id、Tenant_id和Scope。
任务 6:运行 Python 脚本
-
打开 PowerShell。验证 Python 版本和
pip版本。python --versionpip --version -
使用以下命令执行 Python 脚本。您将被重定向到 Microsoft Azure Portal,您需要在其中验证自己。
python ./get-token-for-user.py
-
验证完成后,您将重定向到 PowerShell 并生成访问令牌。

-
在本地计算机上保存访问令牌,提供名称为 token 并另存为文件类型
All Types。
-
根据您的环境使用连接字符串进行连接。按照 wallet 中的
TNS.ora替换 hostname 和 access-token-path 。conn /@(description= (retry_count-20) (retry_delay=3) (address= (protocol=tcps) (port=1522) (host-adb. us-ashburn-1.oraclecloud. com)) (connect_data=(<hostname>))(security-(ss1_server_dn_match-yes)(TOKEN_AUTH-OAUTH)(TOKEN_LOCATION-"<access-token-path>")))您现在已成功连接到数据库。

-
逐个执行以下 SQL 查询并观察输出以验证用户和角色。
sqlplus /nologSELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
SELECT * FROM SESSION_ROLES;exit
您已成功使用 OAuth ME-ID 访问令牌测试与 Autonomous Database 的连接。
相关链接
确认
- Authors(作者) -Indiradarshni Balasundaram,Alex Kovuru,Anuj Tripathi
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Integrate Oracle Autonomous Database with Microsoft Entra ID
F90208-01
December 2023
Copyright © 2023, Oracle and/or its affiliates.