2.6.2. Elytron 身份验证流程
可以在 elytron
子系统内定义多个主体转换器、域映射器和一个主体解码器。以下小节讨论这些组件在身份验证过程中是如何发挥作用的,以及如何将主体映射到适当的安全域。
当一个主体被验证时,它会按顺序执行以下步骤:
- 确定和配置适当的机制配置。
-
传入的主体映射到
SecurityIdentity
中。 -
此安全性
用于确定适当的安全域。 - 确定安全域后,主体会再次转换。
- 最终转换发生,允许特定机制的转换。
下图演示了左侧列中突出显示的这些步骤,以及显示各个阶段中使用的组件。
图 2.1. Elytron 身份验证流程
预域映射
在预域映射期间,经过身份验证的主体映射到 SecurityIdentity
,该表单可以识别应使用哪个安全域,并且将包含表示身份验证信息的单个 Principal
。主体转换程序和主体解码器按以下顺序调用:
-
机制 Realm -
pre-realm-principal-transformer
-
机制配置 -
预域-principal-transformer
-
安全域 -
主体decoder
和pre-realm-principal-transformer
如果这个过程导致 null 主体,则会抛出错误并终止身份验证。
图 2.2. 预域映射
域名称映射
获取映射的主体后,将识别将用于加载身份的安全域。此时,realm 名称是由安全域定义的名称,也不是安全域的机制域名称。该配置会按照以下顺序查找安全域名:
-
机制 Realm -
域映射器
-
机制配置 -
realm-mapper
-
安全域 -
realm-mapper
如果 RealmMapper
返回 null,或者没有可用的映射器,则将使用安全域中的 default-realm
。
图 2.3. 域名称映射
安装后映射
在确定了某个领域后,主体将经历另一轮转换。转换器按以下顺序调用:
-
机制 Realm -
后域后转换器
-
机制配置 -
域后-principal-transformer
-
安全域 -
realm-principal-transformer
如果这个过程导致 null 主体,则会抛出错误并终止身份验证。
图 2.4. 安装后映射
最终主要转换
最后,进行最后一类主要转换,允许特定机制的转换在特定领域转换前后应用。如果此阶段不需要,则可在域后映射阶段获得相同的结果。转换器按以下顺序调用:
-
机制 Realm -
最终主转换器
-
机制配置
- 最终的主转换器
-
realm Mapping -
principal-transformer
如果这个过程导致 null 主体,则会抛出错误并终止身份验证。
图 2.5. 最终主要转换