Menu Close
Settings Close

Language and Page Formatting Options

2.6.2. Elytron 身份验证流程

可以在 elytron 子系统内定义多个主体转换器、域映射器和一个主体解码器。以下小节讨论这些组件在身份验证过程中是如何发挥作用的,以及如何将主体映射到适当的安全域。

当一个主体被验证时,它会按顺序执行以下步骤:

  1. 确定和配置适当的机制配置。
  2. 传入的主体映射到 SecurityIdentity 中。
  3. 此安全性 用于确定适当的安全域。
  4. 确定安全域后,主体会再次转换。
  5. 最终转换发生,允许特定机制的转换。

下图演示了左侧列中突出显示的这些步骤,以及显示各个阶段中使用的组件。

图 2.1. Elytron 身份验证流程

Elytron 身份验证流程
预域映射

在预域映射期间,经过身份验证的主体映射到 SecurityIdentity,该表单可以识别应使用哪个安全域,并且将包含表示身份验证信息的单个 Principal。主体转换程序和主体解码器按以下顺序调用:

  1. 机制 Realm - pre-realm-principal-transformer
  2. 机制配置 - 预域-principal-transformer
  3. 安全域 - 主体decoderpre-realm-principal-transformer

如果这个过程导致 null 主体,则会抛出错误并终止身份验证。

图 2.2. 预域映射

预域映射
域名称映射

获取映射的主体后,将识别将用于加载身份的安全域。此时,realm 名称是由安全域定义的名称,也不是安全域的机制域名称。该配置会按照以下顺序查找安全域名:

  1. 机制 Realm - 域映射器
  2. 机制配置 - realm-mapper
  3. 安全域 - realm-mapper

如果 RealmMapper 返回 null,或者没有可用的映射器,则将使用安全域中的 default-realm

图 2.3. 域名称映射

域名称映射
安装后映射

在确定了某个领域后,主体将经历另一轮转换。转换器按以下顺序调用:

  1. 机制 Realm - 后域后转换器
  2. 机制配置 - 域后-principal-transformer
  3. 安全域 - realm-principal-transformer

如果这个过程导致 null 主体,则会抛出错误并终止身份验证。

图 2.4. 安装后映射

安装后映射
最终主要转换

最后,进行最后一类主要转换,允许特定机制的转换在特定领域转换前后应用。如果此阶段不需要,则可在域后映射阶段获得相同的结果。转换器按以下顺序调用:

  1. 机制 Realm - 最终主转换器
  2. 机制配置 - 最终的主转换器
  3. realm Mapping - principal-transformer

如果这个过程导致 null 主体,则会抛出错误并终止身份验证。

图 2.5. 最终主要转换

最终主要转换
获取 Realm 身份

最后一系列主体转换后,调用在域名映射中标识的安全域来获取用于继续身份验证的域身份