2.4. 为 INP 配置 Identity Stores
由于 IDP 使用安全域,所以 IDP 的功能与支持它的实际身份存储无关。因此,管理员在为 IDP 配置安全域时有许多选项。有关安全域和登录模块的详细信息,请参阅 JBoss EAP 安全架构指南的安全 https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.3/html-single/security_architecture/#security_subsystem 子系统小节。与为安全域设置任何登录模块一样,请注意不同的身份存储可提供不同的功能和性能权衡。
设置使用身份存储的安全域时需要执行以下步骤:
在本文档中,Database 登录模块和 LDAP 登录模块显示为示例,但也可以配置其他身份存储和登录模块以用于 IDP。
显示的管理 CLI 命令假定您在运行 JBoss EAP 单机服务器。有关将管理 CLI 用于 JBoss EAP 受管域的更多详细信息,请参见 JBoss EAP管理 CLI 指南。
- 设置身份存储。 - 在可以将安全域和登录模块配置为使用身份提供程序之前,必须先设置身份提供程序,有时也必须设置与该身份提供程序的连接。 - 为 Database 登录模块配置身份存储。 - 数据库支持的身份存储所需的第一项是数据库,供登录模块使用。 - 需要以下数据点: - 用户名
- 密码
- 角色
- Role Groups
 - Database Login 模块需要能够创建将用户名映射到密码的查询,以及将用户名映射到角色和角色组的查询。这些信息可以通过多种方式存储在数据库中,但创建包含表的数据库不在本指南的范围之内。本例中假定已创建下表: - Expand - 表 2.2. SSO-users - username - passwd - Sarah - 测试123! - Expand - 表 2.3. samba-roles - username - role - role-group - Sarah - 示例 - samba-Users - 创建数据源不在本指南的范围之内。有关设置数据源的详细信息,请参阅 JBoss EAP 配置指南中的 Datasource Management 部分。 - 本例中假定已创建、正确配置了名为 - idpDS的数据源,并将其部署到 JBoss EAP 实例。此数据源连接到存储- sso-users 和表的数据库。- sso-roles
- 配置 LDAP 登录模块的身份存储。 - 设置 LDAP 登录模块之前,需要正确配置的 LDAP 服务器。与 Database 登录模块不同,设置 LDAP 登录模块时不需要数据源。JBoss EAP 安全架构指南介绍了 LDAP 的基础知识及其与 JBoss EAP 安全性 的关系。 - 设置 LDAP 服务器。 - 设置 LDAP 服务器不在本指南的范围之内。在本例中,可以通过 - http://ldaphost.example.com:1389/访问 LDAP 服务器。
- 目录信息示例: - LDAP 服务器的目录结构和组织可能会有很大差异,具体取决于用例和组织需求。本例中创建了以下条目,以 LDIF 格式显示: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
 
- 添加安全域。 - 旦设置了身份存储本身,并且配置了 JBoss EAP 实例和身份存储之间的连接,即可创建和配置安全域。以下命令显示如何创建空的安全域:将 - MY-DOMAIN替换为所需安全域的名称。- 用于添加安全域的管理 CLI 命令 - /subsystem=security/security-domain=MY-DOMAIN:add(cache-type=default) - /subsystem=security/security-domain=MY-DOMAIN:add(cache-type=default)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 authentication 部分和 login 模块添加到安全域。创建空安全域后,必须通过添加登录模块为其创建身份验证部分。以下命令显示如何向现有安全域添加空身份验证部分。 - 将身份验证部分添加到安全域的管理 CLI 命令 - /subsystem=security/security-domain=MY-DOMAIN/authentication=classic:add - /subsystem=security/security-domain=MY-DOMAIN/authentication=classic:add- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 空身份验证部分创建好后,可以添加登录模块并配置为使用所需的身份存储。将登录模块添加到安全域后,通常需要重新加载配置。 - 以下是用于添加登录模块和重新加载配置的常规命令结构。将 - MY-DOMAIN、- MY-LOGIN-MODULE和- MY-CONFIGURATION替换为适当的值:- /subsystem=security/security-domain=MY-DOMAIN/authentication=classic/login-module=MY-LOGIN-MODULE:add(MY-CONFIGURATION) reload - /subsystem=security/security-domain=MY-DOMAIN/authentication=classic/login-module=MY-LOGIN-MODULE:add(MY-CONFIGURATION) reload- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 添加 Database 登录模块。 注意- 本例假定 步骤 1 中已创建了名为 - idpDS的数据源,并且第 2 步 中创建了名为- idp-db-domain的安全域。- 配置身份验证部分的管理 CLI 命令以使用数据库登录模块 - /subsystem=security/security-domain=idp-db-domain/authentication=classic/login-module=Database:add(code=Database,flag=required,module-options=[("dsJndiName"=>"java:/idpDS"),("principalsQuery"=>"select passwd from 'sso-users' where username=?"),("rolesQuery"=>"select role, role-group from 'sso-roles' where username=?")]) reload- /subsystem=security/security-domain=idp-db-domain/authentication=classic/login-module=Database:add(code=Database,flag=required,module-options=[("dsJndiName"=>"java:/idpDS"),("principalsQuery"=>"select passwd from 'sso-users' where username=?"),("rolesQuery"=>"select role, role-group from 'sso-roles' where username=?")]) reload- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 添加 LDAP 登录模块。 - 配置 - LdapExtended 登录模块所需的步骤可在 How to Configure Identity Management 中找到。