2.6. 使用多个身份服务配置身份验证和授权
如果您在不同身份存储之间存储身份属性,则请使用 aggregate-realm
将身份属性加载到单个安全域中以进行身份验证和授权。
2.6.1. 在 Elytron 中聚合 Realm
通过 聚合域
,您可以使用一个安全域进行身份验证,也可以使用另一个安全域聚合多个安全域,从而在 Elytron 中进行身份验证。例如,您可以将聚合域配置为使用属性域来进行身份验证,并使用 JDBC 域来进行身份验证。
在配置为聚合多个授权域的聚合域中,会创建一个身份,如下所示:
- 加载为授权配置的每个安全域的属性值。
- 如果在多个授权域中定义了属性,则使用属性第一次出现的值。
以下示例演示了如何在多个授权域包含相同身份属性的定义时创建身份。
示例
聚合 realm 配置:
authentication-realm=properties-realm, authorization-realms=[jdbc-realm,ldap-realm]
从 JDBC 域获取的属性值:
e-mail: user@example.com groups: Supervisor, User
从 ldap 域获取的属性值:
e-mail: administrator@example.com phone: 0000 0000 0000
从聚合域获取的身份:
e-mail: user@example.com groups: Supervisor, User phone: 0000 0000 0000
在示例中,两个授权域中都定义了 e-mail
属性。JDBC 域中定义的值用于生成的聚合域中的 电子邮件
属性,因为聚合域配置为聚合授权域,即 authorization-realms=[jdbc-realm,ldap-realm]
。