6.7. 映射解析器配置
令牌处理系统默认提供一个映射解析器。解析器名为 FilterMappingResolver
。本节将涵盖其配置。
有关 映射解析器 的常规信息,请参阅 Red Hat Certificate System Planning, Installation, and Deployment Guide 中的 Mapping Resolver 部分。
6.7.1. 键设置映射解析器
在外部注册过程中,密钥集必须使用解析器解析,然后才能进行身份验证。
键集映射解析器名称定义如下:
externalReg.mappingResolver=<keySet mapping resolver name>
externalReg.mappingResolver=<keySet mapping resolver name>
例如:
externalReg.mappingResolver=keySetMappingResolver
externalReg.mappingResolver=keySetMappingResolver
以下配置示例显示了完整的实例配置:
mappingResolver.keySetMappingResolver.class_id=filterMappingResolverImpl mappingResolver.keySetMappingResolver.mapping.0.filter.appletMajorVersion=0 mappingResolver.keySetMappingResolver.mapping.0.filter.appletMinorVersion=0 mappingResolver.keySetMappingResolver.mapping.0.filter.keySet= mappingResolver.keySetMappingResolver.mapping.0.filter.tokenATR= mappingResolver.keySetMappingResolver.mapping.0.filter.tokenCUID.end=a1000000000000000000 mappingResolver.keySetMappingResolver.mapping.0.filter.tokenCUID.start=a0000000000000000000 mappingResolver.keySetMappingResolver.mapping.0.target.keySet=defKeySet mappingResolver.keySetMappingResolver.mapping.1.filter.appletMajorVersion=1 mappingResolver.keySetMappingResolver.mapping.1.filter.appletMinorVersion=1 mappingResolver.keySetMappingResolver.mapping.1.filter.keySet= mappingResolver.keySetMappingResolver.mapping.1.filter.tokenATR=1234 mappingResolver.keySetMappingResolver.mapping.1.filter.tokenCUID.end= mappingResolver.keySetMappingResolver.mapping.1.filter.tokenCUID.start= mappingResolver.keySetMappingResolver.mapping.1.target.keySet=defKeySet mappingResolver.keySetMappingResolver.mapping.2.filter.appletMajorVersion= mappingResolver.keySetMappingResolver.mapping.2.filter.appletMinorVersion= mappingResolver.keySetMappingResolver.mapping.2.filter.keySet= mappingResolver.keySetMappingResolver.mapping.2.filter.tokenATR= mappingResolver.keySetMappingResolver.mapping.2.filter.tokenCUID.end= mappingResolver.keySetMappingResolver.mapping.2.filter.tokenCUID.start= mappingResolver.keySetMappingResolver.mapping.2.target.keySet=jForte mappingResolver.keySetMappingResolver.mapping.order=0,1,2
mappingResolver.keySetMappingResolver.class_id=filterMappingResolverImpl
mappingResolver.keySetMappingResolver.mapping.0.filter.appletMajorVersion=0
mappingResolver.keySetMappingResolver.mapping.0.filter.appletMinorVersion=0
mappingResolver.keySetMappingResolver.mapping.0.filter.keySet=
mappingResolver.keySetMappingResolver.mapping.0.filter.tokenATR=
mappingResolver.keySetMappingResolver.mapping.0.filter.tokenCUID.end=a1000000000000000000
mappingResolver.keySetMappingResolver.mapping.0.filter.tokenCUID.start=a0000000000000000000
mappingResolver.keySetMappingResolver.mapping.0.target.keySet=defKeySet
mappingResolver.keySetMappingResolver.mapping.1.filter.appletMajorVersion=1
mappingResolver.keySetMappingResolver.mapping.1.filter.appletMinorVersion=1
mappingResolver.keySetMappingResolver.mapping.1.filter.keySet=
mappingResolver.keySetMappingResolver.mapping.1.filter.tokenATR=1234
mappingResolver.keySetMappingResolver.mapping.1.filter.tokenCUID.end=
mappingResolver.keySetMappingResolver.mapping.1.filter.tokenCUID.start=
mappingResolver.keySetMappingResolver.mapping.1.target.keySet=defKeySet
mappingResolver.keySetMappingResolver.mapping.2.filter.appletMajorVersion=
mappingResolver.keySetMappingResolver.mapping.2.filter.appletMinorVersion=
mappingResolver.keySetMappingResolver.mapping.2.filter.keySet=
mappingResolver.keySetMappingResolver.mapping.2.filter.tokenATR=
mappingResolver.keySetMappingResolver.mapping.2.filter.tokenCUID.end=
mappingResolver.keySetMappingResolver.mapping.2.filter.tokenCUID.start=
mappingResolver.keySetMappingResolver.mapping.2.target.keySet=jForte
mappingResolver.keySetMappingResolver.mapping.order=0,1,2
上面的示例定义了名为 0
、1
和 2
的三个映射。它们以升序排序,使用示例中的 mappingResolver.keySetMappingResolver.mapping.order=0,1,2
行。这个顺序表示将首先针对映射过滤器 0
运行输入参数;只有在它们与那个过滤器不匹配时,才会尝试下一个参数。例如,如果评估有以下特征的令牌:
CUID=a0000000000000000011 appletMajorVersion=0 appletMinorVersion=0
CUID=a0000000000000000011
appletMajorVersion=0
appletMinorVersion=0
然后,它将传递映射 0
并为其分配其目标,它被配置为 defKeySet
,因为小程序版本匹配,CUID 属于该映射的 CUID start 和 end 范围。
另一方面,如果令牌有以下参数:
CUID=b0000000000000000000 ATR=2222 appletMajorVersion=1 appletMinorVersion=1
CUID=b0000000000000000000
ATR=2222
appletMajorVersion=1
appletMinorVersion=1
在这种情况下,此令牌无法映射 0,
因为它是在指定的 CUID 范围之外。它还无法映射 1
,因为当小程序版本匹配时,ATR 则不会。以上令牌将被分配到映射 2
及其目标 jForte
。
请注意,映射 2
没有其任何过滤器的分配。这会导致映射与所有令牌匹配,有效使其成为"默认"值。类似的映射必须以映射顺序最后指定,因为永远不会评估后的任何其他映射。
6.7.2. 令牌类型(TPS)映射解析器
Token Processing System: formatProfileMappingResolver
, enrollProfileMappingResolver ,enrollProfileMappingResolver
, 和 pinResetProfileMappingResolver
中定义三个默认 tokenType
映射解析器。与上一节中讨论的外部注册问题单相比,内部注册令牌类型实际上是从定义的映射解析器计算的。
令牌类型映射解析器名称定义如下:
op.<op>.mappingResolver=<mapping resolver name>
op.<op>.mappingResolver=<mapping resolver name>
例如:
op.enroll.mappingResolver=enrollProfileMappingResolver
op.enroll.mappingResolver=enrollProfileMappingResolver
以下配置示例描述了 enrollProfileMappingResolver
:
mappingResolver.enrollProfileMappingResolver.class_id=filterMappingResolverImpl mappingResolver.enrollProfileMappingResolver.mapping.0.filter.appletMajorVersion=1 mappingResolver.enrollProfileMappingResolver.mapping.0.filter.appletMinorVersion= mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenATR= mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenCUID.end=b1000000000000000000 mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenCUID.start=b0000000000000000000 mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenType=userKey mappingResolver.enrollProfileMappingResolver.mapping.0.target.tokenType=userKey mappingResolver.enrollProfileMappingResolver.mapping.1.filter.appletMajorVersion=1 mappingResolver.enrollProfileMappingResolver.mapping.1.filter.appletMinorVersion= mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenATR= mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenCUID.end=a0000000000000001000 mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenCUID.start=a0000000000000000000 mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenType=soKey mappingResolver.enrollProfileMappingResolver.mapping.1.target.tokenType=soKey mappingResolver.enrollProfileMappingResolver.mapping.2.filter.appletMajorVersion= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.appletMinorVersion= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenATR= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenCUID.end= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenCUID.start= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenType= mappingResolver.enrollProfileMappingResolver.mapping.2.target.tokenType=userKey mappingResolver.enrollProfileMappingResolver.mapping.order=1,0,2
mappingResolver.enrollProfileMappingResolver.class_id=filterMappingResolverImpl
mappingResolver.enrollProfileMappingResolver.mapping.0.filter.appletMajorVersion=1
mappingResolver.enrollProfileMappingResolver.mapping.0.filter.appletMinorVersion=
mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenATR=
mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenCUID.end=b1000000000000000000
mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenCUID.start=b0000000000000000000
mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenType=userKey
mappingResolver.enrollProfileMappingResolver.mapping.0.target.tokenType=userKey
mappingResolver.enrollProfileMappingResolver.mapping.1.filter.appletMajorVersion=1
mappingResolver.enrollProfileMappingResolver.mapping.1.filter.appletMinorVersion=
mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenATR=
mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenCUID.end=a0000000000000001000
mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenCUID.start=a0000000000000000000
mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenType=soKey
mappingResolver.enrollProfileMappingResolver.mapping.1.target.tokenType=soKey
mappingResolver.enrollProfileMappingResolver.mapping.2.filter.appletMajorVersion=
mappingResolver.enrollProfileMappingResolver.mapping.2.filter.appletMinorVersion=
mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenATR=
mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenCUID.end=
mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenCUID.start=
mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenType=
mappingResolver.enrollProfileMappingResolver.mapping.2.target.tokenType=userKey
mappingResolver.enrollProfileMappingResolver.mapping.order=1,0,2
为上例中的 enrollProfileMappingResolver
定义了三个映射。映射名为 0
、1
和 2
。mappingResolver.enrollProfileMappingResolver.mapping.order=1,0,2
行定义映射将处理的顺序。如果令牌与映射匹配,则不会评估顺序中的进一步映射;如果没有与映射不匹配,则顺序的下一个映射将会被尝试。
如果使用带有以下参数的令牌:
CUID=a0000000000000000011 appletMajorVersion=1 appletMinorVersion=0 extension: tokenType=soKey
CUID=a0000000000000000011
appletMajorVersion=1
appletMinorVersion=0
extension: tokenType=soKey
具有此配置的令牌将匹配映射 1
的过滤器,因为小程序版本匹配,CUID 在指定的 start 和 end 范围内失败,扩展 tokenType
会匹配。因此,此令牌将被分配该映射的目标 - soKey
。
在另一个情况下,如果令牌有以下参数:
CUID=b0000000000000000010 appletMajorVersion=1 appletMinorVersion=1
CUID=b0000000000000000010
appletMajorVersion=1
appletMinorVersion=1
在这种情况下,令牌将失败,因为 CUID 在指定的范围之外。然后,它也会失败映射
0,
因为缺少 tokenType
扩展。然后,此令牌将匹配映射 2
,因为它没有指定过滤器以匹配所有与之前过滤器不匹配的令牌。