我在X.509 authentication中设置了Apereo CAS,它工作正常。我还启用了cas.authn.attributeRepository.jdbc
设置,以便在用户成功进行身份验证时从数据库表中检索其他属性。
但是,如果我的表中没有匹配的行,则该用户仍将通过身份验证。他只是缺少表列中的各种属性。在这种情况下,我希望身份验证失败。怎么能做到?
答案 0 :(得分:1)
查看Enforce Attribute
是否是您想要的:https://apereo.github.io/cas/5.3.x/installation/Configuring-Service-Access-Strategy.html#enforce-attributes
{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "testId",
"name" : "testId",
"id" : 1,
"accessStrategy" : {
"@class" : "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy",
"enabled" : true,
"ssoEnabled" : true,
"requiredAttributes" : {
"@class" : "java.util.HashMap",
"YOUR_JDBC_RETURN_ATTRIBUTE" : [ "java.util.HashSet", [ "*" ] ]
}
}
}
这里,*有效,因为Enforce Attribute
支持正则表达式,请参见:
答案 1 :(得分:1)
但是如果我的表中没有匹配的行...在这种情况下,我希望身份验证失败。怎么能做到?
执行此操作的正确方法是查看此设置是否可以帮助您:
cas.authn.x509.principal.principalResolutionFailureFatal=true
设置注意事项:
为true时,将返回一个错误,指示主体解析失败,并且根据身份验证要求找不到主体。否则,只需将条件记录为错误,而不会引发灾难性错误。